Browse Source

feat: stage加入可跳过的标识字段,stage config初始化信息

370774330@qq.com 5 years ago
parent
commit
2b6f93ce77

+ 2 - 0
web/src/main/java/cn/seecoder/web/model/po/pipeline/StageConfigPO.java

@@ -17,4 +17,6 @@ public class StageConfigPO {
      * false 则为学生可以配置的属性
      */
     private Boolean editable;
+
+    private Integer stageId;
 }

+ 6 - 0
web/src/main/java/cn/seecoder/web/model/po/pipeline/StagePO.java

@@ -31,5 +31,11 @@ public class StagePO {
     private String name;
 
 
+    /**
+     * 流水线是否可以跳过
+     */
+    private Boolean skippable;
+
+
 
 }

+ 6 - 2
web/src/main/java/cn/seecoder/web/model/vo/pipeline/StageVO.java

@@ -28,10 +28,12 @@ public class StageVO {
     @ApiModelProperty("描述信息")
     private String description;
 
-
-    @ApiModelProperty("识别名称,用于转换成对应的流水线真实步骤Handler,见core包的 HandlerConfigTable")
+    @ApiModelProperty("识别名称,用于转换成对应的流水线真实步骤Handler,见 HandlerConfigTable")
     private String name;
 
+    @ApiModelProperty("这个stage是否可以跳过")
+    private Boolean skippable;
+
     @ApiModelProperty("配置的字段属性")
     private List<StageConfigVO> configs;
 
@@ -56,5 +58,7 @@ public class StageVO {
          * false 则为学生可以配置的属性
          */
         private Boolean editable;
+
+        private Integer stageId;
     }
 }

+ 3 - 1
web/src/main/resources/application-prod.yaml

@@ -8,7 +8,9 @@ spring:
     initialization-mode: always
     continue-on-error: false
     schema:
-      - classpath:sql/init.sql
+      - classpath:sql/table_init.sql
+    data:
+      - classpath:sql/data_init.sql
 server:
   port: 8080
 

+ 3 - 2
web/src/main/resources/application-wph.yml

@@ -8,8 +8,9 @@ spring:
     initialization-mode: always
     continue-on-error: false
     schema:
-      - classpath:sql/init.sql
-
+      - classpath:sql/table_init.sql
+    data:
+      - classpath:sql/data_init.sql
   mail:
     host: smtp.qq.com
     username: 370774330@qq.com

+ 21 - 0
web/src/main/resources/sql/data_init.sql

