فهرست منبع

feat: common、api模块autoconfiguration

370774330@qq.com 5 سال پیش
والد
کامیت
9cfd00dcd7

+ 126 - 0
api/src/main/java/seecoder/devcloud/api/DevcloudApiAutoConfiguration.java

@@ -0,0 +1,126 @@
+package seecoder.devcloud.api;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import seecoder.devcloud.api.docker.DockerApi;
+import seecoder.devcloud.api.docker.impl.DockerApiImpl;
+import seecoder.devcloud.api.gitlab.GitlabApi;
+import seecoder.devcloud.api.gitlab.impl.GitlabApiImpl;
+import seecoder.devcloud.api.jenkins.JenkinsApi;
+import seecoder.devcloud.api.jenkins.impl.JenkinsApiImpl;
+import seecoder.devcloud.api.k8s.*;
+import seecoder.devcloud.api.k8s.impl.*;
+import seecoder.devcloud.api.nexus.NexusApi;
+import seecoder.devcloud.api.nexus.model.ApiVersion;
+
+/**
+ * @author PuHong Weng
+ * @date 2021/3/5
+ * @description:
+ */
+@Configuration
+public class DevcloudApiAutoConfiguration {
+
+    @Bean
+    public ApplicationProperties applicationProperties(){
+        return new ApplicationProperties();
+    }
+
+    @Bean
+    @ConditionalOnBean(ApplicationProperties.class)
+    public GitlabApi gitlabApi(){
+        return new GitlabApiImpl(applicationProperties());
+    }
+
+    @Bean
+    @ConditionalOnBean(ApplicationProperties.class)
+    public K8sApiConfiguration k8sApiConfiguration(){
+        return new K8sApiConfiguration(applicationProperties());
+    }
+
+    @Bean
+    @ConditionalOnBean(ApplicationProperties.class)
+    public JenkinsApi jenkinsApi(){
+        return new JenkinsApiImpl(applicationProperties());
+    }
+
+    @Bean
+    @ConditionalOnBean(ApplicationProperties.class)
+    public NexusApi nexusApi(){
+        ApplicationProperties properties = applicationProperties();
+        return new NexusApi(properties.getRegistry().getNexusServer(), ApiVersion.V1, properties.getRegistry().getUsername(), properties.getRegistry().getPassword());
+    }
+
+    @Bean
+    @ConditionalOnBean(ApplicationProperties.class)
+    public DockerApi dockerApi(){
+        return new DockerApiImpl(applicationProperties());
+    }
+
+    @Bean
+    @ConditionalOnBean(K8sApiConfiguration.class)
+    public ConfigMapApi configMapApi(){
+        return new ConfigMapApiImpl(k8sApiConfiguration().coreV1Api());
+    }
+
+    @Bean
+    @ConditionalOnBean(K8sApiConfiguration.class)
+    public DeploymentApi deploymentApi(){
+        return new DeploymentApiImpl(k8sApiConfiguration().appsV1Api());
+    }
+
+    @Bean
+    @ConditionalOnBean(K8sApiConfiguration.class)
+    public ExecApi execApi(){
+        return new ExecApiImpl(k8sApiConfiguration().exec());
+    }
+
+    @Bean
+    @ConditionalOnBean(K8sApiConfiguration.class)
+    public NamespaceApi namespaceApi(){
+        return new NamespaceApiImpl(k8sApiConfiguration().coreV1Api());
+    }
+
+    @Bean
+    @ConditionalOnBean(K8sApiConfiguration.class)
+    public IngressApi ingressApi(){
+        return new IngressApiImpl(k8sApiConfiguration().extensionsV1beta1Api());
+    }
+
+    @Bean
+    @ConditionalOnBean(K8sApiConfiguration.class)
+    public LogApi logApi(){
+        return new LogApiImpl(k8sApiConfiguration().coreV1Api());
+    }
+
+    @Bean
+    @ConditionalOnBean(K8sApiConfiguration.class)
+    public PersistentVolumeClaimApi persistentVolumeClaimApi(){
+        return new PersistentVolumeClaimImpl(k8sApiConfiguration().coreV1Api());
+    }
+
+    @Bean
+    @ConditionalOnBean(K8sApiConfiguration.class)
+    public PodApi podApi(){
+        return new PodApiImpl(k8sApiConfiguration().coreV1Api());
+    }
+
+    @Bean
+    @ConditionalOnBean(K8sApiConfiguration.class)
+    public SecretApi secretApi(){
+        return new SecretApiImpl(k8sApiConfiguration().coreV1Api());
+    }
+
+    @Bean
+    @ConditionalOnBean(K8sApiConfiguration.class)
+    public ServiceApi serviceApi(){
+        return new ServiceApiImpl(k8sApiConfiguration().coreV1Api());
+    }
+
+    @Bean
+    @ConditionalOnBean(K8sApiConfiguration.class)
+    public WatchApiImpl watchApi(){
+        return new WatchApiImpl(k8sApiConfiguration().watchApiClient(),k8sApiConfiguration().watchAppsV1Api());
+    }
+}

