1
0
Просмотр исходного кода

style: 更改 projectname -》 deployname 防止歧义

370774330@qq.com 5 лет назад
Родитель
Сommit
31cfa840b5

+ 2 - 2
core/src/main/java/seecoder/devcloud/core/pipeline/Context.java

@@ -28,8 +28,7 @@ public class Context {
 
     private String namespace;
 
-    private String projectName;
-
+    private String deployName;
 
     /**
      * 用来存放一些杂项信息,根据key去取
@@ -37,6 +36,7 @@ public class Context {
     @Builder.Default
     private Map<String, String> configs = new HashMap<>();
 
+
     /**
      * 整个构建流程的记录, 每一个模块的各种运行信息(正常运行的结果,异常信息)都应该写入这里
      */

+ 3 - 3
core/src/main/java/seecoder/devcloud/core/pipeline/PipelineFactory.java

@@ -22,12 +22,12 @@ public class PipelineFactory {
      * 流水线初始化
      * @param configJson configJson 流水线配置的json字符串
      * @param namespace 流水线的k8s namespace,devcloud后端采用{@code Project}中的{@code name}作为namespace
-     * @param projectName 流水线部署k8s的应用名称,devcloud后端采用{@code Pipeline}中的{@code name} 作为project name
+     * @param deployName 流水线部署k8s的应用名称,devcloud后端采用{@code Pipeline}中的{@code name} 作为project name
      * @param pipelineId 流水线id
      * @param templateName 模板名称
      * @return
      */
-    public static Pipeline init(String configJson, String namespace, String projectName, Integer pipelineId, String templateName) throws PipelineException {
+    public static Pipeline init(String configJson, String namespace, String deployName, Integer pipelineId, String templateName) throws PipelineException {
 
         ObjectMapper mapper = new ObjectMapper();
         List<HandlerConfig> handlerConfigs = null;
@@ -39,7 +39,7 @@ public class PipelineFactory {
 
         //初始化context
         Context context = Context.builder()
-                .projectName(projectName)
+                .deployName(deployName)
                 .namespace(namespace)
                 .pipelineId(pipelineId)
                 .templateName(templateName)

+ 1 - 1
core/src/main/java/seecoder/devcloud/core/pipeline/handler/JavaImageBuildHandler.java

@@ -47,7 +47,7 @@ public class JavaImageBuildHandler extends AbstractHandler {
         String repoUrl = context.getConfigs().get("repoUrl");
         String branchName = context.getConfigs().getOrDefault("branchName","master");
         String templateName = context.getTemplateName();
-        String imageName = context.getNamespace() + "-" + context.getProjectName();
+        String imageName = context.getNamespace() + "-" + context.getDeployName();
 
         // 1. 有git从git拿到地址仓库
         Path directory;

+ 47 - 4
core/src/main/java/seecoder/devcloud/core/pipeline/handler/K8sDeploymentHandler.java

@@ -1,5 +1,6 @@
 package seecoder.devcloud.core.pipeline.handler;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.HttpStatus;
 import seecoder.devcloud.api.ApplicationProperties;
@@ -16,6 +17,7 @@ import seecoder.devcloud.core.pipeline.Context;
 import seecoder.devcloud.core.pipeline.PipelineException;
 
 import java.util.Collections;
+import java.util.Map;
 
 /**
  * @author PuHong Weng
@@ -43,6 +45,40 @@ public class K8sDeploymentHandler extends AbstractHandler {
         deploymentApi = SpringUtil.getBean(DeploymentApi.class);
     }
 
+    /**
+     * 环境变量配置
+     */
+    @JsonProperty("envs")
+    private Map<String, String> envs;
+
+    /**
+     * 启动参数配置 CMD space split
+     */
+    @JsonProperty("runArgs")
+    private String runArgs;
+
+    /**
+     * 运行命令配置 ENTRYPOINT space split
+     */
+    @JsonProperty("runCommands")
+    private String runCommands;
+
+    /**
+     * 挂载文件配置
+     */
+    @JsonProperty("mounts")
+    private Map<String, String> mounts;
+
+    /**
+     * key:pvcName
+     * value:pvcValue
+     */
+    @JsonProperty("pvcPaths")
+    private Map<String, String> pvcPaths;
+
+
+
+
     /**
      * 部署一个java项目
      * 以小组名称作为namespace
@@ -57,7 +93,7 @@ public class K8sDeploymentHandler extends AbstractHandler {
         int port = Integer.parseInt(context.getConfigs().get("port"));
         int replicas = 1;
         String namespace = context.getNamespace();
-        String projectName = context.getProjectName();
+        String deployName = context.getDeployName();
 
         //1. 配置容器暴露端口
         ContainerPort containerPort = ContainerPort.builder()
@@ -67,7 +103,7 @@ public class K8sDeploymentHandler extends AbstractHandler {
         //2. 配置容器
         Container container = Container.builder()
                 .image(applicationProperties.getDocker().getRegistry()+"/"+imageName+":"+imageTag)
-                .name(projectName + K8sConstants.CONTAINER_SUFFIX)
+                .name(deployName + K8sConstants.CONTAINER_SUFFIX)
                 .ports(Collections.singleton(containerPort))
                 .build();
 
@@ -76,9 +112,12 @@ public class K8sDeploymentHandler extends AbstractHandler {
                 .replicas(replicas)
                 .containers(Collections.singletonList(container))
                 .build();
-        deployment.setName(projectName + K8sConstants.DEPLOYMENT_SUFFIX);
+        deployment.setName(deployName + K8sConstants.DEPLOYMENT_SUFFIX);
         deployment.setNamespace(namespace);
-        deployment.setLabel(K8sConstants.APPLICATION_LABEL, projectName);
+        deployment.setLabel(K8sConstants.APPLICATION_LABEL, deployName);
+
+        //4. 检测是否需要挂载配置文件
+        //deployment.setVolumes();
 
 
         //3. 检查镜像仓库secret是否存在,没有则创建。
@@ -93,6 +132,10 @@ public class K8sDeploymentHandler extends AbstractHandler {
             );
         }
         deployment.setImagePullSecrets(Collections.singletonList(DEFAULT_IMAGE_PULL_SECRET_NAME));
+
+
+
+
         //4. 创建Deployment。
         try {
             deploymentApi.create(deployment);

+ 8 - 6
core/src/main/java/seecoder/devcloud/core/pipeline/handler/K8sIngressHandler.java

@@ -26,6 +26,8 @@ public class K8sIngressHandler extends AbstractHandler {
     private final IngressApi ingressApi;
 
     public K8sIngressHandler() {
+//        ObjectMapper objectMapper = new ObjectMapper();
+//        objectMapper.convertValue()
         this.ingressApi = SpringUtil.getBean(IngressApi.class);
         this.applicationProperties = SpringUtil.getBean(ApplicationProperties.class);
     }
@@ -36,24 +38,24 @@ public class K8sIngressHandler extends AbstractHandler {
     public void process(Context context) throws PipelineException {
         //0. 变量准备
         String namespace = context.getNamespace();
-        String projectName = context.getProjectName();
+        String deployName = context.getDeployName();
         String servicePort = context.getConfigs().get("servicePort");
 
         //1. ingress路径规则
         Ingress.IngressRule ingressRule = new Ingress.IngressRule();
-        ingressRule.setHost( projectName+"."+namespace + applicationProperties.getK8s().getIngressHostSuffix());
+        ingressRule.setHost( deployName+"."+namespace + applicationProperties.getK8s().getIngressHostSuffix());
         Ingress.IngressPath path = new Ingress.IngressPath();
         path.setPath("/");
         path.setPort(Integer.parseInt(servicePort));
-        path.setServiceName(projectName+K8sConstants.SERVICE_SUFFIX);
+        path.setServiceName(deployName+K8sConstants.SERVICE_SUFFIX);
         ingressRule.setRuleValues(Collections.singleton(path));
 
         //2. 配置ingress
         Ingress ingress = new Ingress();
-        ingress.setName(projectName + K8sConstants.INGRESS_SUFFIX);
+        ingress.setName(deployName + K8sConstants.INGRESS_SUFFIX);
         ingress.setNamespace(namespace);
         ingress.setHttpRules(Collections.singletonList(ingressRule));
-        ingress.setLabel(K8sConstants.APPLICATION_LABEL, projectName);
+        ingress.setLabel(K8sConstants.APPLICATION_LABEL, deployName);
         ingress.setAnnotation("kubernetes.io/ingress.class","nginx");
         ingress.setAnnotation("kubernetes.io/ingress.provider","nginx");
         ingress.setAnnotation("nginx.ingress.kubernetes.io/rewrite-target","/");
@@ -77,7 +79,7 @@ public class K8sIngressHandler extends AbstractHandler {
         }
 
         //4. 存入访问路径
-        context.getConfigs().put("accessUrl",namespace + applicationProperties.getK8s().getIngressHostSuffix()+"/" + projectName + "/");
+        context.getConfigs().put("accessUrl",namespace + applicationProperties.getK8s().getIngressHostSuffix()+"/" + deployName + "/");
         context.appendSuccessResult("K8s Ingress创建成功");
     }
 }

+ 2 - 2
core/src/main/java/seecoder/devcloud/core/pipeline/handler/K8sServiceHandler.java

@@ -41,9 +41,9 @@ public class K8sServiceHandler extends AbstractHandler {
         //1. 配置K8s的service
         Service service = new Service();
         service.setNamespace(context.getNamespace());
-        service.setName(context.getProjectName()+ K8sConstants.SERVICE_SUFFIX);
+        service.setName(context.getDeployName()+ K8sConstants.SERVICE_SUFFIX);
         //标签选择器选择 此项目对应的deployment的name
-        service.setSelectors(Collections.singletonMap(K8sConstants.APPLICATION_LABEL, context.getProjectName()));
+        service.setSelectors(Collections.singletonMap(K8sConstants.APPLICATION_LABEL, context.getDeployName()));
         service.setServicePorts(
                 Collections.singleton(ServicePort.builder().port(servicePort).targetPort(targetPort).build())
         );

+ 1 - 1
core/src/main/java/seecoder/devcloud/core/pipeline/handler/NodeImageBuildHandler.java

@@ -41,7 +41,7 @@ public class NodeImageBuildHandler extends AbstractHandler{
         String repoUrl = context.getConfigs().get("repoUrl");
         String branchName = context.getConfigs().getOrDefault("branchName","master");
         String templateName = context.getTemplateName();
-        String imageName = context.getNamespace() + "-" + context.getProjectName();
+        String imageName = context.getNamespace() + "-" + context.getDeployName();
 
         // 1. 有git从git拿到地址仓库
         Path directory;

+ 1 - 1
core/src/main/java/seecoder/devcloud/core/pipeline/inspector/PipelineInspector.java

@@ -31,7 +31,7 @@ public class PipelineInspector {
     }
 
     public DeploymentStatus inspectStatus(){
-        String name = context.getProjectName() + K8sConstants.DEPLOYMENT_SUFFIX;
+        String name = context.getDeployName() + K8sConstants.DEPLOYMENT_SUFFIX;
         DeploymentStatus status = deploymentApi.getStatus(context.getNamespace(),name);
         return status;
     }

+ 3 - 3
core/src/main/java/seecoder/devcloud/core/pipeline/inspector/PipelineInspectorFactory.java

@@ -13,15 +13,15 @@ public class PipelineInspectorFactory {
     /**
      * 流水线初始化
      * @param namespace 流水线的k8s namespace,devcloud后端采用{@code Project}中的{@code name}作为namespace
-     * @param projectName 流水线部署k8s的应用名称,devcloud后端采用{@code Pipeline}中的{@code name} 作为project name
+     * @param deployName 流水线部署k8s的应用名称,devcloud后端采用{@code Pipeline}中的{@code name} 作为project name
      * @param pipelineId 流水线id
      * @param templateName 模板名称
      */
-    public static PipelineInspector init(String namespace, String projectName, Integer pipelineId, String templateName) {
+    public static PipelineInspector init(String namespace, String deployName, Integer pipelineId, String templateName) {
 
         //初始化context
         Context context = Context.builder()
-                .projectName(projectName)
+                .deployName(deployName)
                 .namespace(namespace)
                 .pipelineId(pipelineId)
                 .templateName(templateName)