@@ -0,0 +1,21 @@
+insert into devcloud.stage (id, title, description, name, skippable) values (1, 'Java应用构建', '后端Java应用构建打包过程。项目需使用Maven作为项目管理工具。构建过程包含Maven test测试过程,需确保单元测试的100%正确性,单元测试结果将输出到打包日志中。此步骤将打包出一个可运行的服务器程序jar包,并构建生成一个可运行在平台内云服务器的docker镜像。请作为流水线的第一步。这里学生仅作粗略了解,无需深入配置。', 'java-image-build', 0);
+insert into devcloud.stage (id, title, description, name, skippable) values (2, 'Node.js应用构建', '前端应用构建打包过程。需提供对应的Nginx配置文件,将请求转发给平台集群内的后端。请作为流水线的第一步。这里学生仅作粗略了解,无需深入配置。', 'node-image-build', 0);
+insert into devcloud.stage (id, title, description, name, skippable) values (3, 'kubernetes namespace创建', 'namespace,在云平台内用于逻辑上的分类组织概念。平台采用kubernetes作为容器化应用,namespace是它的核心概念之一,每个资源/应用/配置都要布置在你指定的namespace之下。它在部署中需要先于其他kubernetes步骤创建。此平台默认采用"项目名-项目id"作为命名空间名字,这里学生仅作粗略了解,无需深入配置。', 'k8s-namespace', 0);
+insert into devcloud.stage (id, title, description, name, skippable) values (4, 'kubernetes service创建', 'service,在云平台内用于集群内部互相访问服务或集群外部访问的资源概念。平台采用kubernetes作为容器化应用,service是它的核心概念之一。由于服务会有一个或多个实例,而每个实例的IP地址由网络插件动态随机分配(重启后IP地址会改变)。为屏蔽这些后端实例的动态变化和对多实例的负载均衡,service提供一个可设置的服务访问方式。它在部署中需要先于kubernetes ingress步骤创建。此平台默认采用"流水线名称-service"作为名字,这里学生仅作粗略了解,无需深入配置。', 'k8s-service', 0);
+insert into devcloud.stage (id, title, description, name, skippable) values (5, 'kubernetes deployment创建', 'deployment,在云平台内是维护一个或一组服务实例的资源概念,对应着你部署的一个或多个应用实例。平台采用kubernetes作为容器化应用,deployment是它的核心概念之一,将部署应用的所需各项配置传入,就能自动帮用户启动并维护服务的运行状态。它在部署中需要先于kubernetes service、 ingress步骤创建。此平台默认采用"流水线名称-deployment"作为名字,这里学生仅作粗略了解,无需深入配置。', 'k8s-deployment', 0);
+insert into devcloud.stage (id, title, description, name, skippable) values (6, 'kubernetes ingress创建', 'ingress,在云平台内用于提供一个外部请求统一访问入口的资源概念。平台采用kubernetes作为容器化应用,ingress是它的核心概念之一。由于service暴露服务访问端口方式的局限性,产生了为集群统一管理所有请求的资源概念。Ingress能方便的处理http/https请求并路由到对应的服务实例,提供负载均衡等功能。此平台默认采用"流水线名称-ingress"作为名字,这里学生仅作粗略了解,无需深入配置。', 'k8s-ingress', 0);
+insert into devcloud.stage (id, title, description, name, skippable) values (7, '自动化api测试', '可指定自己在api测试界面所设定的api测试,并在流水线部署的末尾执行这些api测试用例,并自动记录结果。这个步骤可选择跳过。', 'api-test', 1);
+
+insert into devcloud.stage_config (id, name, value, editable, stage_id) values (1, 'repoUrl', '#todo', 1, 1);
+insert into devcloud.stage_config (id, name, value, editable, stage_id) values (2, 'branchName', '#todo', 1, 1);
+insert into devcloud.stage_config (id, name, value, editable, stage_id) values (3, 'jarName', '#todo', 1, 1);
+insert into devcloud.stage_config (id, name, value, editable, stage_id) values (4, 'repoUrl', '#todo', 1, 2);
+insert into devcloud.stage_config (id, name, value, editable, stage_id) values (5, 'branchName', '#todo', 1, 2);
+insert into devcloud.stage_config (id, name, value, editable, stage_id) values (6, 'nginxConfig', '#todo', 1, 2);
+insert into devcloud.stage_config (id, name, value, editable, stage_id) values (7, 'name', '{projectName}-{projectId}', 0, 3);
+insert into devcloud.stage_config (id, name, value, editable, stage_id) values (8, 'name', '{pipelineName}-service', 0, 4);
+insert into devcloud.stage_config (id, name, value, editable, stage_id) values (9, 'port', '#todo', 1, 5);
+insert into devcloud.stage_config (id, name, value, editable, stage_id) values (10, 'name', '{pipelineName}-deployment', 0, 5);
+insert into devcloud.stage_config (id, name, value, editable, stage_id) values (11, 'name', '{pipelineName}-ingress', 0, 6);
+insert into devcloud.stage_config (id, name, value, editable, stage_id) values (12, 'access_url', '{pipelineName}.{projectName}-{projectId}.seec.seecoder.cn', 0, 6);
+insert into devcloud.stage_config (id, name, value, editable, stage_id) values (13, 'apiTestIds', '[]', 1, 7);

+ 0 - 7
web/src/main/resources/sql/devcloud_stage.sql