+ 1 - 1
api/src/main/java/seecoder/devcloud/api/docker/impl/DockerApiImpl.java

@@ -34,7 +34,7 @@ public class DockerApiImpl implements DockerApi {
     private final String registry;
 
     @Autowired
-    public DockerApiImpl(ApplicationProperties properties) throws IOException {
+    public DockerApiImpl(ApplicationProperties properties){
         registry = properties.getDocker().getRegistry();
         client = new DefaultDockerClient(properties.getDocker().getHost());
         defaultHandler = new NoActionProgressHandler();

+ 2 - 0
api/src/main/java/seecoder/devcloud/api/k8s/K8sApiConfiguration.java

@@ -8,11 +8,13 @@ import io.kubernetes.client.openapi.apis.ExtensionsV1beta1Api;
 import io.kubernetes.client.util.Config;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import seecoder.devcloud.api.ApplicationProperties;
 
 
 @Configuration
+@ComponentScan("seecoder.devcloud.api.k8s.impl")
 public class K8sApiConfiguration {
 
     private final ApiClient apiClient;

+ 6 - 1
api/src/main/java/seecoder/devcloud/api/k8s/impl/SecretApiImpl.java

@@ -27,8 +27,13 @@ public class SecretApiImpl implements SecretApi {
 
     private static final Logger logger = LoggerUtil.getLogger(SecretApi.class);
 
+
+    private final CoreV1Api coreV1Api;
+
     @Autowired
-    private CoreV1Api coreV1Api;
+    public SecretApiImpl(CoreV1Api coreV1Api) {
+        this.coreV1Api = coreV1Api;
+    }
 
     @Override
     public SecretVO createGenericSecret(String namespace, String name, Map<String, byte[]> data) throws K8sApiException {

+ 6 - 1
api/src/main/java/seecoder/devcloud/api/k8s/impl/ServiceApiImpl.java

@@ -28,8 +28,13 @@ import static seecoder.devcloud.api.k8s.K8sConstants.PRETTY_FORMAT;
 public class ServiceApiImpl implements ServiceApi {
     private static final Logger logger = LoggerUtil.getLogger(ServiceApi.class);
 
+
+    private final CoreV1Api coreV1Api;
+
     @Autowired
-    private CoreV1Api coreV1Api;
+    public ServiceApiImpl(CoreV1Api coreV1Api) {
+        this.coreV1Api = coreV1Api;
+    }
 
     /**
      * 创建Service

+ 2 - 0
api/src/main/resources/META-INF/spring.factories

@@ -0,0 +1,2 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+seecoder.devcloud.api.DevcloudApiAutoConfiguration

+ 20 - 0
common/src/main/java/seecoder/devcloud/common/CommonAutoConfiguration.java

@@ -0,0 +1,20 @@
+package seecoder.devcloud.common;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import seecoder.devcloud.common.util.SpringUtil;
+
+/**
+ * @author PuHong Weng
+ * @date 2021/3/5
+ * @description:
+ */
+@Configuration
+public class CommonAutoConfiguration {
+
+    @Bean
+    SpringUtil springUtil(){
+        return new SpringUtil();
+    }
+
+}

+ 0 - 9
common/src/main/java/seecoder/devcloud/common/util/SpringUtil.java

@@ -12,7 +12,6 @@ import javax.annotation.PostConstruct;
  * @date 2021/1/19
  * @description:
  */
-@Component
 public class SpringUtil implements ApplicationContextAware {
 
 
@@ -30,15 +29,7 @@ public class SpringUtil implements ApplicationContextAware {
         if(SpringUtil.applicationContext == null) {
             SpringUtil.applicationContext = applicationContext;
         }
-        System.out.println("---------------------------------------------------------------------");
-
-        System.out.println("---------------------------------------------------------------------");
-
-        System.out.println("---------------me.shijunjie.util.SpringUtil------------------------------------------------------");
-
         System.out.println("========ApplicationContext配置成功,在普通类可以通过调用SpringUtil.getAppContext()获取applicationContext对象,applicationContext="+SpringUtil.applicationContext+"========");
-
-        System.out.println("---------------------------------------------------------------------");
     }
 
     //获取applicationContext

+ 2 - 0
common/src/main/resources/META-INF/spring.factories

@@ -0,0 +1,2 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+seecoder.devcloud.common.CommonAutoConfiguration

+ 0 - 1
core/src/main/java/seecoder/devcloud/core/CoreApplication.java

@@ -16,7 +16,6 @@ import java.util.TimeZone;
  */
 @EnableScheduling
 @EnableAsync
-@ComponentScan({"seecoder.devcloud.api","seecoder.devcloud.common"})
 @SpringBootApplication(exclude = {
         DataSourceAutoConfiguration.class,
         DataSourceTransactionManagerAutoConfiguration.class})

+ 40 - 24
core/src/main/resources/application-local.yml

@@ -1,39 +1,55 @@
-# 用于core包的本地测试,连的是本地搭的minikube
+spring:
+  datasource:
+    url: jdbc:mysql://192.168.99.105:30006/devcloud?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false
+    username: root
+    password: root
+
+  mail:
+    host: smtp.qq.com
+    username: 370774330@qq.com
+    password: qkoecnzivukvbibi
+    port: 465
+    protocol: smtp
+    properties:
+      mail:
+        smtp:
+          ssl:
+            enable: true
+          socketFactory.class: javax.net.ssl.SSLSocketFactory
+        debug: true
+server:
+  port: 8080
+
+mybatis:
+  configuration:
+    map-underscore-to-camel-case: true
+
 seecoder:
-  secret: 1qaz2wsx
-  auth:
-    signingKey: SEEC-1919810-OIDC-114514
-    iss: p.seecoder.cn
-    aud: seec-seec
-    portal: http://p.seecoder.cn/api/interaction
-    redirectUri: http://seec.seecoder.cn/api/auth/receive
+  k8s:
+    api-server: https://192.168.99.105:8443
+    token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjBmSXc4RlRjNUpBYVpGYWc4QzRDY1MzUWJad1JMdFhKcDI1cngzWGtiRlkifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZXZjbG91ZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNicXY4Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI5NmIxNzU1ZS0zZjE3LTQ1ZTctODFmYi01MTRhODA3NDRhMzQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZGV2Y2xvdWQ6ZGVmYXVsdCJ9.W0Y1lR6LBi1ZjylBx35YeqYuq2u2AqH-ayK4FD-LDfC26E89DanOwSv9XLrRMnnDBZFS_ZCRBumbnDeMiS5vw2x7-QnrDqj1M5u9FB2fIJsz2LyUkOhATZZmTzj_Uhewvvg09aDKh16ttj6ZX27m-KVk_6MP-VfiuvZnCVxDbqRkRjK-zsor4ty1CEATPyKK-tvugAwS0RFNHUL94DamfZAq_t1PSnH5ZtEHq0uEMZxY2c7j6u9d_aD9lphm_ZpCy_C8OCHfanM21CQPDHlcJTW_aiOO6bAp8qdc1egPO5uIamHl6Zm0N3RkcsRp4DGOHrltTV9y_cGZHXSWmRHfxw
+    debugging: true
   gitlab:
-    host: http://gitlab.seec.seecoder.cn
-    git-proxy: http://gitlab.seec.seecoder.cn
+    host: http://gitlab.192.168.99.105.nip.io
     webHookProxy: http://localhost:3000
-    username: root
-    token: x7Hwx-zq8LFkHznGku9a
+    token: wXDeETv2Kmt-JhiApJ9H
+  mail:
+    from: 370774330@qq.com
+
+
   jenkins:
     host: http://192.168.68.79:8082
     username: root
     token: 11d7b9e4c1acac481904c25813e2ec1f0a
-    baseImage: 172.19.51.9:18082/build-base
   docker:
     registry: 192.168.68.79:18082
-  mail:
-    from: seecoder@163.com
-  storage:
-    type: local
-    properties:
-      location: ./problem
-  k8s:
-    api-server: https://192.168.99.101:8443
-    token: "eyJhbGciOiJSUzI1NiIsImtpZCI6IkM0R1hBTlZ3UjU1eVlKemNocUxBMUtxcUEwaWR3NW9Tb0pzYjA3RktTcjAifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZXZjbG91ZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLWI3OXJjIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIwODdkMGI1ZC1mYjBjLTQxYjgtYTM2MC1kMGVlNjI5ZjI1MTUiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZGV2Y2xvdWQ6ZGVmYXVsdCJ9.NQ33155-zupAnzeyCon8NxhJq3MWTNYDZpfcLy0Y03fvrzCerrs76hFiBBvgagbFO8OvK4LVb-TXnn4ypSfGUvY-cxP_9KesI98BA8B598do36EMaonr0ixLHkErAm7aq_olAmVIa-dOSRnHgFVA9iNCUzLRQFV0fj1PwtCOX-X9gf6_J7pXngo9b4AdeKGVtNEzoNae1pT9q5F1mWBTBkES7Jj-g61HyeqoZKOgK-BNmKdOTXSm4HbTtnGVAXK5xMLmJjJ4UzDgzQzA20XKQv-TC1pUxJ3eyS5QcEUGB8fVv9-fHoDPUloQ6jAm8SNtktrJ5yzPHYH2ZZGY-HiLuA"
-    debugging: false
+
+
+
   registry:
     host: 192.168.68.79:18082
     username: admin
     password: admin123
     nexus-server: 192.168.68.79:18081
     repo-name: sec-repo
-    clean-up-task: 83bb8249-71e8-4367
+    clean-up-task: 83bb8249-71e8-4367-83b3-50c6f7518860

+ 0 - 4
web/pom.xml

@@ -80,10 +80,6 @@
             <artifactId>mybatis-spring-boot-starter-test</artifactId>
             <version>2.1.4</version>
         </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-security</artifactId>
-        </dependency>
 <!--        <dependency>-->
 <!--            <groupId>org.springframework.boot</groupId>-->
 <!--            <artifactId>spring-boot-starter-security</artifactId>-->

+ 0 - 1
web/src/main/java/seecoder/devcloud/web/DevcloudWebApplication.java

@@ -16,7 +16,6 @@ import java.util.TimeZone;
 @EnableScheduling
 @EnableAsync
 @SpringBootApplication(exclude = {HibernateJpaAutoConfiguration.class})
-@ComponentScan({"seecoder.devcloud.api","seecoder.devcloud.common","seecoder.devcloud.web"})
 @MapperScan(basePackages = {"seecoder.devcloud.web.dao"})
 @EnableTransactionManagement //开始事务
 public class DevcloudWebApplication {