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

feat: 流水线步骤可以选择跳过的功能

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

+ 4 - 0
web/src/main/java/cn/seecoder/web/core/pipeline/PipelineFactory.java

@@ -53,6 +53,10 @@ public class PipelineFactory {
             handlers = mapper.readValue(configJson, new TypeReference<List<ObjectNode>>() {
             });
             for (ObjectNode node : handlers) {
+                //用于判断此步骤是否启用
+                if (!node.get("active").asBoolean()){
+                    continue;
+                }
                 String name = node.get("name").toString().replaceAll("\"", "");
                 JsonNode configs = node.get("configs");
                 cur.setNextHandler(HandlerConfigTable.transToHandler(name, configs));

+ 2 - 2
web/src/main/java/cn/seecoder/web/core/pipeline/config/HandlerConfigTable.java

@@ -55,8 +55,8 @@ public class HandlerConfigTable {
             Field field ;
             field = handler.getClass().getDeclaredField(propertyName);
             field.setAccessible(true);
-            //注意,这种写法无法自动注入List<xx>,因为泛型信息由于java的机制被删除了
-            // 所以无法 List<xx> 的字段,所以最好还是传入String,在对应的handler自己解析
+            //注意,这种写法无法自动注入List<xx>等的字段,因为泛型信息由于java的机制被删除了
+            // 所以最好还是传入一些基本类型或者String,在对应的handler自己解析
             field.set(handler, mapper.readValue(propertyValues.traverse(), field.getType()));
         }
         return handler;

+ 4 - 4
web/src/main/java/cn/seecoder/web/core/pipeline/handler/ApiTestHandler.java

@@ -39,21 +39,21 @@ public class ApiTestHandler extends AbstractHandler {
      * 要自动执行的apiTest的json
      * 格式 [1,2,3]
      */
-    private String apiTestId;
+    private String apiTestIds = "[]";
 
 
 
     @Override
     public void process(Context context) throws PipelineException {
         ObjectMapper objectMapper = new ObjectMapper();
-        List<Integer> apiTestIds;
+        List<Integer> ids;
         try {
-            apiTestIds = objectMapper.readValue(apiTestId, new TypeReference<List<Integer>>() {
+            ids = objectMapper.readValue(apiTestIds, new TypeReference<List<Integer>>() {
             });
         } catch (JsonProcessingException e) {
             throw new PipelineException(HttpStatus.SC_SERVICE_UNAVAILABLE,API_TEST_ID_RESOLVE_ERROR,e);
         }
-        for (Integer testId : apiTestIds){
+        for (Integer testId : ids){
             try {
                 apiTestService.executeAPITest(testId);
             } catch (InterruptedException e) {

+ 5 - 0
web/src/main/resources/template/config/NODE_10.json

@@ -1,6 +1,7 @@
 [
   {
     "name": "node-image-build",
+    "active": true,
     "configs": {
       "repoUrl": "#todo",
       "branchName": "#todo"
@@ -8,22 +9,26 @@
   },
   {
     "name": "k8s-namespace",
+    "active": true,
     "configs": {
     }
   },
   {
     "name": "k8s-deployment",
+    "active": true,
     "configs": {
       "port": "#todo"
     }
   },
   {
     "name": "k8s-service",
+    "active": true,
     "configs": {
     }
   },
   {
     "name": "k8s-ingress",
+    "active": true,
     "configs": {
     }
   }

+ 12 - 0
web/src/main/resources/template/config/SPRINGBOOT_JAVA8.json

@@ -1,6 +1,7 @@
 [
   {
     "name": "java-image-build",
+    "active": true,
     "configs": {
       "repoUrl": "#todo",
       "branchName": "#todo",
@@ -9,23 +10,34 @@
   },
   {
     "name": "k8s-namespace",
+    "active": true,
     "configs": {
     }
   },
   {
     "name": "k8s-deployment",
+    "active": true,
     "configs": {
       "port": "#todo"
     }
   },
   {
     "name": "k8s-service",
+    "active": true,
     "configs": {
     }
   },
   {
     "name": "k8s-ingress",
+    "active": true,
     "configs": {
     }
+  },
+  {
+    "name": "api-test",
+    "active": true,
+    "configs": {
+      "apiTestIds": "[]"
+    }
   }
 ]