@@ -1,7 +0,0 @@
-insert into devcloud.stage (id, title, description, name) values (1, 'Java应用构建', '后端Java应用构建打包过程。项目需使用Maven作为项目管理工具。构建过程包含Maven test测试过程,需确保单元测试的100%正确性,单元测试结果将输出到打包日志中。此步骤将打包出一个可运行的服务器程序jar包,并构建生成一个可运行在平台内云服务器的docker镜像。请作为流水线的第一步。这里学生仅作粗略了解,无需深入配置。', 'java-image-build');
-insert into devcloud.stage (id, title, description, name) values (2, 'Node.js应用构建', '前端应用构建打包过程。需提供对应的Nginx配置文件,将请求转发给平台集群内的后端。请作为流水线的第一步。这里学生仅作粗略了解,无需深入配置。', 'node-image-build');
-insert into devcloud.stage (id, title, description, name) values (3, 'kubernetes namespace创建', 'namespace,在云平台内用于逻辑上的分类组织概念。平台采用kubernetes作为容器化应用,namespace是它的核心概念之一,每个资源/应用/配置都要布置在你指定的namespace之下。它在部署中需要先于其他kubernetes步骤创建。此平台默认采用"项目名-项目id"作为命名空间名字,这里学生仅作粗略了解,无需深入配置。', 'k8s-namespace');
-insert into devcloud.stage (id, title, description, name) values (4, 'kubernetes service创建', 'service,在云平台内用于集群内部互相访问服务或集群外部访问的资源概念。平台采用kubernetes作为容器化应用,service是它的核心概念之一。由于服务会有一个或多个实例,而每个实例的IP地址由网络插件动态随机分配(重启后IP地址会改变)。为屏蔽这些后端实例的动态变化和对多实例的负载均衡,service提供一个可设置的服务访问方式。它在部署中需要先于kubernetes ingress步骤创建。此平台默认采用"流水线名称-service"作为名字,这里学生仅作粗略了解,无需深入配置。', 'k8s-service');
-insert into devcloud.stage (id, title, description, name) values (5, 'kubernetes deployment创建', 'deployment,在云平台内是维护一个或一组服务实例的资源概念,对应着你部署的一个或多个应用实例。平台采用kubernetes作为容器化应用,deployment是它的核心概念之一,将部署应用的所需各项配置传入,就能自动帮用户启动并维护服务的运行状态。它在部署中需要先于kubernetes service、 ingress步骤创建。此平台默认采用"流水线名称-deployment"作为名字,这里学生仅作粗略了解,无需深入配置。', 'k8s-deployment');
-insert into devcloud.stage (id, title, description, name) values (6, 'kubernetes ingress创建', 'ingress,在云平台内用于提供一个外部请求统一访问入口的资源概念。平台采用kubernetes作为容器化应用,ingress是它的核心概念之一。由于service暴露服务访问端口方式的局限性,产生了为集群统一管理所有请求的资源概念。Ingress能方便的处理http/https请求并路由到对应的服务实例,提供负载均衡等功能。此平台默认采用"流水线名称-ingress"作为名字,这里学生仅作粗略了解,无需深入配置。', 'k8s-ingress');
-insert into devcloud.stage (id, title, description, name) values (7, 'api接口自动化测试', '用于在软件构建部署流程的结尾,指定你已建立的api测试id,在部署成功后自动化运行api测试并记录测试结果', 'api-test');

+ 27 - 24
web/src/main/resources/sql/init.sql → web/src/main/resources/sql/table_init.sql

@@ -7,6 +7,15 @@ create table if not exists devcloud.func_test_case
     pass       tinyint(1) default 0 not null
 );
 
+create table if not exists devcloud.func_test_record
+(
+    id                 int auto_increment
+        primary key,
+    timestamp          timestamp default CURRENT_TIMESTAMP not null,
+    operation_type     varchar(15)                         null,
+    pipeline_record_id int                                 null
+);
+
 create table if not exists devcloud.func_test_step
 (
     id           int auto_increment
@@ -62,9 +71,10 @@ create table if not exists devcloud.stage
 (
     id          int auto_increment
         primary key,
-    title       varchar(31) null,
-    description text        null,
-    name        varchar(63) null
+    title       varchar(31)          null,
+    description text                 null,
+    name        varchar(63)          null,
+    skippable   tinyint(1) default 0 not null
 );
 
 create table if not exists devcloud.stage_config
@@ -73,7 +83,10 @@ create table if not exists devcloud.stage_config
         primary key,
     name     varchar(63) null,
     value    text        null,
-    editable tinyint(1)  null
+    editable tinyint(1)  null,
+    stage_id int         null,
+    constraint stage_config_stage_id_fk
+        foreign key (stage_id) references devcloud.stage (id)
 );
 
 create table if not exists devcloud.test_info
@@ -92,16 +105,17 @@ create table if not exists devcloud.test_info
 
 create table if not exists devcloud.test_result
 (
-    id           int auto_increment
+    id                  int auto_increment
         primary key,
-    test_id      int           not null,
-    execute_time datetime      not null,
-    success      int default 0 not null,
-    failure      int default 0 not null,
-    time_list    text          not null,
-    max_time     int           not null,
-    min_time     int           not null,
-    average_time double        not null
+    test_id             int           not null,
+    execute_time        datetime      not null,
+    success             int default 0 not null,
+    failure             int default 0 not null,
+    time_list           text          not null,
+    max_time            int           not null,
+    min_time            int           not null,
+    average_time        double        not null,
+    pipeline_history_id int           null
 );
 
 create table if not exists devcloud.tree_node
@@ -186,14 +200,3 @@ create table if not exists devcloud.pipeline_record
         foreign key (user_id) references devcloud.user (id)
 );
 
-create table if not exists devcloud.func_test_record
-(
-    id                 int auto_increment
-        primary key,
-    timestamp          timestamp default CURRENT_TIMESTAMP not null,
-    operation_type     varchar(15)                         null,
-    pipeline_record_id int                                 null,
-    constraint func_test_record_pipeline_record_id_fk
-        foreign key (pipeline_record_id) references devcloud.pipeline_record (id)
-);
-