diff --git a/.idea/CopilotChatHistory.xml b/.idea/CopilotChatHistory.xml
index b357f4c..73431fb 100644
--- a/.idea/CopilotChatHistory.xml
+++ b/.idea/CopilotChatHistory.xml
@@ -3,6 +3,186 @@
-
-
+
+
@@ -55,12 +55,12 @@
+
-
diff --git a/dependencies/.flattened-pom.xml b/dependencies/.flattened-pom.xml
index ff50801..9e16730 100644
--- a/dependencies/.flattened-pom.xml
+++ b/dependencies/.flattened-pom.xml
@@ -195,11 +195,6 @@
module-system-biz
${revision}
-
- cd.casic.boot
- module-ci-common
- ${revision}
-
cd.casic.boot
module-ci-common-pipeline
@@ -260,6 +255,11 @@
module-ci-worker
${revision}
+
+ cd.casic.pipeline
+ module-ci-dispatch-api
+ ${revision}
+
io.github.mouzt
bizlog-sdk
diff --git a/dependencies/pom.xml b/dependencies/pom.xml
index d6af30f..fef3b60 100644
--- a/dependencies/pom.xml
+++ b/dependencies/pom.xml
@@ -220,12 +220,6 @@
-
- cd.casic.boot
- module-ci-common
- ${revision}
-
-
cd.casic.boot
module-ci-common-pipeline
@@ -298,6 +292,12 @@
${revision}
+
+ cd.casic.pipeline
+ module-ci-dispatch-api
+ ${revision}
+
+
io.github.mouzt
diff --git a/modules/module-ci-common-pipeline/pom.xml b/modules/module-ci-common-pipeline/pom.xml
index bee7d1b..c6cd71c 100644
--- a/modules/module-ci-common-pipeline/pom.xml
+++ b/modules/module-ci-common-pipeline/pom.xml
@@ -17,7 +17,23 @@
cd.casic.boot
- module-ci-common
+ commons
+
+
+ cd.casic.boot
+ spring-boot-starter-mybatis
+
+
+ com.networknt
+ json-schema-validator
+
+
+ org.json
+ json
+
+
+ cd.casic.boot
+ spring-boot-starter-test
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/EnvReplacementParser.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/EnvReplacementParser.java
index fff9b70..e76490f 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/EnvReplacementParser.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/EnvReplacementParser.java
@@ -1,8 +1,8 @@
package cd.casic.ci.common.pipeline;
-import cd.casic.ci.common.functions.ExpressionOutput;
-import cd.casic.ci.common.functions.IFunctionInfo;
-import cd.casic.ci.common.pojo.NamedValueInfo;
+import cd.casic.ci.common.pipeline.functions.ExpressionOutput;
+import cd.casic.ci.common.pipeline.functions.IFunctionInfo;
+import cd.casic.ci.common.pipeline.pojo.NamedValueInfo;
import cd.casic.ci.common.pipeline.dialect.IPipelineDialect;
import cd.casic.ci.common.pipeline.utils.ObjectReplaceEnvVarUtil;
import cn.hutool.core.lang.Pair;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ExprReplacementOptions.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ExprReplacementOptions.java
index 51042b3..21af73d 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ExprReplacementOptions.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ExprReplacementOptions.java
@@ -1,8 +1,8 @@
package cd.casic.ci.common.pipeline;
-import cd.casic.ci.common.functions.ExpressionOutput;
-import cd.casic.ci.common.functions.IFunctionInfo;
-import cd.casic.ci.common.pojo.NamedValueInfo;
+import cd.casic.ci.common.pipeline.functions.ExpressionOutput;
+import cd.casic.ci.common.pipeline.functions.IFunctionInfo;
+import cd.casic.ci.common.pipeline.pojo.NamedValueInfo;
import cn.hutool.core.lang.Pair;
import com.networknt.schema.ExecutionContext;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/BaseConstant.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/BaseConstant.java
similarity index 86%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/BaseConstant.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/BaseConstant.java
index 6ce5159..6a70f42 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/BaseConstant.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/BaseConstant.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.constant;
+package cd.casic.ci.common.pipeline.constant;
/**
* @Classname BaseConstant
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/CommonConstants.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/CommonConstants.java
similarity index 99%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/CommonConstants.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/CommonConstants.java
index f7b5fd8..c1b967d 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/CommonConstants.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/CommonConstants.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.constant;
+package cd.casic.ci.common.pipeline.constant;
/**
* @Author:mianbin
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/CommonMessageCode.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/CommonMessageCode.java
similarity index 99%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/CommonMessageCode.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/CommonMessageCode.java
index a8e9994..8a10398 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/CommonMessageCode.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/CommonMessageCode.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.constant;
+package cd.casic.ci.common.pipeline.constant;
/**
* @Author:mianbin
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/HttpStatus.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/HttpStatus.java
similarity index 98%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/HttpStatus.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/HttpStatus.java
index a22fcd6..14307ac 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/HttpStatus.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/HttpStatus.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.constant;
+package cd.casic.ci.common.pipeline.constant;
/**
* @Author:mianbin
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/LeafAllocConstant.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/LeafAllocConstant.java
similarity index 98%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/LeafAllocConstant.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/LeafAllocConstant.java
index f8253fe..8de5e7e 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/LeafAllocConstant.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/LeafAllocConstant.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.constant;
+package cd.casic.ci.common.pipeline.constant;
/**
* @Classname LeafAllocConstant
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/OpsHeader.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/OpsHeader.java
similarity index 99%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/OpsHeader.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/OpsHeader.java
index 6560129..ef021d7 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/OpsHeader.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/OpsHeader.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.constant;
+package cd.casic.ci.common.pipeline.constant;
/**
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/PipelineConstants.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/PipelineConstants.java
similarity index 98%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/PipelineConstants.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/PipelineConstants.java
index c18634e..a709c9a 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/PipelineConstants.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/PipelineConstants.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.constant;
+package cd.casic.ci.common.pipeline.constant;
/**
* @Author:mianbin
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/StringConstant.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/StringConstant.java
similarity index 94%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/StringConstant.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/StringConstant.java
index dd31230..cfdc259 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/StringConstant.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/StringConstant.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.constant;
+package cd.casic.ci.common.pipeline.constant;
/**
* @Author:mianbin
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/WebhookConstant.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/WebhookConstant.java
similarity index 99%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/WebhookConstant.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/WebhookConstant.java
index 5995532..9ab99da 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/constant/WebhookConstant.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/constant/WebhookConstant.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.constant;
+package cd.casic.ci.common.pipeline.constant;
/**
* @author by mianbin
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/AgentReuseMutex.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/AgentReuseMutex.java
index 197f443..6620e18 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/AgentReuseMutex.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/AgentReuseMutex.java
@@ -1,6 +1,6 @@
package cd.casic.ci.common.pipeline.container;
-import cd.casic.ci.common.pipeline.type.agent.AgentType;
+import cd.casic.ci.common.pipeline.pojo.agent.AgentType;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/AgentAction.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/AgentAction.java
similarity index 88%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/AgentAction.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/AgentAction.java
index cf4766c..c3518a1 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/AgentAction.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/AgentAction.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/AgentStatus.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/AgentStatus.java
similarity index 97%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/AgentStatus.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/AgentStatus.java
index 6b9b09b..617c3ba 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/AgentStatus.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/AgentStatus.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/BkStyleEnum.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BkStyleEnum.java
similarity index 96%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/BkStyleEnum.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BkStyleEnum.java
index 7ab1d04..db540e4 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/BkStyleEnum.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BkStyleEnum.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
/**
* @Classname StyleEnum
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/BuildReviewType.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildReviewType.java
similarity index 91%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/BuildReviewType.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildReviewType.java
index 943aec0..7027cce 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/BuildReviewType.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildReviewType.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/BusTypeEnum.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BusTypeEnum.java
similarity index 88%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/BusTypeEnum.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BusTypeEnum.java
index 29086e1..a98ed2c 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/BusTypeEnum.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BusTypeEnum.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/CheckoutRepositoryType.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CheckoutRepositoryType.java
similarity index 93%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/CheckoutRepositoryType.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CheckoutRepositoryType.java
index 0db1964..18e3216 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/CheckoutRepositoryType.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CheckoutRepositoryType.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/CommonStatusEnum.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CommonStatusEnum.java
similarity index 94%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/CommonStatusEnum.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CommonStatusEnum.java
index 8ec9aed..70418d2 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/CommonStatusEnum.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CommonStatusEnum.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import cd.casic.framework.commons.core.IntArrayValuable;
import lombok.AllArgsConstructor;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/CrudEnum.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CrudEnum.java
similarity index 89%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/CrudEnum.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CrudEnum.java
index 540e7cc..3c54092 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/CrudEnum.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CrudEnum.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/DateIntervalEnum.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/DateIntervalEnum.java
similarity index 95%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/DateIntervalEnum.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/DateIntervalEnum.java
index fd3a14b..a640591 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/DateIntervalEnum.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/DateIntervalEnum.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import cd.casic.framework.commons.core.IntArrayValuable;
import cn.hutool.core.util.ArrayUtil;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/EnumLoader.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/EnumLoader.java
similarity index 96%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/EnumLoader.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/EnumLoader.java
index 609cf11..7098f80 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/EnumLoader.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/EnumLoader.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import lombok.extern.slf4j.Slf4j;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/EnumModifier.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/EnumModifier.java
similarity index 85%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/EnumModifier.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/EnumModifier.java
index ab27ba7..44c61c7 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/EnumModifier.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/EnumModifier.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
/**
* @Author:mianbin
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/ErrorCode.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ErrorCode.java
similarity index 97%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/ErrorCode.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ErrorCode.java
index 905b22f..6a4a535 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/ErrorCode.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ErrorCode.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
/**
* @author by mianbin
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/FrontendTypeEnum.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/FrontendTypeEnum.java
similarity index 94%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/FrontendTypeEnum.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/FrontendTypeEnum.java
index 4a71a37..80d9286 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/FrontendTypeEnum.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/FrontendTypeEnum.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/OSType.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/OSType.java
similarity index 88%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/OSType.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/OSType.java
index 0c9b1a7..de43b64 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/OSType.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/OSType.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/RepoYamlSyncStatusEnum.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/RepoYamlSyncStatusEnum.java
similarity index 90%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/RepoYamlSyncStatusEnum.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/RepoYamlSyncStatusEnum.java
index 131d5d4..44cc172 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/RepoYamlSyncStatusEnum.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/RepoYamlSyncStatusEnum.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/RepositoryConfig.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/RepositoryConfig.java
similarity index 98%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/RepositoryConfig.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/RepositoryConfig.java
index c0d6ef5..2646d88 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/RepositoryConfig.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/RepositoryConfig.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import cd.casic.framework.commons.exception.ServerException;
import com.fasterxml.jackson.annotation.JsonIgnore;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/RepositoryType.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/RepositoryType.java
similarity index 92%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/RepositoryType.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/RepositoryType.java
index 9fad104..947c669 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/RepositoryType.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/RepositoryType.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/RequestChannelTypeEnum.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/RequestChannelTypeEnum.java
similarity index 90%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/RequestChannelTypeEnum.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/RequestChannelTypeEnum.java
index 8feac49..7dad7f6 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/RequestChannelTypeEnum.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/RequestChannelTypeEnum.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/ScmCode.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ScmCode.java
similarity index 95%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/ScmCode.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ScmCode.java
index e1598bb..d6a8653 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/ScmCode.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ScmCode.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/ScmType.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ScmType.java
similarity index 95%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/ScmType.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ScmType.java
index 9b33db1..416937c 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/ScmType.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ScmType.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/SubjectScopeType.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SubjectScopeType.java
similarity index 92%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/SubjectScopeType.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SubjectScopeType.java
index 70cd3f9..63f3686 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/SubjectScopeType.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SubjectScopeType.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
/**
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/SystemModuleEnum.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SystemModuleEnum.java
similarity index 97%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/SystemModuleEnum.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SystemModuleEnum.java
index 4f309c7..6436819 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/SystemModuleEnum.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SystemModuleEnum.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
/**
* @author mianbin
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/TaskStatusEnum.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/TaskStatusEnum.java
similarity index 91%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/TaskStatusEnum.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/TaskStatusEnum.java
index 3c6bfff..6dd402f 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/TaskStatusEnum.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/TaskStatusEnum.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/TriggerRepositoryType.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/TriggerRepositoryType.java
similarity index 94%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/TriggerRepositoryType.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/TriggerRepositoryType.java
index 3cfcf4b..4357690 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/TriggerRepositoryType.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/TriggerRepositoryType.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/UserTypeEnum.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/UserTypeEnum.java
similarity index 95%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/UserTypeEnum.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/UserTypeEnum.java
index 76ca06c..508a908 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/enums/UserTypeEnum.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/UserTypeEnum.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.enums;
+package cd.casic.ci.common.pipeline.enums;
import cd.casic.framework.commons.core.IntArrayValuable;
import cn.hutool.core.util.ArrayUtil;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/functions/ExpressionOutput.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/functions/ExpressionOutput.java
similarity index 79%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/functions/ExpressionOutput.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/functions/ExpressionOutput.java
index 7d0adc8..92f29e3 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/functions/ExpressionOutput.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/functions/ExpressionOutput.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.functions;
+package cd.casic.ci.common.pipeline.functions;
/**
* @author by mianbin
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/functions/IFunctionInfo.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/functions/IFunctionInfo.java
similarity index 90%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/functions/IFunctionInfo.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/functions/IFunctionInfo.java
index c21b703..a32794c 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/functions/IFunctionInfo.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/functions/IFunctionInfo.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.functions;
+package cd.casic.ci.common.pipeline.functions;
import java.util.function.Function;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/functions/INamedValueInfo.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/functions/INamedValueInfo.java
similarity index 89%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/functions/INamedValueInfo.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/functions/INamedValueInfo.java
index a27687f..6e71738 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/functions/INamedValueInfo.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/functions/INamedValueInfo.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.functions;
+package cd.casic.ci.common.pipeline.functions;
/**
* @author by mianbin
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/functions/Preconditions.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/functions/Preconditions.java
similarity index 90%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/functions/Preconditions.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/functions/Preconditions.java
index 9d6ef7b..1ceb928 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/functions/Preconditions.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/functions/Preconditions.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.functions;
+package cd.casic.ci.common.pipeline.functions;
import lombok.SneakyThrows;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/matrix/MatrixConfig.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/matrix/MatrixConfig.java
index 0cf3a26..b991c51 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/matrix/MatrixConfig.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/matrix/MatrixConfig.java
@@ -1,5 +1,5 @@
package cd.casic.ci.common.pipeline.matrix;
-import cd.casic.ci.common.utils.YamlUtil;
+import cd.casic.ci.common.pipeline.utils.YamlUtil;
import cd.casic.ci.common.pipeline.utils.MatrixContextUtils;
import cn.hutool.core.lang.Pair;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/BuildEnv.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildEnv.java
similarity index 93%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/BuildEnv.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildEnv.java
index 6f087dc..fa80dcf 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/BuildEnv.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildEnv.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.pojo;
+package cd.casic.ci.common.pipeline.pojo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildFormProperty.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildFormProperty.java
index 6a4393d..2b03cc0 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildFormProperty.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildFormProperty.java
@@ -1,7 +1,7 @@
package cd.casic.ci.common.pipeline.pojo;
-import cd.casic.ci.common.enums.ScmType;
import cd.casic.ci.common.pipeline.enums.BuildFormPropertyType;
+import cd.casic.ci.common.pipeline.enums.ScmType;
import cd.casic.ci.common.pipeline.pojo.cascade.BuildCascadeProps;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/ErrorInfo.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/ErrorInfo.java
similarity index 96%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/ErrorInfo.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/ErrorInfo.java
index 2a44eee..8da4392 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/ErrorInfo.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/ErrorInfo.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.pojo;
+package cd.casic.ci.common.pipeline.pojo;
/**
* @author by mianbin
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/ErrorType.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/ErrorType.java
similarity index 97%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/ErrorType.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/ErrorType.java
index a6275f3..601a8b7 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/ErrorType.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/ErrorType.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.pojo;
+package cd.casic.ci.common.pipeline.pojo;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/NamedValueInfo.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/NamedValueInfo.java
similarity index 75%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/NamedValueInfo.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/NamedValueInfo.java
index b6a46e8..9b0b478 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/NamedValueInfo.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/NamedValueInfo.java
@@ -1,6 +1,6 @@
-package cd.casic.ci.common.pojo;
+package cd.casic.ci.common.pipeline.pojo;
-import cd.casic.ci.common.functions.INamedValueInfo;
+import cd.casic.ci.common.pipeline.functions.INamedValueInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/OS.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/OS.java
similarity index 90%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/OS.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/OS.java
index a252669..237fbe4 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/OS.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/OS.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.pojo;
+package cd.casic.ci.common.pipeline.pojo;
/**
* @author by mianbin
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/PipelineAsCodeSettings.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/PipelineAsCodeSettings.java
similarity index 97%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/PipelineAsCodeSettings.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/PipelineAsCodeSettings.java
index b8a4ee0..c3a9f4b 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/PipelineAsCodeSettings.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/PipelineAsCodeSettings.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.pojo;
+package cd.casic.ci.common.pipeline.pojo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/Zone.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/Zone.java
similarity index 90%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/Zone.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/Zone.java
index 665f194..8556e7a 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/pojo/Zone.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/Zone.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.pojo;
+package cd.casic.ci.common.pipeline.pojo;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/AgentArchType.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/AgentArchType.java
new file mode 100644
index 0000000..acf39b7
--- /dev/null
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/AgentArchType.java
@@ -0,0 +1,34 @@
+package cd.casic.ci.common.pipeline.pojo.agent;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author by mianbin
+ * @Classname AgentArchType
+ * @Description TODO
+ * @Date 2025/4/8 19:25
+ */
+@Getter
+@AllArgsConstructor
+public enum AgentArchType {
+ ARM64("arm64"),
+ MIPS64("mips64"),
+ AMD64("amd64");
+
+ private final String arch;
+
+ public static AgentArchType parse(String arch) {
+ if (AMD64.arch.equals(arch)) {
+ return AMD64;
+ }
+ if (ARM64.arch.equals(arch)) {
+ return ARM64;
+ }
+ if (MIPS64.arch.equals(arch)) {
+ return MIPS64;
+ }
+ return null;
+ }
+}
+
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/AgentErrorExitData.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/AgentErrorExitData.java
new file mode 100644
index 0000000..99cce0b
--- /dev/null
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/AgentErrorExitData.java
@@ -0,0 +1,17 @@
+package cd.casic.ci.common.pipeline.pojo.agent;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+/**
+ * @author by mianbin
+ * @Classname AgentErrorExitData
+ * @Description TODO
+ * @Date 2025/4/8 19:27
+ */
+@Data
+@AllArgsConstructor
+public class AgentErrorExitData {
+ private final String errorEnum;
+ private final String message;
+}
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/AgentPropsInfo.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/AgentPropsInfo.java
new file mode 100644
index 0000000..2b99a1c
--- /dev/null
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/AgentPropsInfo.java
@@ -0,0 +1,31 @@
+package cd.casic.ci.common.pipeline.pojo.agent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author by mianbin
+ * @Classname AgentPropsInfo
+ * @Description TODO
+ * @Date 2025/4/8 19:28
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "Agent属性信息")
+public class AgentPropsInfo {
+ @Schema(description = "agent运行系统的架构信息")
+ private String arch;
+
+ @Schema(description = "jdk版本信息")
+ private List jdkVersion;
+
+ @Schema(description = "docker init 文件升级信息")
+ private DockerInitFileInfo dockerInitFileInfo;
+}
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/agent/AgentType.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/AgentType.java
similarity index 91%
rename from modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/agent/AgentType.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/AgentType.java
index d70392d..b25b15c 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/agent/AgentType.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/AgentType.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.pipeline.type.agent;
+package cd.casic.ci.common.pipeline.pojo.agent;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/Credential.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/Credential.java
new file mode 100644
index 0000000..6ae5db3
--- /dev/null
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/Credential.java
@@ -0,0 +1,25 @@
+package cd.casic.ci.common.pipeline.pojo.agent;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author by mianbin
+ * @Classname Credential
+ * @Description TODO
+ * @Date 2025/4/8 16:30
+ */
+@Getter
+@Setter
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class Credential {
+ private String user;
+ private String password;
+ private String credentialId;
+ private String acrossTemplateId;
+ private String jobId;
+ private String credentialProjectId;
+}
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/DockerInitFileInfo.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/DockerInitFileInfo.java
new file mode 100644
index 0000000..6b5a5d8
--- /dev/null
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/DockerInitFileInfo.java
@@ -0,0 +1,25 @@
+package cd.casic.ci.common.pipeline.pojo.agent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname DockerInitFileInfo
+ * @Description TODO
+ * @Date 2025/4/8 19:30
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "docker init 文件升级信息")
+public class DockerInitFileInfo {
+ @Schema(description = "文件md5值")
+ private String fileMd5;
+ @Schema(description = "目前只支持linux机器,所以其他系统不需要检查")
+ private boolean needUpgrade;
+}
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/DockerOptions.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/DockerOptions.java
new file mode 100644
index 0000000..a8e4c4f
--- /dev/null
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/DockerOptions.java
@@ -0,0 +1,25 @@
+package cd.casic.ci.common.pipeline.pojo.agent;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @author by mianbin
+ * @Classname DockerOptions
+ * @Description TODO
+ * @Date 2025/4/8 16:30
+ */
+@Getter
+@Setter
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class DockerOptions {
+ private List volumes;
+ private List mounts;
+ private String gpus;
+ private Boolean privileged;
+}
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/NewHeartbeatInfo.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/NewHeartbeatInfo.java
new file mode 100644
index 0000000..763dbc9
--- /dev/null
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/NewHeartbeatInfo.java
@@ -0,0 +1,79 @@
+package cd.casic.ci.common.pipeline.pojo.agent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.assertj.core.util.Lists;
+
+import java.util.List;
+
+/**
+ * @author by mianbin
+ * @Classname NewHeartbeatInfo
+ * @Description TODO
+ * @Date 2025/4/8 19:31
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "心跳信息模型")
+public class NewHeartbeatInfo {
+ @Schema(description = "主版本")
+ private String masterVersion;
+ @Schema(description = "从属版本")
+ private String slaveVersion;
+ @Schema(description = "主机名")
+ private String hostName;
+ @Schema(description = "构建机模型")
+ private String agentIp;
+ @Schema(description = "并行任务计数")
+ private int parallelTaskCount;
+ @Schema(description = "构建机安装路径")
+ private String agentInstallPath;
+ @Schema(description = "启动者")
+ private String startedUser;
+ @Schema(description = "第三方构建信息列表")
+ private List taskList;
+ @Schema(description = "Agent属性信息")
+ private AgentPropsInfo props;
+ @Schema(description = "构建机id")
+ private Long agentId;
+ @Schema(description = "项目id")
+ private String projectId;
+ @Schema(description = "心跳时间戳")
+ private Long heartbeatTime;
+ @Schema(description = "忙碌运行中任务数量")
+ @Builder.Default
+ private int busyTaskSize = 0;
+ @Schema(description = "docker并行任务计数")
+ private Integer dockerParallelTaskCount;
+ @Schema(description = "docker构建信息列表")
+ private List dockerTaskList;
+ @Schema(description = "忙碌运行docker中任务数量")
+ @Builder.Default
+ private int dockerBusyTaskSize = 0;
+ @Schema(description = "Agent退出的错误信息")
+ private AgentErrorExitData errorExitData;
+
+ public static NewHeartbeatInfo dummyHeartbeat(String projectId, Long agentId) {
+ return NewHeartbeatInfo.builder()
+ .masterVersion("")
+ .slaveVersion("")
+ .hostName("")
+ .agentIp("")
+ .parallelTaskCount(0)
+ .agentInstallPath("")
+ .startedUser("")
+ .taskList(Lists.emptyList())
+ .props(new AgentPropsInfo("", null, null))
+ .agentId(agentId)
+ .projectId(projectId)
+ .heartbeatTime(System.currentTimeMillis())
+ .dockerParallelTaskCount(0)
+ .dockerTaskList(List.of())
+ .build();
+ }
+}
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/agent/ThirdPartyAgentDispatch.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentDispatch.java
similarity index 97%
rename from modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/agent/ThirdPartyAgentDispatch.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentDispatch.java
index c798d8d..c32c1ce 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/agent/ThirdPartyAgentDispatch.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentDispatch.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.pipeline.type.agent;
+package cd.casic.ci.common.pipeline.pojo.agent;
import cd.casic.ci.common.pipeline.type.DispatchType;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/agent/ThirdPartyAgentDockerInfo.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentDockerInfo.java
similarity index 57%
rename from modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/agent/ThirdPartyAgentDockerInfo.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentDockerInfo.java
index 4ee15c5..c1c4744 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/agent/ThirdPartyAgentDockerInfo.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentDockerInfo.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.pipeline.type.agent;
+package cd.casic.ci.common.pipeline.pojo.agent;
import cd.casic.ci.common.pipeline.type.docker.ImageType;
import cd.casic.ci.common.pipeline.utils.EnvUtils;
@@ -7,7 +7,6 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Getter;
import lombok.Setter;
-import java.util.List;
import java.util.Map;
/**
@@ -53,60 +52,4 @@ public class ThirdPartyAgentDockerInfo {
imagePullPolicy = EnvUtils.parseEnv(imagePullPolicy, variables);
}
}
-}
-
-@Getter
-@Setter
-@JsonInclude(JsonInclude.Include.NON_NULL)
-@JsonIgnoreProperties(ignoreUnknown = true)
-class Credential {
- private String user;
- private String password;
- private String credentialId;
- private String acrossTemplateId;
- private String jobId;
- private String credentialProjectId;
-}
-
-@Getter
-@Setter
-@JsonInclude(JsonInclude.Include.NON_NULL)
-@JsonIgnoreProperties(ignoreUnknown = true)
-class DockerOptions {
- private List volumes;
- private List mounts;
- private String gpus;
- private Boolean privileged;
-}
-
-@Getter
-@Setter
-@JsonInclude(JsonInclude.Include.NON_NULL)
-@JsonIgnoreProperties(ignoreUnknown = true)
-class ThirdPartyAgentDockerInfoStoreImage {
- private String imageName;
- private String imageCode;
- private String imageVersion;
-}
-
-@Getter
-@Setter
-@JsonInclude(JsonInclude.Include.NON_NULL)
-@JsonIgnoreProperties(ignoreUnknown = true)
-class ThirdPartyAgentDockerInfoDispatch {
- private String agentId;
- private String secretKey;
- private String image;
- private Credential credential;
- private DockerOptions options;
- private String imagePullPolicy;
-
- public ThirdPartyAgentDockerInfoDispatch(String agentId, String secretKey, ThirdPartyAgentDockerInfo info) {
- this.agentId = agentId;
- this.secretKey = secretKey;
- this.image = info.getImage();
- this.credential = info.getCredential();
- this.options = info.getOptions();
- this.imagePullPolicy = info.getImagePullPolicy();
- }
-}
+}
\ No newline at end of file
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentDockerInfoDispatch.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentDockerInfoDispatch.java
new file mode 100644
index 0000000..b7a65c8
--- /dev/null
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentDockerInfoDispatch.java
@@ -0,0 +1,34 @@
+package cd.casic.ci.common.pipeline.pojo.agent;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyAgentDockerInfoDispatch
+ * @Description TODO
+ * @Date 2025/4/8 16:31
+ */
+@Getter
+@Setter
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ThirdPartyAgentDockerInfoDispatch {
+ private String agentId;
+ private String secretKey;
+ private String image;
+ private Credential credential;
+ private DockerOptions options;
+ private String imagePullPolicy;
+
+ public ThirdPartyAgentDockerInfoDispatch(String agentId, String secretKey, ThirdPartyAgentDockerInfo info) {
+ this.agentId = agentId;
+ this.secretKey = secretKey;
+ this.image = info.getImage();
+ this.credential = info.getCredential();
+ this.options = info.getOptions();
+ this.imagePullPolicy = info.getImagePullPolicy();
+ }
+}
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentDockerInfoStoreImage.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentDockerInfoStoreImage.java
new file mode 100644
index 0000000..ddddb8b
--- /dev/null
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentDockerInfoStoreImage.java
@@ -0,0 +1,22 @@
+package cd.casic.ci.common.pipeline.pojo.agent;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyAgentDockerInfoStoreImage
+ * @Description TODO
+ * @Date 2025/4/8 16:31
+ */
+@Getter
+@Setter
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ThirdPartyAgentDockerInfoStoreImage {
+ private String imageName;
+ private String imageCode;
+ private String imageVersion;
+}
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/agent/ThirdPartyAgentEnvDispatchType.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentEnvDispatchType.java
similarity index 97%
rename from modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/agent/ThirdPartyAgentEnvDispatchType.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentEnvDispatchType.java
index 5b9abb0..c29fd1c 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/agent/ThirdPartyAgentEnvDispatchType.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentEnvDispatchType.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.pipeline.type.agent;
+package cd.casic.ci.common.pipeline.pojo.agent;
import cd.casic.ci.common.pipeline.type.BuildType;
import cd.casic.ci.common.pipeline.utils.EnvUtils;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/agent/ThirdPartyAgentIDDispatchType.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentIDDispatchType.java
similarity index 97%
rename from modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/agent/ThirdPartyAgentIDDispatchType.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentIDDispatchType.java
index 091ca8b..a258757 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/agent/ThirdPartyAgentIDDispatchType.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentIDDispatchType.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.pipeline.type.agent;
+package cd.casic.ci.common.pipeline.pojo.agent;
import cd.casic.ci.common.pipeline.type.BuildType;
import cd.casic.ci.common.pipeline.utils.EnvUtils;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentUpgradeByVersionInfo.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentUpgradeByVersionInfo.java
new file mode 100644
index 0000000..d1dd0e7
--- /dev/null
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyAgentUpgradeByVersionInfo.java
@@ -0,0 +1,27 @@
+package cd.casic.ci.common.pipeline.pojo.agent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyAgentUpgradeByVersionInfo
+ * @Description TODO
+ * @Date 2025/4/9 10:58
+ */
+@Data
+public class ThirdPartyAgentUpgradeByVersionInfo {
+ @Schema(description = "worker版本")
+ private String workerVersion;
+
+ @Schema(description = "go agent 版本")
+ private String goAgentVersion;
+
+ @Schema(description = "jdk版本")
+ private List jdkVersion;
+
+ @Schema(description = "docker init 文件升级信息")
+ private DockerInitFileInfo dockerInitFileInfo;
+}
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyBuildInfo.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyBuildInfo.java
new file mode 100644
index 0000000..cb0f664
--- /dev/null
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyBuildInfo.java
@@ -0,0 +1,29 @@
+package cd.casic.ci.common.pipeline.pojo.agent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyBuildInfo
+ * @Description TODO
+ * @Date 2025/4/8 19:41
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "第三方构建信息")
+public class ThirdPartyBuildInfo {
+ @Schema(description = "项目id")
+ private String projectId;
+ @Schema(description = "构建id")
+ private String buildId;
+ @Schema(description = "构建机编排序号")
+ private String vmSeqId;
+ @Schema(description = "工作空间")
+ private String workspace;
+}
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyDockerBuildInfo.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyDockerBuildInfo.java
new file mode 100644
index 0000000..397b83c
--- /dev/null
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/ThirdPartyDockerBuildInfo.java
@@ -0,0 +1,27 @@
+package cd.casic.ci.common.pipeline.pojo.agent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyDockerBuildInfo
+ * @Description TODO
+ * @Date 2025/4/8 19:42
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "第三方构建Docker信息")
+public class ThirdPartyDockerBuildInfo {
+ @Schema(description = "项目id")
+ private String projectId;
+ @Schema(description = "构建id")
+ private String buildId;
+ @Schema(description = "构建机编排序号")
+ private String vmSeqId;
+}
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/UpgradeItem.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/UpgradeItem.java
new file mode 100644
index 0000000..f9c37de
--- /dev/null
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/agent/UpgradeItem.java
@@ -0,0 +1,32 @@
+package cd.casic.ci.common.pipeline.pojo.agent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname UpgradeItem
+ * @Description TODO
+ * @Date 2025/4/8 19:42
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "需要升级的项")
+public class UpgradeItem {
+ @Schema(description = "升级go agent")
+ private boolean agent;
+
+ @Schema(description = "升级worker")
+ private boolean worker;
+
+ @Schema(description = "升级jdk")
+ private boolean jdk;
+
+ @Schema(description = "升级docker init 脚本")
+ private boolean dockerInitFile;
+}
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/cascade/RepoRefCascadeParam.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/cascade/RepoRefCascadeParam.java
index 2670c00..01d1c21 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/cascade/RepoRefCascadeParam.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/cascade/RepoRefCascadeParam.java
@@ -1,9 +1,8 @@
package cd.casic.ci.common.pipeline.pojo.cascade;
-import cd.casic.ci.common.enums.ScmType;
import cd.casic.ci.common.pipeline.enums.BuildFormPropertyType;
+import cd.casic.ci.common.pipeline.enums.ScmType;
import cd.casic.ci.common.pipeline.pojo.BuildFormValue;
-import lombok.Data;
import java.util.Arrays;
import java.util.Collections;
@@ -20,7 +19,7 @@ import java.util.stream.Collectors;
* @Filename:RepoRefCascadeParam
* @description:Todo
*/
-@Data
+
public class RepoRefCascadeParam extends CascadeParam {
public static final String SELECTOR_KEY_REPO_NAME = "repo-name";
public static final String SELECTOR_KEY_BRANCH = "branch";
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/agent/CodeGitElement.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/agent/CodeGitElement.java
index 6011f13..2f21dea 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/agent/CodeGitElement.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/agent/CodeGitElement.java
@@ -1,7 +1,7 @@
package cd.casic.ci.common.pipeline.pojo.element.agent;
-import cd.casic.ci.common.enums.RepositoryType;
import cd.casic.ci.common.pipeline.enums.CodePullStrategy;
+import cd.casic.ci.common.pipeline.enums.RepositoryType;
import cd.casic.ci.common.pipeline.pojo.element.Element;
import cd.casic.ci.common.pipeline.pojo.git.GitPullMode;
import cn.hutool.json.JSONUtil;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/agent/CodeGitlabElement.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/agent/CodeGitlabElement.java
index f0b9335..c2c7463 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/agent/CodeGitlabElement.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/agent/CodeGitlabElement.java
@@ -1,7 +1,7 @@
package cd.casic.ci.common.pipeline.pojo.element.agent;
-import cd.casic.ci.common.enums.RepositoryType;
import cd.casic.ci.common.pipeline.enums.CodePullStrategy;
+import cd.casic.ci.common.pipeline.enums.RepositoryType;
import cd.casic.ci.common.pipeline.pojo.element.Element;
import cd.casic.ci.common.pipeline.pojo.git.GitPullMode;
import cn.hutool.json.JSONUtil;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/agent/CodeSvnElement.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/agent/CodeSvnElement.java
index b38ed23..403008a 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/agent/CodeSvnElement.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/agent/CodeSvnElement.java
@@ -1,7 +1,7 @@
package cd.casic.ci.common.pipeline.pojo.element.agent;
-import cd.casic.ci.common.enums.RepositoryType;
import cd.casic.ci.common.pipeline.enums.CodePullStrategy;
+import cd.casic.ci.common.pipeline.enums.RepositoryType;
import cd.casic.ci.common.pipeline.enums.SVNVersion;
import cd.casic.ci.common.pipeline.enums.SvnDepth;
import cd.casic.ci.common.pipeline.pojo.element.Element;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/agent/GithubElement.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/agent/GithubElement.java
index 8084f94..efcd967 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/agent/GithubElement.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/agent/GithubElement.java
@@ -1,7 +1,7 @@
package cd.casic.ci.common.pipeline.pojo.element.agent;
-import cd.casic.ci.common.enums.RepositoryType;
import cd.casic.ci.common.pipeline.enums.CodePullStrategy;
+import cd.casic.ci.common.pipeline.enums.RepositoryType;
import cd.casic.ci.common.pipeline.pojo.element.Element;
import cd.casic.ci.common.pipeline.pojo.git.GitPullMode;
import cn.hutool.json.JSONUtil;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/quality/QualityGateInElement.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/quality/QualityGateInElement.java
index 65c5a82..48ae157 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/quality/QualityGateInElement.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/quality/QualityGateInElement.java
@@ -9,7 +9,7 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
-import static cd.casic.ci.common.constant.CommonConstants.*;
+import static cd.casic.ci.common.pipeline.constant.CommonConstants.*;
/**
* @Author:mianbin
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/quality/QualityGateOutElement.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/quality/QualityGateOutElement.java
index 9ac3e7d..295d59a 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/quality/QualityGateOutElement.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/quality/QualityGateOutElement.java
@@ -8,8 +8,8 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
-import static cd.casic.ci.common.constant.CommonConstants.KEY_ELEMENT_ENABLE;
-import static cd.casic.ci.common.constant.CommonConstants.KEY_TASK_ATOM;
+import static cd.casic.ci.common.pipeline.constant.CommonConstants.KEY_ELEMENT_ENABLE;
+import static cd.casic.ci.common.pipeline.constant.CommonConstants.KEY_TASK_ATOM;
/**
* @Author:mianbin
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeGitWebHookTriggerElement.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeGitWebHookTriggerElement.java
index 1ab5c8e..dd46d93 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeGitWebHookTriggerElement.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeGitWebHookTriggerElement.java
@@ -1,7 +1,7 @@
package cd.casic.ci.common.pipeline.pojo.element.trigger;
-import cd.casic.ci.common.enums.TriggerRepositoryType;
import cd.casic.ci.common.pipeline.enums.StartType;
+import cd.casic.ci.common.pipeline.enums.TriggerRepositoryType;
import cd.casic.ci.common.pipeline.pojo.element.ElementProp;
import cd.casic.ci.common.pipeline.pojo.element.trigger.enums.CodeEventType;
import cd.casic.ci.common.pipeline.pojo.element.trigger.enums.PathFilterType;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeGithubWebHookTriggerElement.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeGithubWebHookTriggerElement.java
index 52e14f3..605b15b 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeGithubWebHookTriggerElement.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeGithubWebHookTriggerElement.java
@@ -1,7 +1,7 @@
package cd.casic.ci.common.pipeline.pojo.element.trigger;
-import cd.casic.ci.common.enums.TriggerRepositoryType;
import cd.casic.ci.common.pipeline.enums.StartType;
+import cd.casic.ci.common.pipeline.enums.TriggerRepositoryType;
import cd.casic.ci.common.pipeline.pojo.element.trigger.enums.CodeEventType;
import cd.casic.ci.common.pipeline.pojo.element.trigger.enums.PathFilterType;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeGitlabWebHookTriggerElement.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeGitlabWebHookTriggerElement.java
index 59ba779..a9cd46a 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeGitlabWebHookTriggerElement.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeGitlabWebHookTriggerElement.java
@@ -1,7 +1,7 @@
package cd.casic.ci.common.pipeline.pojo.element.trigger;
-import cd.casic.ci.common.enums.TriggerRepositoryType;
import cd.casic.ci.common.pipeline.enums.StartType;
+import cd.casic.ci.common.pipeline.enums.TriggerRepositoryType;
import cd.casic.ci.common.pipeline.pojo.element.ElementProp;
import cd.casic.ci.common.pipeline.pojo.element.trigger.enums.CodeEventType;
import cd.casic.ci.common.pipeline.pojo.element.trigger.enums.PathFilterType;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeP4WebHookTriggerElement.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeP4WebHookTriggerElement.java
index 608eb3a..36d8a9c 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeP4WebHookTriggerElement.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeP4WebHookTriggerElement.java
@@ -1,7 +1,7 @@
package cd.casic.ci.common.pipeline.pojo.element.trigger;
-import cd.casic.ci.common.enums.TriggerRepositoryType;
import cd.casic.ci.common.pipeline.enums.StartType;
+import cd.casic.ci.common.pipeline.enums.TriggerRepositoryType;
import cd.casic.ci.common.pipeline.pojo.element.ElementProp;
import cd.casic.ci.common.pipeline.pojo.element.trigger.enums.CodeEventType;
import cd.casic.ci.common.pipeline.utils.TriggerElementPropUtils;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeSVNWebHookTriggerElement.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeSVNWebHookTriggerElement.java
index 0664a3b..03fca4f 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeSVNWebHookTriggerElement.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeSVNWebHookTriggerElement.java
@@ -1,7 +1,7 @@
package cd.casic.ci.common.pipeline.pojo.element.trigger;
-import cd.casic.ci.common.enums.TriggerRepositoryType;
import cd.casic.ci.common.pipeline.enums.StartType;
+import cd.casic.ci.common.pipeline.enums.TriggerRepositoryType;
import cd.casic.ci.common.pipeline.pojo.element.ElementProp;
import cd.casic.ci.common.pipeline.pojo.element.trigger.enums.PathFilterType;
import cd.casic.ci.common.pipeline.utils.TriggerElementPropUtils;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeTGitWebHookTriggerElement.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeTGitWebHookTriggerElement.java
index 5e2b876..5beb029 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeTGitWebHookTriggerElement.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/CodeTGitWebHookTriggerElement.java
@@ -1,7 +1,7 @@
package cd.casic.ci.common.pipeline.pojo.element.trigger;
-import cd.casic.ci.common.enums.TriggerRepositoryType;
import cd.casic.ci.common.pipeline.enums.StartType;
+import cd.casic.ci.common.pipeline.enums.TriggerRepositoryType;
import cd.casic.ci.common.pipeline.pojo.element.ElementProp;
import cd.casic.ci.common.pipeline.pojo.element.trigger.enums.CodeEventType;
import cd.casic.ci.common.pipeline.pojo.element.trigger.enums.PathFilterType;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/TimerTriggerElement.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/TimerTriggerElement.java
index 965a6c4..7110a88 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/TimerTriggerElement.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/TimerTriggerElement.java
@@ -1,7 +1,7 @@
package cd.casic.ci.common.pipeline.pojo.element.trigger;
-import cd.casic.ci.common.enums.TriggerRepositoryType;
import cd.casic.ci.common.pipeline.enums.StartType;
+import cd.casic.ci.common.pipeline.enums.TriggerRepositoryType;
import cd.casic.ci.common.pipeline.pojo.element.Element;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.experimental.Accessors;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/enums/CodeEventType.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/enums/CodeEventType.java
index c8b443b..2a502f2 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/enums/CodeEventType.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/element/trigger/enums/CodeEventType.java
@@ -1,6 +1,7 @@
package cd.casic.ci.common.pipeline.pojo.element.trigger.enums;
-import cd.casic.ci.common.enums.ScmType;
+
+import cd.casic.ci.common.pipeline.enums.ScmType;
import java.util.ArrayList;
import java.util.List;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/setting/PipelineSetting.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/setting/PipelineSetting.java
index 3f26235..4edda3d 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/setting/PipelineSetting.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/setting/PipelineSetting.java
@@ -1,6 +1,6 @@
package cd.casic.ci.common.pipeline.pojo.setting;
-import cd.casic.ci.common.pojo.PipelineAsCodeSettings;
+import cd.casic.ci.common.pipeline.pojo.PipelineAsCodeSettings;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/BuildType.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/BuildType.java
index 40692b0..f3bbeb1 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/BuildType.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/BuildType.java
@@ -1,7 +1,7 @@
package cd.casic.ci.common.pipeline.type;
-import cd.casic.ci.common.pojo.OS;
+import cd.casic.ci.common.pipeline.pojo.OS;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/DispatchType.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/DispatchType.java
index 74d043a..99d101b 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/DispatchType.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/type/DispatchType.java
@@ -1,7 +1,7 @@
package cd.casic.ci.common.pipeline.type;
-import cd.casic.ci.common.pipeline.type.agent.ThirdPartyAgentEnvDispatchType;
-import cd.casic.ci.common.pipeline.type.agent.ThirdPartyAgentIDDispatchType;
+import cd.casic.ci.common.pipeline.pojo.agent.ThirdPartyAgentEnvDispatchType;
+import cd.casic.ci.common.pipeline.pojo.agent.ThirdPartyAgentIDDispatchType;
import cd.casic.ci.common.pipeline.type.docker.DockerDispatchType;
import cd.casic.ci.common.pipeline.type.kubernetes.KubernetesDispatchType;
import cd.casic.ci.common.pipeline.utils.EnvUtils;
diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/utils/MatrixContextUtils.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/utils/MatrixContextUtils.java
index ca3d6cd..d4980fb 100644
--- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/utils/MatrixContextUtils.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/utils/MatrixContextUtils.java
@@ -1,6 +1,5 @@
package cd.casic.ci.common.pipeline.utils;
-import cd.casic.ci.common.utils.YamlUtil;
import cd.casic.framework.commons.exception.ServerException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/utils/YamlUtil.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/utils/YamlUtil.java
similarity index 98%
rename from modules/module-ci-common/src/main/java/cd/casic/ci/common/utils/YamlUtil.java
rename to modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/utils/YamlUtil.java
index f1fb2bf..4ec9271 100644
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/utils/YamlUtil.java
+++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/utils/YamlUtil.java
@@ -1,4 +1,4 @@
-package cd.casic.ci.common.utils;
+package cd.casic.ci.common.pipeline.utils;
import cd.casic.framework.commons.util.reflect.ReflectUtil;
import com.fasterxml.jackson.core.type.TypeReference;
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/LeafAllocMapper.java b/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/LeafAllocMapper.java
deleted file mode 100644
index a1c896f..0000000
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/LeafAllocMapper.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package cd.casic.ci.common.operationid;
-
-import cd.casic.ci.common.operationid.entity.LeafAlloc;
-import cd.casic.framework.mybatis.core.mapper.BaseMapperX;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * @author by mianbin
- * @Classname LeafAllocMapper
- * @Description TODO
- * @Date 2025/3/19 10:41
- */
-@Mapper
-public interface LeafAllocMapper extends BaseMapperX {
-}
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/LeafAllocService.java b/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/LeafAllocService.java
deleted file mode 100644
index 03894c3..0000000
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/LeafAllocService.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package cd.casic.ci.common.operationid;
-
-
-import cd.casic.ci.common.operationid.entity.LeafAlloc;
-
-import java.util.List;
-/**
- * @author by mianbin
- * @Classname LeafAllocService
- * @Description TODO
- * @Date 2025/3/19 10:41
- */
-public interface LeafAllocService {
-
- List getAllLeafAllocs();
-
- LeafAlloc updateMaxIdAndGetLeafAlloc(String key);
-
- LeafAlloc updateMaxIdByCustomStepAndGetLeafAlloc(LeafAlloc leafAlloc);
-
- List getAllKeys();
-
- boolean create(LeafAlloc leafAlloc);
-
- boolean update(LeafAlloc leafAlloc);
-
- boolean batchCreate(List leafAllocs);
-}
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/LeafAllocServiceImpl.java b/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/LeafAllocServiceImpl.java
deleted file mode 100644
index 395360a..0000000
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/LeafAllocServiceImpl.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package cd.casic.ci.common.operationid;
-
-
-import cd.casic.ci.common.operationid.entity.LeafAlloc;
-import cd.casic.framework.commons.exception.ServiceException;
-import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import jakarta.annotation.Resource;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.Date;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @author by mianbin
- * @Classname LeafAllocServiceImpl
- * @Description TODO
- * @Date 2025/3/19 10:41
- */
-@Slf4j
-@Service
-public class LeafAllocServiceImpl implements LeafAllocService {
-
- @Resource
- private LeafAllocMapper leafAllocMapper;
-
- @Override
- public List getAllLeafAllocs() {
- List leafAllocs = leafAllocMapper.selectList();
- return CollUtil.emptyIfNull(leafAllocs);
- }
-
- @Override
- public LeafAlloc updateMaxIdAndGetLeafAlloc(String key) {
- LeafAlloc leafAlloc = leafAllocMapper.selectOne(LeafAlloc::getKey, key);
- leafAlloc.setMaxId(leafAlloc.getMaxId() + leafAlloc.getStep());
- return leafAllocMapper.updateById(leafAlloc) > 0 ? leafAlloc : null;
- }
-
- @Override
- public LeafAlloc updateMaxIdByCustomStepAndGetLeafAlloc(LeafAlloc condition) {
- LambdaQueryWrapper wrapper = Wrappers.lambdaQuery().eq(LeafAlloc::getKey, condition.getKey());
- condition.setMaxId(condition.getMaxId() + condition.getStep());
- return leafAllocMapper.updateById(condition) > 0 ? condition : null;
- }
-
- @Override
- public List getAllKeys() {
- return leafAllocMapper.selectList().stream().map(LeafAlloc::getKey).collect(Collectors.toList());
- }
-
- @Override
- public boolean create(LeafAlloc leafAlloc) {
- LeafAlloc one = leafAllocMapper.selectOne(LeafAlloc::getKey, leafAlloc.getKey());
- if (one != null) {
- throw new ServiceException(GlobalErrorCodeConstants.ID_DUPLICATION);
- }
- return leafAllocMapper.insert(leafAlloc) > 0 ? true : false;
- }
-
- @Override
- public boolean update(LeafAlloc leafAlloc) {
- LeafAlloc one = leafAllocMapper.selectOne(LeafAlloc::getKey, leafAlloc.getKey(), LeafAlloc::getId, leafAlloc.getId());
- if (one != null) {
- throw new ServiceException(GlobalErrorCodeConstants.ID_DUPLICATION);
- }
- one.setUpdateTime(DateUtil.toLocalDateTime(new Date()));
- return leafAllocMapper.updateById(one) > 0 ? true : false;
- }
-
- @Override
- public boolean batchCreate(List leafAllocs) {
- return leafAllocMapper.insertBatch(leafAllocs);
- }
-}
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/SegmentIdGeneratorImpl.java b/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/SegmentIdGeneratorImpl.java
deleted file mode 100644
index 8823947..0000000
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/SegmentIdGeneratorImpl.java
+++ /dev/null
@@ -1,303 +0,0 @@
-package cd.casic.ci.common.operationid;
-
-
-import cd.casic.ci.common.constant.LeafAllocConstant;
-import cd.casic.ci.common.operationid.entity.Segment;
-import cd.casic.ci.common.operationid.entity.SegmentBuffer;
-import cd.casic.ci.common.operationid.entity.LeafAlloc;
-import cd.casic.framework.commons.exception.ErrorCode;
-import cd.casic.framework.commons.exception.ServiceException;
-import cd.casic.framework.commons.util.generator.IdGenerator;
-import lombok.extern.slf4j.Slf4j;
-
-import java.lang.reflect.Field;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicLong;
-
-/**
- * @author by mianbin
- * @Classname SegmentIdGeneratorImpl
- * @Description TODO
- * @Date 2025/3/19 10:41
- */
-@Slf4j
-public class SegmentIdGeneratorImpl implements IdGenerator {
-
- /**
- * IDCache未初始化成功时的异常码
- */
- private static final long EXCEPTION_ID_IDCACHE_INIT_FALSE = -1;
- /**
- * key不存在时的异常码
- */
- private static final long EXCEPTION_ID_KEY_NOT_EXISTS = -2;
- /**
- * SegmentBuffer中的两个Segment均未从DB中装载时的异常码
- */
- private static final long EXCEPTION_ID_TWO_SEGMENTS_ARE_NULL = -3;
- /**
- * 最大步长不超过100,0000
- */
- private static final int MAX_STEP = 1000000;
- /**
- * 一个Segment维持时间为15分钟
- */
- private static final long SEGMENT_DURATION = 15 * 60 * 1000L;
- private volatile boolean initOK = false;
- private final Map cache = new ConcurrentHashMap<>();
-
- private LeafAllocService leafAllocService;
-
- private ThreadPoolExecutor threadPoolExecutor;
-
- private ScheduledExecutorService scheduledExecutorService;
-
- public SegmentIdGeneratorImpl(LeafAllocService leafAllocService, ThreadPoolExecutor threadPoolExecutor,
- ScheduledExecutorService scheduledExecutorService) {
- this.leafAllocService = leafAllocService;
- this.threadPoolExecutor = threadPoolExecutor;
- this.scheduledExecutorService = scheduledExecutorService;
- }
-
- @Override
- public boolean init() {
- log.info("Init ...");
- // 确保加载到kv后才初始化成功
- updateCacheFromDb();
- initSave();
- initOK = true;
- updateCacheFromDbAtEveryMinute();
- return initOK;
- }
-
- private void initSave() {
- try {
- Class clazz = LeafAllocConstant.class;
- Field[] fields = clazz.getFields();
- List notExist = new ArrayList<>();
- for (Field field : fields) {
- String str = (String) field.get(null);
- if (!cache.containsKey(str)) {
- LeafAlloc leafAlloc = new LeafAlloc();
- leafAlloc.setKey(str);
- leafAlloc.setMaxId(1L);
- leafAlloc.setStep(50);
- notExist.add(leafAlloc);
- }
- }
-
- if (!notExist.isEmpty()) {
- leafAllocService.batchCreate(notExist);
- }
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- log.error(e.getMessage());
- }
- }
-
- @Override
- public List batchGenerateSegmentId(String key, Integer num) {
-
- List res = new ArrayList<>();
- while (num-- > 0) {
- res.add(get(key));
- }
-
- return res;
- }
-
- private void updateCacheFromDbAtEveryMinute() {
-
- scheduledExecutorService.scheduleWithFixedDelay(this::updateCacheFromDb, 60, 60, TimeUnit.SECONDS);
- }
-
- private void updateCacheFromDb() {
- log.info("update cache from db");
- try {
- List dbTags = leafAllocService.getAllKeys();
- if (dbTags == null || dbTags.isEmpty()) {
- return;
- }
- List cacheTags = new ArrayList<>(cache.keySet());
- Set insertTagsSet = new HashSet<>(dbTags);
- Set removeTagsSet = new HashSet<>(cacheTags);
- //db中新加的tags灌进cache
- for (String tmp : cacheTags) {
- insertTagsSet.remove(tmp);
- }
- for (String tag : insertTagsSet) {
- SegmentBuffer buffer = new SegmentBuffer();
- buffer.setKey(tag);
- Segment segment = buffer.getCurrent();
- segment.setValue(new AtomicLong(0));
- segment.setMax(0);
- segment.setStep(0);
- cache.put(tag, buffer);
- log.info("Add tag {} from db to IdCache, SegmentBuffer {}", tag, buffer);
- }
- //cache中已失效的tags从cache删除
- for (String tmp : dbTags) {
- removeTagsSet.remove(tmp);
- }
- for (String tag : removeTagsSet) {
- cache.remove(tag);
- log.info("Remove tag {} from IdCache", tag);
- }
- } catch (Exception e) {
- log.warn("update cache from db exception", e);
- }
- }
-
- @Override
- public Long get(final String key) {
- if (!initOK) {
- throw new ServiceException(ErrorCode.builder().msg("IDCache未初始化成功").code(0).build());
- }
- if (cache.containsKey(key)) {
- SegmentBuffer buffer = cache.get(key);
- if (!buffer.isInitOk()) {
- synchronized (buffer) {
- if (!buffer.isInitOk()) {
- try {
- updateSegmentFromDb(key, buffer.getCurrent());
- log.info("Init buffer. Update leafkey {} {} from db", key, buffer.getCurrent());
- buffer.setInitOk(true);
- } catch (Exception e) {
- log.warn("Init buffer {} exception", buffer.getCurrent(), e);
- }
- }
- }
- }
- return getIdFromSegmentBuffer(cache.get(key));
- }
- log.warn("key({})不存在", key);
- throw new ServiceException(ErrorCode.builder().msg(String.format("key(%s)不存在", key)).code(0).build());
- }
-
- public void updateSegmentFromDb(String key, Segment segment) {
- SegmentBuffer buffer = segment.getBuffer();
- LeafAlloc leafAlloc;
- if (!buffer.isInitOk()) {
- leafAlloc = leafAllocService.updateMaxIdAndGetLeafAlloc(key);
- buffer.setStep(leafAlloc.getStep());
- //leafAlloc中的step为DB中的step
- buffer.setMinStep(leafAlloc.getStep());
- } else if (buffer.getUpdateTimestamp() == 0) {
- leafAlloc = leafAllocService.updateMaxIdAndGetLeafAlloc(key);
- buffer.setUpdateTimestamp(System.currentTimeMillis());
- buffer.setStep(leafAlloc.getStep());
- //leafAlloc中的step为DB中的step
- buffer.setMinStep(leafAlloc.getStep());
- } else {
- long duration = System.currentTimeMillis() - buffer.getUpdateTimestamp();
- int nextStep = buffer.getStep();
- if (duration < SEGMENT_DURATION) {
- if (nextStep * 2 > MAX_STEP) {
- //do nothing
- } else {
- nextStep = nextStep * 2;
- }
- } else if (duration < SEGMENT_DURATION * 2) {
- //do nothing with nextStep
- } else {
- nextStep = nextStep / 2 >= buffer.getMinStep() ? nextStep / 2 : nextStep;
- }
- log.info("leafKey[{}], step[{}], duration[{}mins], nextStep[{}]", key, buffer.getStep(), String.format("%.2f", ((double) duration / (1000 * 60))), nextStep);
- LeafAlloc temp = new LeafAlloc();
- temp.setKey(key);
- temp.setStep(nextStep);
- leafAlloc = leafAllocService.updateMaxIdByCustomStepAndGetLeafAlloc(temp);
- buffer.setUpdateTimestamp(System.currentTimeMillis());
- buffer.setStep(nextStep);
- //leafAlloc的step为DB中的step
- buffer.setMinStep(leafAlloc.getStep());
- }
- // must set value before set max
- long value = leafAlloc.getMaxId() - buffer.getStep();
- segment.getValue().set(value);
- segment.setMax(leafAlloc.getMaxId());
- segment.setStep(buffer.getStep());
- }
-
- public Long getIdFromSegmentBuffer(final SegmentBuffer buffer) {
- while (true) {
- buffer.rLock().lock();
- try {
- final Segment segment = buffer.getCurrent();
- if (!buffer.isNextReady() && (segment.getIdle() < 0.9 * segment.getStep()) && buffer.getThreadRunning().compareAndSet(false, true)) {
- threadPoolExecutor.execute(() -> {
- Segment next = buffer.getSegments()[buffer.nextPos()];
- boolean updateOk = false;
- try {
- updateSegmentFromDb(buffer.getKey(), next);
- updateOk = true;
- log.info("update segment {} from db {}", buffer.getKey(), next);
- } catch (Exception e) {
- log.warn(buffer.getKey() + " updateSegmentFromDb exception", e);
- } finally {
- if (updateOk) {
- buffer.wLock().lock();
- buffer.setNextReady(true);
- buffer.getThreadRunning().set(false);
- buffer.wLock().unlock();
- } else {
- buffer.getThreadRunning().set(false);
- }
- }
- });
- }
- long value = segment.getValue().getAndIncrement();
- if (value < segment.getMax()) {
- return value;
- }
- } finally {
- buffer.rLock().unlock();
- }
- waitAndSleep(buffer);
- buffer.wLock().lock();
- try {
- final Segment segment = buffer.getCurrent();
- long value = segment.getValue().getAndIncrement();
- if (value < segment.getMax()) {
- return value;
- }
- if (buffer.isNextReady()) {
- buffer.switchPos();
- buffer.setNextReady(false);
- } else {
- log.error("Both two segments in {} are not ready! ,请稍后再试", buffer);
- }
- } finally {
- buffer.wLock().unlock();
- }
- }
- }
-
- private void waitAndSleep(SegmentBuffer buffer) {
- int roll = 0;
- while (buffer.getThreadRunning().get()) {
- roll += 1;
- if (roll > 10000) {
- try {
- TimeUnit.MILLISECONDS.sleep(10);
- break;
- } catch (InterruptedException e) {
- log.warn("Thread {} Interrupted", Thread.currentThread().getName());
- break;
- }
- }
- }
- }
-
- public List getAllLeafAllocs() {
- return leafAllocService.getAllLeafAllocs();
- }
-
- public Map getCache() {
- return cache;
- }
-}
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/entity/LeafAlloc.java b/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/entity/LeafAlloc.java
deleted file mode 100644
index f06f4c9..0000000
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/entity/LeafAlloc.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package cd.casic.ci.common.operationid.entity;
-
-import cd.casic.framework.commons.util.validation.ValidGroup;
-import cd.casic.framework.mybatis.core.dataobject.BaseDO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Null;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * @author mianbin
- * @Classname LeafAlloc
- * @Description 业务id实体
- * @Date 2025/3/18 14:16
- */
-@Data
-@Accessors(chain = true)
-@Schema(description = "生成唯一id的实体")
-@EqualsAndHashCode(callSuper=false)
-public class LeafAlloc extends BaseDO {
- private static final long serialVersionUID = 1L;
-
- @Schema(description = "主键")
- @Null(message = "新增id需为空", groups = ValidGroup.Create.class)
- @NotNull(message = "修改id不能为空", groups = ValidGroup.Update.class)
- private String id;
-
- /**
- * 业务key
- */
- @Schema(description = "业务key", requiredMode = Schema.RequiredMode.REQUIRED)
- @NotBlank(message = "key不能为空")
- private String key;
-
- /**
- * 当前已分配的最大id
- */
- @Schema(description = "当前已分配的最大id(新增建议从1开始)", requiredMode = Schema.RequiredMode.REQUIRED, defaultValue = "1")
- @NotNull(message = "maxId不能为空")
- @Size(min = 1, message = "最小为1")
- private Long maxId;
-
- /**
- * 初始步长,也是动态调整的最小步长
- */
- @Schema(description = "初始步长,也是动态调整的最小步长(从数据库一次获取的id数量)", requiredMode = Schema.RequiredMode.REQUIRED)
- @NotNull(message = "step不能为空")
- @Size(min = 1, message = "最小为1")
- private Integer step;
-
- /**
- * 业务key描述
- */
- @Schema(description = "业务key描述", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
- private String description;
-
-
-}
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/entity/Segment.java b/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/entity/Segment.java
deleted file mode 100644
index 9aeab47..0000000
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/entity/Segment.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package cd.casic.ci.common.operationid.entity;
-
-import lombok.Data;
-
-import java.util.concurrent.atomic.AtomicLong;
-
-/**
- * @author mianbin
- * @Classname Segment
- * @Description
- * @Date 2025/3/18 14:16
- */
-@Data
-public class Segment {
- private AtomicLong value = new AtomicLong(0);
- private volatile long max;
- private volatile int step;
- private final SegmentBuffer buffer;
-
- public Segment(SegmentBuffer buffer) {
- this.buffer = buffer;
- }
-
- public long getIdle() {
- return this.getMax() - getValue().get();
- }
-
-}
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/entity/SegmentBuffer.java b/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/entity/SegmentBuffer.java
deleted file mode 100644
index c73292e..0000000
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/entity/SegmentBuffer.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package cd.casic.ci.common.operationid.entity;
-
-import lombok.Data;
-
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-/**
- * @author mianbin
- * @Classname SegmentBuffer
- * @Description
- * @Date 2025/3/18 14:16
- */
-@Data
-public class SegmentBuffer {
-
- private String key;
- /**
- * 双buffer
- */
- private final Segment[] segments;
- /**
- * 当前的使用的segment的index
- */
- private volatile int currentPos;
- /**
- * 下一个segment是否处于可切换状态
- */
- private volatile boolean nextReady;
- /**
- * 是否初始化完成
- */
- private volatile boolean initOk;
- /**
- * 线程是否在运行中
- */
- private final AtomicBoolean threadRunning;
- private final ReadWriteLock lock;
- private volatile int step;
- private volatile int minStep;
- private volatile long updateTimestamp;
-
- public SegmentBuffer() {
- segments = new Segment[]{new Segment(this), new Segment(this)};
- currentPos = 0;
- nextReady = false;
- initOk = false;
- threadRunning = new AtomicBoolean(false);
- lock = new ReentrantReadWriteLock();
- }
-
- public Segment getCurrent() {
- return segments[currentPos];
- }
-
- public int nextPos() {
- return (currentPos + 1) % 2;
- }
-
- public void switchPos() {
- currentPos = nextPos();
- }
-
- public Lock rLock() {
- return lock.readLock();
- }
-
- public Lock wLock() {
- return lock.writeLock();
- }
-}
diff --git a/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/entity/Status.java b/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/entity/Status.java
deleted file mode 100644
index 42eb119..0000000
--- a/modules/module-ci-common/src/main/java/cd/casic/ci/common/operationid/entity/Status.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package cd.casic.ci.common.operationid.entity;
-/**
- * @author mianbin
- * @Classname Segment
- * @Description 没想好干什么呢
- * @Date 2025/3/18 14:16
- */
-public enum Status {
- SUCCESS,
- EXCEPTION
-}
diff --git a/modules/module-ci-common/pom.xml b/modules/module-ci-dispatch-api/pom.xml
similarity index 60%
rename from modules/module-ci-common/pom.xml
rename to modules/module-ci-dispatch-api/pom.xml
index 509c139..c5007ac 100644
--- a/modules/module-ci-common/pom.xml
+++ b/modules/module-ci-dispatch-api/pom.xml
@@ -9,33 +9,30 @@
${revision}
- module-ci-common
+ cd.casic.pipeline
- ${project.artifactId}
+ module-ci-dispatch-api
+
+ ${revision}
jar
cd.casic.boot
- commons
+ module-ci-common-pipeline
+
+
+
+ cd.casic.boot
+ spring-boot-starter-web
cd.casic.boot
- spring-boot-starter-mybatis
-
-
- com.networknt
- json-schema-validator
-
-
- org.json
- json
-
-
- cd.casic.boot
- spring-boot-starter-test
+ module-ci-environment
+
+
\ No newline at end of file
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/BuildAgentBuildResource.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/BuildAgentBuildResource.java
new file mode 100644
index 0000000..0951c91
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/BuildAgentBuildResource.java
@@ -0,0 +1,69 @@
+package cd.casic.pipeline.dispatch.api;
+
+import cd.casic.framework.commons.pojo.CommonResult;
+import cd.casic.pipeline.dispatch.pojo.thirdpartyagent.ThirdPartyBuildInfo;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+
+import static cd.casic.ci.common.pipeline.constant.OpsHeader.*;
+
+/**
+ * @author by mianbin
+ * @Classname BuildAgentBuildResource
+ * @Description TODO
+ * @Date 2025/4/8 16:48
+ */
+@Tag(name = "BUILD_AGENT_BUILD", description = "第三方接入agent资源")
+@RestController
+@RequestMapping(value = "/buildAgent/agent/thirdPartyAgent", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
+public interface BuildAgentBuildResource {
+
+ @Operation(summary = "尝试启动构建")
+ @GetMapping("/startup")
+ CommonResult startBuild(
+ @Parameter(description = "项目ID", required = true)
+ @RequestHeader(AUTH_HEADER_DEVOPS_PROJECT_ID)
+ String projectId,
+ @Parameter(description = "Agent ID", required = true)
+ @RequestHeader(AUTH_HEADER_DEVOPS_AGENT_ID)
+ String agentId,
+ @Parameter(description = "秘钥", required = true)
+ @RequestHeader(AUTH_HEADER_DEVOPS_AGENT_SECRET_KEY)
+ String secretKey,
+ @Parameter(description = "尝试启动构建的类型", required = false)
+ @RequestParam("buildType")
+ String buildType
+ );
+
+ @Operation(summary = "是否更新")
+ @GetMapping("/upgrade")
+ CommonResult upgrade(
+ @Parameter(description = "项目ID", required = true)
+ @RequestHeader(AUTH_HEADER_DEVOPS_PROJECT_ID)
+ String projectId,
+ @Parameter(description = "Agent ID", required = true)
+ @RequestHeader(AUTH_HEADER_DEVOPS_AGENT_ID)
+ String agentId,
+ @Parameter(description = "秘钥", required = true)
+ @RequestHeader(AUTH_HEADER_DEVOPS_AGENT_SECRET_KEY)
+ String secretKey,
+ @Parameter(description = "Agent 版本号", required = false)
+ @RequestParam("version")
+ String version,
+ @Parameter(description = "masterAgent 版本号", required = false)
+ @RequestParam("masterVersion")
+ String masterVersion
+ );
+
+ // 由于原 Kotlin 代码中 upgradeNew 方法未完成,这里保留未完成状态
+ @Operation(summary = "是否更新NEW")
+ @PostMapping("/upgradeNew")
+ CommonResult> upgradeNew(
+ @Parameter(description = "项目ID", required = true)
+ @RequestHeader(AUTH_HEADER_DEVOPS_PROJECT_ID)
+ String projectId
+ );
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/BuildJobQuotaBusinessResource.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/BuildJobQuotaBusinessResource.java
new file mode 100644
index 0000000..4f31b02
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/BuildJobQuotaBusinessResource.java
@@ -0,0 +1,56 @@
+package cd.casic.pipeline.dispatch.api;
+
+import cd.casic.framework.commons.pojo.CommonResult;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import kotlin.Result;
+import org.springframework.web.bind.annotation.*;
+
+import static cd.casic.ci.common.pipeline.constant.OpsHeader.*;
+
+/**
+ * @author by mianbin
+ * @Classname BuildJobQuotaBusinessResource
+ * @Description TODO
+ * @Date 2025/4/8 16:58
+ */
+@Tag(name = "BUILD_JOBS_PROJECT_QUOTA", description = "Job配额管理")
+@RestController
+@RequestMapping("/build/quotas/running")
+public interface BuildJobQuotaBusinessResource {
+
+ @Operation(summary = "上报一个Agent启动")
+ @PostMapping("/agent/start")
+ CommonResult addRunningAgent(
+ @Parameter(description = "项目ID", required = true)
+ @RequestHeader(AUTH_HEADER_DEVOPS_PROJECT_ID) String projectId,
+ @Parameter(description = "流水线ID", required = true)
+ @RequestHeader(AUTH_HEADER_DEVOPS_PIPELINE_ID) String pipelineId,
+ @Parameter(description = "构建ID", required = true)
+ @RequestHeader(AUTH_HEADER_DEVOPS_BUILD_ID) String buildId,
+ @Parameter(description = "构建job序号", required = true)
+ @RequestHeader(AUTH_HEADER_DEVOPS_VM_SEQ_ID) String vmSeqId,
+ @Parameter(description = "executeCount", required = true)
+ @RequestParam("executeCount") Integer executeCount
+ );
+
+ @Operation(summary = "上报一个Agent结束")
+ @DeleteMapping("/agent/shutdown")
+ Result removeRunningAgent(
+ @Parameter(description = "项目ID", required = true)
+ @RequestHeader(AUTH_HEADER_DEVOPS_PROJECT_ID)
+ String projectId,
+ @Parameter(description = "流水线ID", required = true)
+ @RequestHeader(AUTH_HEADER_DEVOPS_PIPELINE_ID)
+ String pipelineId,
+ @Parameter(description = "构建ID", required = true)
+ @RequestHeader(AUTH_HEADER_DEVOPS_BUILD_ID)
+ String buildId,
+ @Parameter(description = "构建job序号", required = true)
+ @RequestHeader(AUTH_HEADER_DEVOPS_VM_SEQ_ID)
+ String vmSeqId,
+ @Parameter(description = "executeCount", required = true)
+ @RequestParam("executeCount")
+ int executeCount);
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/BuildScriptResource.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/BuildScriptResource.java
new file mode 100644
index 0000000..5e58543
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/BuildScriptResource.java
@@ -0,0 +1,35 @@
+package cd.casic.pipeline.dispatch.api;
+
+import cd.casic.framework.commons.pojo.CommonResult;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author by mianbin
+ * @Classname BuildScriptResource
+ * @Date 2025/4/8 17:19
+ */
+@Tag(name = "BUILD_CUSTOM_SCRIPT", description = "构建-自定义脚本资源")
+@RestController
+@RequestMapping("/build/scripts")
+public interface BuildScriptResource {
+
+ @Operation(summary = "下载插件")
+ @GetMapping("/")
+ @ApiResponses({
+ @ApiResponse(responseCode = "304", description = "本地插件已是最新,无需下载")
+ })
+ CommonResult download(
+ @Parameter(description = "插件标识符", required = true)
+ @RequestParam("scriptName") String scriptName,
+ @Parameter(description = "本地eTag标签", required = false)
+ @RequestParam("eTag") String eTag
+ );
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/BuildWorkerResource.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/BuildWorkerResource.java
new file mode 100644
index 0000000..fddd57d
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/BuildWorkerResource.java
@@ -0,0 +1,34 @@
+package cd.casic.pipeline.dispatch.api;
+
+import cd.casic.framework.commons.pojo.CommonResult;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author by mianbin
+ * @Classname BuildWorkerResource
+ * @Description TODO
+ * @Date 2025/4/8 17:21
+ */
+@Tag(name = "BUILD_WORKER", description = "构建-构建执行器资源")
+@RestController
+@RequestMapping("/build/workers")
+public interface BuildWorkerResource {
+
+ @Operation(summary = "下载构建执行器")
+ @GetMapping("/")
+ @ApiResponses({
+ @ApiResponse(responseCode = "304", description = "本地的构建执行器已是最新,无需下载")
+ })
+ CommonResult download(
+ @Parameter(description = "本地eTag标签", required = false)
+ @RequestParam("eTag") String eTag
+ );
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/OpAgentResource.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/OpAgentResource.java
new file mode 100644
index 0000000..a964af1
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/OpAgentResource.java
@@ -0,0 +1,30 @@
+package cd.casic.pipeline.dispatch.api;
+
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Set;
+
+/**
+ * @author by mianbin
+ * @Classname OpAgentResource
+ * @Description TODO
+ * @Date 2025/4/8 17:22
+ */
+@Tag(name = "OP_AGENT", description = "agent相关")
+@RestController
+@RequestMapping("/op/agent")
+public interface OpAgentResource {
+
+ @Operation(summary = "修改灰度排队功能的项目或者流水线")
+ @PostMapping("/update_gray_queue")
+ void updateGrayQueue(
+ @RequestParam("projectId") String projectId,
+ @RequestParam("operate") String operate,
+ Set pipelineIds
+ );
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/OpJobQuotaProjectResource.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/OpJobQuotaProjectResource.java
new file mode 100644
index 0000000..abde1cf
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/OpJobQuotaProjectResource.java
@@ -0,0 +1,84 @@
+package cd.casic.pipeline.dispatch.api;
+
+import cd.casic.framework.commons.pojo.CommonResult;
+import cd.casic.pipeline.dispatch.pojo.JobQuotaProject;
+import cd.casic.pipeline.dispatch.pojo.enums.JobQuotaVmType;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.websocket.server.PathParam;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author by mianbin
+ * @Classname OpJobQuotaProjectResource
+ * @Description TODO
+ * @Date 2025/4/8 17:23
+ */
+@Tag(name = "OP_JOBS_PROJECT_QUOTA", description = "Job配额管理")
+@RestController
+@RequestMapping("/op/jobs/quota")
+public interface OpJobQuotaProjectResource {
+
+ @Operation(summary = "获取全部的JOB配额信息")
+ @GetMapping("/list/project/quota")
+ CommonResult> list(
+ @Parameter(description = "项目ID", required = false)
+ @RequestParam("projectId") String projectId
+ );
+
+ @Operation(summary = "获取项目的JOB配额信息")
+ @GetMapping("/{projectId}/{vmType}")
+ CommonResult get(
+ @Parameter(description = "项目ID", required = true)
+ @PathVariable("projectId") String projectId,
+ @Parameter(description = "构建机类型", required = true)
+ @PathVariable("vmType") JobQuotaVmType vmType,
+ @Parameter(description = "构建来源", required = false)
+ @RequestParam("channelCode") String channelCode
+ );
+
+ @Operation(summary = "添加项目的JOB配额信息")
+ @PutMapping("/{projectId}")
+ CommonResult add(
+ @Parameter(description = "项目ID", required = true)
+ @PathParam("projectId") String projectId,
+ @Parameter(description = "Job配额信息", required = true)
+ JobQuotaProject jobQuota
+ );
+
+ @Operation(summary = "删除项目的JOB配额信息")
+ @DeleteMapping("/{projectId}/{vmType}")
+ CommonResult delete(
+ @Parameter(description = "项目ID", required = true)
+ @PathVariable("projectId") String projectId,
+ @Parameter(description = "构建机类型", required = true)
+ @PathVariable("vmType") JobQuotaVmType vmType,
+ @Parameter(description = "构建来源", required = false)
+ @RequestParam("channelCode") String channelCode
+ );
+
+ @Operation(summary = "更新项目的JOB配额信息")
+ @PostMapping("/{projectId}/{vmType}")
+ CommonResult update(
+ @Parameter(description = "项目ID", required = true)
+ @PathVariable("projectId") String projectId,
+ @Parameter(description = "构建机类型", required = true)
+ @PathVariable("vmType") JobQuotaVmType vmType,
+ @Parameter(description = "Job配额信息", required = true)
+ JobQuotaProject jobQuota
+ );
+
+ @Operation(summary = "清零异常的构建配额记录")
+ @PostMapping("/project/{projectId}/vm/{vmType}")
+ CommonResult restoreProjectRunningJobs(
+ @Parameter(description = "项目ID", required = true)
+ @PathVariable("projectId") String projectId,
+ @Parameter(description = "构建机类型", required = true)
+ @PathVariable("vmType") JobQuotaVmType vmType,
+ @Parameter(description = "构建时间", required = true)
+ @RequestParam("createTime") String createTime,
+ @Parameter(description = "构建来源", required = false)
+ @RequestParam("channelCode") String channelCode
+ );
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/OpJobQuotaSystemResource.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/OpJobQuotaSystemResource.java
new file mode 100644
index 0000000..a8d9794
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/OpJobQuotaSystemResource.java
@@ -0,0 +1,76 @@
+package cd.casic.pipeline.dispatch.api;
+
+import cd.casic.framework.commons.pojo.CommonResult;
+import cd.casic.pipeline.dispatch.pojo.JobQuotaSystem;
+import cd.casic.pipeline.dispatch.pojo.enums.JobQuotaVmType;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.websocket.server.PathParam;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author by mianbin
+ * @Classname OpJobQuotaSystemResource
+ * @Description TODO
+ * @Date 2025/4/8 17:26
+ */
+@Tag(name = "OP_JOBS_SYSTEM_QUOTA", description = "Job默认配额管理")
+@RestController
+@RequestMapping("/op/jobs/system/quota")
+public interface OpJobQuotaSystemResource {
+
+ @Operation(summary = "统计已运行的配额信息")
+ @GetMapping("/all/statistics")
+ CommonResult> statistics(
+ @Parameter(description = "分页大小", required = false)
+ @RequestParam("limit") Integer limit,
+ @Parameter(description = "偏移", required = false)
+ @RequestParam("offset") Integer offset
+ );
+
+ @Operation(summary = "获取全部的JOB配额信息")
+ @GetMapping("/all/list")
+ CommonResult> list();
+
+ @Operation(summary = "获取系统默认JOB配额信息")
+ @GetMapping("/{jobQuotaVmType}")
+ CommonResult> get(
+ @Parameter(description = "构建机类型", required = false)
+ @PathParam("jobQuotaVmType") JobQuotaVmType jobQuotaVmType,
+ @Parameter(description = "构建来源", required = false)
+ @RequestParam("channelCode") String channelCode
+ );
+
+ @Operation(summary = "添加系统默认JOB配额信息")
+ @PutMapping("/")
+ CommonResult add(
+ @Parameter(description = "Job配额信息", required = true)
+ JobQuotaSystem jobQuota
+ );
+
+ @Operation(summary = "删除系统默认JOB配额信息")
+ @DeleteMapping("/{jobQuotaVmType}")
+ CommonResult delete(
+ @Parameter(description = "构建机类型", required = true)
+ @PathParam("jobQuotaVmType") JobQuotaVmType jobQuotaVmType,
+ @Parameter(description = "构建来源", required = false)
+ @RequestParam("channelCode") String channelCode
+ );
+
+ @Operation(summary = "更新系统的JOB配额信息")
+ @PostMapping("/{jobQuotaVmType}")
+ CommonResult update(
+ @Parameter(description = "构建机类型", required = true)
+ @PathParam("jobQuotaVmType") JobQuotaVmType jobQuotaVmType,
+ @Parameter(description = "Job配额信息", required = true)
+ JobQuotaSystem jobQuota
+ );
+
+ @Operation(summary = "清零当月已运行时间")
+ @PostMapping("/clear/vm/{vmType}")
+ CommonResult restore(
+ @Parameter(description = "构建机类型", required = true)
+ @PathParam("vmType") JobQuotaVmType vmType
+ );
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/ServiceAgentResource.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/ServiceAgentResource.java
new file mode 100644
index 0000000..116a33f
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/ServiceAgentResource.java
@@ -0,0 +1,59 @@
+package cd.casic.pipeline.dispatch.api;
+
+import cd.casic.framework.commons.pojo.CommonResult;
+import cd.casic.framework.commons.pojo.PageResult;
+import cd.casic.pipeline.dispatch.pojo.thirdpartyagent.AgentBuildInfo;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.websocket.server.PathParam;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author by mianbin
+ * @Classname ServiceAgentResource
+ * @Description TODO
+ * @Date 2025/4/8 17:30
+ */
+@Tag(name = "SERVICE_AGENT", description = "服务-Agent")
+@RestController
+@RequestMapping("/service/agents")
+public interface ServiceAgentResource {
+
+ @Operation(summary = "获取agent构建信息")
+ @GetMapping("/{agentId}/listBuilds")
+ PageResult listAgentBuild(
+ @Parameter(description = "agent Hash ID", required = true)
+ @PathParam("agentId") String agentId,
+ @Parameter(description = "筛选此状态,支持4种输入(QUEUE,RUNNING,DONE,FAILURE)", required = false)
+ @RequestParam("status") String status,
+ @Parameter(description = "筛选此pipelineId", required = false)
+ @RequestParam("pipelineId") String pipelineId,
+ @Parameter(description = "第几页", required = false)
+ @RequestParam("page") Integer page,
+ @Parameter(description = "每页条数", required = false)
+ @RequestParam("pageSize") Integer pageSize
+ );
+
+ @Operation(summary = "批量获取构建机最近执行记录")
+ @GetMapping("listLatestBuildPipelines")
+ CommonResult> listLatestBuildPipelines(
+ @Parameter(description = "agent Hash ID", required = true)
+ @RequestParam("agentIds") List agentIds
+ );
+
+ @Operation(summary = "获取agent登录调试url")
+ @GetMapping("/docker/debug/url")
+ CommonResult getDockerDebugUrl(
+ @RequestParam("userId") String userId,
+ @RequestParam("projectId") String projectId,
+ @RequestParam("pipelineId") String pipelineId,
+ @RequestParam("buildId") String buildId,
+ @RequestParam("vmSeqId") String vmSeqId
+ );
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/ServiceDispatchJobResource.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/ServiceDispatchJobResource.java
new file mode 100644
index 0000000..b893f63
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/ServiceDispatchJobResource.java
@@ -0,0 +1,29 @@
+package cd.casic.pipeline.dispatch.api;
+
+import cd.casic.pipeline.dispatch.pojo.AgentStartMonitor;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author by mianbin
+ * @Classname ServiceDispatchJobResource
+ * @Description TODO
+ * @Date 2025/4/8 17:36
+ */
+@Tag(name = "SERVICE_AGENT", description = "服务-Agent")
+@RestController
+@RequestMapping("/service/dispatch/jobs")
+public interface ServiceDispatchJobResource {
+
+ @Operation(summary = "监控")
+ @PostMapping("/monitor")
+ void monitor(
+ @Parameter(description = "agent 事件", required = true)
+ AgentStartMonitor agentStartMonitor
+ );
+}
+
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/ServiceJobQuotaBusinessResource.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/ServiceJobQuotaBusinessResource.java
new file mode 100644
index 0000000..8d5dfbd
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/api/ServiceJobQuotaBusinessResource.java
@@ -0,0 +1,57 @@
+package cd.casic.pipeline.dispatch.api;
+
+import cd.casic.pipeline.dispatch.pojo.enums.JobQuotaVmType;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.websocket.server.PathParam;
+import kotlin.Result;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author by mianbin
+ * @Classname ServiceJobQuotaBusinessResource
+ * @Description TODO
+ * @Date 2025/4/8 17:37
+ */
+@Tag(name = "BUILD_JOBS_PROJECT_QUOTA", description = "Job配额管理")
+@RestController
+@RequestMapping("/service/quotas/running")
+public interface ServiceJobQuotaBusinessResource {
+
+ @Operation(summary = "上报一个JOB启动")
+ @PostMapping("/job/projects/{projectId}/vmTypes/{vmType}/builds/{buildId}/vmSeqs/{vmSeqId}")
+ Result checkAndAddRunningJob(
+ @Parameter(description = "projectId", required = true)
+ @PathVariable("projectId") String projectId,
+ @Parameter(description = "vmType", required = true)
+ @PathVariable("vmType") JobQuotaVmType vmType,
+ @Parameter(description = "buildId", required = true)
+ @PathVariable("buildId") String buildId,
+ @Parameter(description = "vmSeqId", required = true)
+ @PathVariable("vmSeqId") String vmSeqId,
+ @Parameter(description = "executeCount", required = true)
+ @RequestParam("executeCount") Integer executeCount,
+ @Parameter(description = "containerId", required = true)
+ @RequestParam("containerId") String containerId,
+ @Parameter(description = "containerHashId", required = false)
+ @RequestParam("containerHashId") String containerHashId,
+ @Parameter(description = "channelCode", required = false)
+ @RequestParam("channelCode") String channelCode
+ );
+
+ @Operation(summary = "上报一个JOB结束")
+ @DeleteMapping("/job/projects/{projectId}/pipelines/{pipelineId}/builds/{buildId}/vmSeqs/{vmSeqId}")
+ Result removeRunningJob(
+ @Parameter(description = "projectId", required = true)
+ @PathVariable("projectId") String projectId,
+ @Parameter(description = "pipelineId", required = true)
+ @PathVariable("pipelineId") String pipelineId,
+ @Parameter(description = "buildId", required = true)
+ @PathParam("buildId") String buildId,
+ @Parameter(description = "vmSeqId", required = false)
+ @PathVariable("vmSeqId") String vmSeqId,
+ @Parameter(description = "executeCount", required = true)
+ @RequestParam("executeCount") Integer executeCount
+ );
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/constants/Constants.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/constants/Constants.java
new file mode 100644
index 0000000..c50e9f6
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/constants/Constants.java
@@ -0,0 +1,60 @@
+package cd.casic.pipeline.dispatch.constants;
+
+/**
+ * @author by mianbin
+ * @Classname Constants
+ * @Description TODO
+ * @Date 2025/4/8 16:46
+ */
+public class Constants {
+
+ public static final String QUEUE_BUILD = "queue_build";
+ public static final String QUEUE_BUILD_NEED_END = "queue_build_need_end";
+ public static final String EXCHANGE_BUILD = "exchange_build";
+ public static final String ROUTE_BUILD = "build";
+ public static final String ROUTE_BUILD_NEED_END = "build_need_end";
+ public static final String EXCHANGE_BUILD_ABORT = "exchange_build_abort";
+ public static final String ROUTE_BUILD_ABORT = "route_build_abort";
+ public static final String QUEUE_BUILD_ABORT = "queue_build_abort";
+ public static final String QUEUE_TASK_BEGIN = "queue_dispatch_vm_task_begin";
+ public static final String QUEUE_TASK_END = "queue_dispatch_vm_task_end";
+ public static final String QUEUE_TASK_NEDD_END = "queue_dispatch_vm_task_need_end";
+ public static final String EXCHANGE_TASK = "exchange_vm_task";
+ public static final String ROUTE_TASK_BEGIN = "dispatch_vm_task_begin";
+ public static final String ROUTE_TASK_END = "dispatch_vm_task_end";
+ public static final String ROUTE_TASK_NEDD_END = "dispatch_vm_task_need_end";
+ public static final String ENV_PUBLIC_HOST_MAX_ATOM_FILE_CACHE_SIZE = "PUBLIC_HOST_MAX_ATOM_FILE_CACHE_SIZE";
+ public static final String ENV_THIRD_HOST_MAX_ATOM_FILE_CACHE_SIZE = "THIRD_HOST_MAX_ATOM_FILE_CACHE_SIZE";
+ // |Docker构建|最大并行构建量(maximum parallelism)/当前正在运行构建数量(Running):
+ public static final String OPS_DOCKER_BUILD_VOLUME = "OpsDockerBuildVolume";
+ // |最大并行构建量(maximum parallelism)/当前正在运行构建数量(Running):
+ public static final String OPS_MAXIMUM_PARALLELISM = "OpsMaximumParallelism";
+ public static final String OPS_UNLIMITED = "OpsUnlimited"; // 无限制(unlimited), 注意负载(Attention)
+ public static final String OPS_HEARTBEAT_TIME = "opsHeartbeatTime"; // 构建机最近心跳时间(heartbeat Time)
+ public static final String OPS_DOCKER_WAS_RECENTLY_BUILT = "opsDockerWasRecentlyBuilt"; // |Docker构建|最近{0}次运行中的构建:
+ public static final String OPS_WAS_RECENTLY_BUILT = "opsWasRecentlyBuilt"; // |最近{0}次运行中的构建:
+ public static final String OPS_TASK_FETCHING_TIMEOUT = "opsTaskFetchingTimeout"; // 任务领取超过{0} 分钟没有启动, 可能存在异常,开始重置
+ public static final String OPS_SCHEDULING_SELECTED_AGENT = "opsSchedulingSelectedAgent"; // 调度构建机(Scheduling selected Agent): {0}/{1}
+ public static final String OPS_SEARCHING_AGENT = "opsSearchingAgent"; // 开始查找最近使用过并且当前没有任何任务的空闲构建机...
+ public static final String OPS_MAX_BUILD_SEARCHING_AGENT = "opsMaxBuildSearchingAgent"; // 查找最近使用过并且未达到最大构建数的构建机...
+ public static final String OPS_SEARCHING_AGENT_MOST_IDLE = "opsSearchingAgentMostIdle"; // 开始查找没有任何任务的空闲构建机...
+ public static final String OPS_SEARCHING_AGENT_PARALLEL_AVAILABLE = "opsSearchingAgentParallelAvailable"; // 开始查找当前构建任务还没到达最大并行数构建机...
+ public static final String OPS_NO_AGENT_AVAILABLE = "opsNoAgentAvailable"; // 没有可用Agent,等待Agent释放...
+ public static final String OPS_ENV_BUSY = "opsEnvBusy"; // 构建环境并发保护,稍后重试...
+ public static final String OPS_QUEUE_TIMEOUT_MINUTES = "opsQueueTimeoutMinutes"; // 构建环境无可分配构建机,等待超时(queue-timeout-minutes={0})
+ public static final String OPS_AGENT_IS_BUSY = "opsAgentIsBusy"; // 构建机繁忙,继续重试(Agent is busy)
+ public static final String OPS_BUILD_AGENT_DETAIL_LINK_ERROR = "opsBuildAgentDetailLinkError"; // 构建机Agent详情链接
+ public static final String OPS_ENV_WORKER_ERROR_IGNORE = "opsEnvWorkerErrorIgnore"; // 构建机环境中{0}节点启动构建进程失败,自动切换其他节点重试
+ public static final String AGENT_REUSE_MUTEX_REDISPATCH = "agentReuseMuteXRedispatch"; // 构建机复用互斥,节点 {0} 已被 {1} 构建使用,重新调度
+ // 构建机复用互斥,等待被依赖的节点 {0} 调度到具体节点后再进行复用调度
+ public static final String AGENT_REUSE_MUTEX_WAIT_REUSED_ENV = "agentReuseMuteXWaitReusedEnv";
+ public static final String OPS_ENV_NODE_DISABLE = "opsEnvNodeDisable";
+ public static final String OPS_THIRD_JOB_ENV_CURR = "opsThirdJobEnvCurr"; // 当前环境下所有构建机并发{0}已经超过配置的{1},排队{2}分钟
+ public static final String OPS_THIRD_JOB_NODE_CURR = "opsThirdJobNodeCurr"; // 当前环境下所有节点运行任务都超过了配置的{0},排队{1}分钟
+ // 构建机复用互斥,节点 {0} 已被 {1} 构建使用,剩余可调度空间不足,重新调度
+ public static final String AGENT_REUSE_MUTEX_RESERVE_REDISPATCH = "agentReuseMutexReserveRedispatch";
+ // 构建环境调度结束,已选取节点 {0}
+ public static final String OPS_ENV_DISPATCH_AGENT = "opsEnvDispatchAgent";
+ // 尝试下发任务至节点 {0}
+ public static final String TRY_AGENT_DISPATCH = "tryAgentDispatch";
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/AgentStartMonitor.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/AgentStartMonitor.java
new file mode 100644
index 0000000..90c43f9
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/AgentStartMonitor.java
@@ -0,0 +1,25 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname AgentStartMonitor
+ * @Description TODO
+ * @Date 2025/4/8 16:36
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AgentStartMonitor {
+ private String projectId;
+ private String pipelineId;
+ private String userId;
+ private String buildId;
+ private String vmSeqId;
+ private String containerHashId;
+ private Integer executeCount;
+ private String stepId;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/BuildAbortMessage.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/BuildAbortMessage.java
new file mode 100644
index 0000000..acdce31
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/BuildAbortMessage.java
@@ -0,0 +1,25 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname BuildAbortMessage
+ * @Description TODO
+ * @Date 2025/4/8 16:36
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "停止构建信息")
+public class BuildAbortMessage {
+ @Schema(title = "构建ID", required = true)
+ private String buildId;
+ @Schema(title = "用户ID", required = true)
+ private String userId;
+ @Schema(title = "虚拟Hash ID", required = true)
+ private String vmHashId;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/BuildNeedEndMessage.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/BuildNeedEndMessage.java
new file mode 100644
index 0000000..169dede
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/BuildNeedEndMessage.java
@@ -0,0 +1,23 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname BuildNeedEndMessage
+ * @Description TODO
+ * @Date 2025/4/8 16:37
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "构建结束信息")
+public class BuildNeedEndMessage {
+ @Schema(title = "构建ID", required = true)
+ private String buildId;
+ @Schema(title = "构建开始时间", required = true)
+ private long startTime;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/JobQuotaProject.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/JobQuotaProject.java
new file mode 100644
index 0000000..213db4c
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/JobQuotaProject.java
@@ -0,0 +1,39 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import cd.casic.ci.common.pipeline.enums.ChannelCode;
+import cd.casic.pipeline.dispatch.pojo.enums.JobQuotaVmType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname JobQuotaProject
+ * @Description TODO
+ * @Date 2025/4/8 16:38
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "项目的JOB配额")
+public class JobQuotaProject {
+ @Schema(title = "项目ID", required = true)
+ private String projectId;
+ @Schema(title = "构建机类型", required = true)
+ private JobQuotaVmType vmType;
+ @Schema(title = "构建来源,默认BS", required = true)
+ private String channelCode = ChannelCode.BS.name();
+ @Schema(title = "项目最大并发JOB数, 默认50", required = false)
+ private int runningJobMax;
+ @Schema(title = "项目单JOB最大执行时间,默认8小时", required = false)
+ private int runningTimeJobMax;
+ @Schema(title = "项目所有JOB最大执行时间,默认40小时/月", required = false)
+ private int runningTimeProjectMax;
+ @Schema(title = "创建时间", required = false)
+ private Long createdTime;
+ @Schema(title = "修改时间", required = false)
+ private Long updatedTime;
+ @Schema(title = "操作人", required = false)
+ private String operator;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/JobQuotaStatus.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/JobQuotaStatus.java
new file mode 100644
index 0000000..ae14303
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/JobQuotaStatus.java
@@ -0,0 +1,31 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname JobQuotaStatus
+ * @Description TODO
+ * @Date 2025/4/8 16:38
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "项目的JOB状态")
+public class JobQuotaStatus {
+ @Schema(title = "项目JOB数量配额", required = true)
+ private int jobQuota;
+ @Schema(title = "已运行JOB数量", required = true)
+ private int runningJobCount;
+ @Schema(title = "JOB告警阈值,百分比0-100", required = true)
+ private int jobThreshold;
+ @Schema(title = "项目job时间配额,单位:小时", required = true)
+ private long timeQuota;
+ @Schema(title = "当月已运行JOB时间, 单位:毫秒", required = true)
+ private long runningJobTime;
+ @Schema(title = "时间告警阈值,百分比0-100", required = true)
+ private int timeThreshold;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/JobQuotaSystem.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/JobQuotaSystem.java
new file mode 100644
index 0000000..05d83a6
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/JobQuotaSystem.java
@@ -0,0 +1,45 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import cd.casic.ci.common.pipeline.enums.ChannelCode;
+import cd.casic.pipeline.dispatch.pojo.enums.JobQuotaVmType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname JobQuotaSystem
+ * @Description TODO
+ * @Date 2025/4/8 16:38
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "系统默认JOB配额")
+public class JobQuotaSystem {
+ @Schema(title = "构建机类型", required = true)
+ private JobQuotaVmType vmType;
+ @Schema(title = "构建来源,默认BS", required = true)
+ private String channelCode = ChannelCode.BS.name();
+ @Schema(title = "蓝盾系统最大并发JOB数,默认5000", required = false)
+ private int runningJobMaxSystem;
+ @Schema(title = "单项目默认最大并发JOB数, 默认500", required = false)
+ private int runningJobMaxProject;
+ @Schema(title = "系统默认所有单个JOB最大执行时间,默认24小时", required = false)
+ private int runningTimeJobMax;
+ @Schema(title = "默认单项目所有JOB最大执行时间,默认5000小时/月", required = false)
+ private int runningTimeJobMaxProject;
+ @Schema(title = "项目执行job数量告警阈值,百分比,默认80", required = false)
+ private int projectRunningJobThreshold;
+ @Schema(title = "项目执行job时间告警阈值,百分比,默认80", required = false)
+ private int projectRunningTimeThreshold;
+ @Schema(title = "系统执行job数量告警阈值,百分比,默认80", required = false)
+ private int systemRunningJobThreshold;
+ @Schema(title = "创建时间", required = false)
+ private String createdTime;
+ @Schema(title = "修改时间", required = false)
+ private String updatedTime;
+ @Schema(title = "操作人", required = false)
+ private String operator;
+}
\ No newline at end of file
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/JobRunningCountProject.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/JobRunningCountProject.java
new file mode 100644
index 0000000..8e1a867
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/JobRunningCountProject.java
@@ -0,0 +1,30 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import cd.casic.pipeline.dispatch.pojo.enums.JobQuotaVmType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname JobRunningCountProject
+ * @Description TODO
+ * @Date 2025/4/8 16:39
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "项目的JOB运行数量")
+public class JobRunningCountProject {
+ @Schema(title = "项目ID", required = true)
+ private String projectId;
+ @Schema(title = "构建机类型", required = true)
+ private JobQuotaVmType vmType;
+ @Schema(title = "项目当前并发JOB数", required = true)
+ private Integer runningJobs;
+ @Schema(title = "项目当前所有JOB当月已经执行时间,小时", required = true)
+ private Integer runningTimeProject;
+ @Schema(title = "工蜂CI当前并发JOB数量", required = true)
+ private Integer runningJobsGitCi;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/JobRunningCountSystem.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/JobRunningCountSystem.java
new file mode 100644
index 0000000..dc63cef
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/JobRunningCountSystem.java
@@ -0,0 +1,26 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import cd.casic.pipeline.dispatch.pojo.enums.JobQuotaVmType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname JobRunningCountSystem
+ * @Description TODO
+ * @Date 2025/4/8 16:39
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "系统的JOB运行数量")
+public class JobRunningCountSystem {
+ @Schema(title = "构建机类型", required = true)
+ private JobQuotaVmType vmType;
+ @Schema(title = "系统当前并发JOB数", required = true)
+ private Integer runningJob;
+ @Schema(title = "工蜂CI当前并发JOB数量", required = true)
+ private Integer runningJobMaxGitCiSystem;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/Machine.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/Machine.java
new file mode 100644
index 0000000..fc36966
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/Machine.java
@@ -0,0 +1,37 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname Machine
+ * @Description TODO
+ * @Date 2025/4/8 16:39
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "虚拟机主机信息")
+public class Machine {
+ @Schema(title = "主机 ID", required = true)
+ private int id;
+ @Schema(title = "主机 IP", required = true)
+ private String ip;
+ @Schema(title = "主机名", required = true)
+ private String name;
+ @Schema(title = "主机用户名", required = true)
+ private String username;
+ @Schema(title = "主机密码", required = true)
+ private String password;
+ @Schema(title = "当前运行数", required = true)
+ private int currentRunNum;
+ @Schema(title = "最大运行数", required = true)
+ private int maxVMRun;
+ @Schema(title = "创建时间", required = true)
+ private long createdTime;
+ @Schema(title = "修改时间", required = true)
+ private long updatedTime;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/MachineCreate.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/MachineCreate.java
new file mode 100644
index 0000000..42b4540
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/MachineCreate.java
@@ -0,0 +1,31 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname MachineCreate
+ * @Description TODO
+ * @Date 2025/4/8 16:39
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "虚拟机主机-创建信息")
+public class MachineCreate {
+ @Schema(title = "主机 ID", required = true)
+ private int id;
+ @Schema(title = "主机 IP", required = true)
+ private String ip;
+ @Schema(title = "主机名", required = true)
+ private String name;
+ @Schema(title = "主机用户名", required = true)
+ private String username;
+ @Schema(title = "主机密码", required = true)
+ private String password;
+ @Schema(title = "最多允许允许的虚拟机台数", required = true)
+ private int maxVMRun;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/PipelineBuild.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/PipelineBuild.java
new file mode 100644
index 0000000..95415a3
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/PipelineBuild.java
@@ -0,0 +1,24 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname PipelineBuild
+ * @Description TODO
+ * @Date 2025/4/8 16:40
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PipelineBuild {
+ private String projectId;
+ private String pipelineId;
+ private String buildId;
+ private String vmBuildId;
+ private Long vmId;
+ private Long createTime;
+ private Integer status;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/PipelineBuildCreate.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/PipelineBuildCreate.java
new file mode 100644
index 0000000..1d9361f
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/PipelineBuildCreate.java
@@ -0,0 +1,22 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname PipelineBuildCreate
+ * @Description TODO
+ * @Date 2025/4/8 16:40
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PipelineBuildCreate {
+ private String projectId;
+ private String pipelineId;
+ private String buildId;
+ private String vmSeqId;
+ private Long vmId;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/RunningJobVO.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/RunningJobVO.java
new file mode 100644
index 0000000..c091388
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/RunningJobVO.java
@@ -0,0 +1,36 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import cd.casic.pipeline.dispatch.pojo.enums.JobQuotaVmType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname RunningJobVO
+ * @Description TODO
+ * @Date 2025/4/8 16:40
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "项目的JOB配额")
+public class RunningJobVO {
+ @Schema(title = "项目ID", required = true)
+ private String projectId;
+ @Schema(title = "构建机类型", required = true)
+ private JobQuotaVmType vmType;
+ @Schema(title = "项目最大并发JOB数, 默认50", required = false)
+ private Integer runningJobMax;
+ @Schema(title = "项目单JOB最大执行时间,默认8小时", required = false)
+ private Integer runningTimeJobMax;
+ @Schema(title = "项目所有JOB最大执行时间,默认40小时/月", required = false)
+ private Integer runningTimeProjectMax;
+ @Schema(title = "创建时间", required = false)
+ private Long createdTime;
+ @Schema(title = "修改时间", required = false)
+ private Long updatedTime;
+ @Schema(title = "操作人", required = false)
+ private String operator;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/Task.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/Task.java
new file mode 100644
index 0000000..bfc568f
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/Task.java
@@ -0,0 +1,31 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname Task
+ * @Description TODO
+ * @Date 2025/4/8 16:41
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "虚拟机主机任务信息")
+public class Task {
+ @Schema(title = "主机任务 ID", required = true)
+ private Integer id;
+ @Schema(title = "主机任务名字", required = true)
+ private String name;
+ @Schema(title = "主机任务 脚本", required = true)
+ private String script;
+ @Schema(title = "主机任务 开始时间", required = true)
+ private Long beginTime;
+ @Schema(title = "主机任务 结束时间", required = true)
+ private Long endTime;
+ @Schema(title = "主机任务 状态", required = true)
+ private Byte status;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/TaskCreate.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/TaskCreate.java
new file mode 100644
index 0000000..79a559f
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/TaskCreate.java
@@ -0,0 +1,29 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author by mianbin
+ * @Classname TaskCreate
+ * @Description TODO
+ * @Date 2025/4/8 16:41
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "虚拟机主机-创建任务")
+public class TaskCreate {
+ @Schema(title = "用户id", required = true)
+ private String userid;
+ @Schema(title = "任务名", required = true)
+ private String name;
+ @Schema(title = "任务脚本", required = false)
+ private String script;
+ @Schema(title = "机器列表", required = true)
+ private List vmList;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/TaskDetail.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/TaskDetail.java
new file mode 100644
index 0000000..b77fb29
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/TaskDetail.java
@@ -0,0 +1,31 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname TaskDetail
+ * @Description TODO
+ * @Date 2025/4/8 16:41
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "虚拟机主机-任务详情")
+public class TaskDetail {
+ @Schema(title = "任务详情ID", required = true)
+ private Integer id;
+ @Schema(title = "任务详情对应的任务ID", required = true)
+ private Integer taskId;
+ @Schema(title = "任务详情对应的虚拟主机ID", required = true)
+ private Integer vmId;
+ @Schema(title = "任务详情对应的虚拟主机名字", required = true)
+ private String vmName;
+ @Schema(title = "任务详情内容", required = true)
+ private String message;
+ @Schema(title = "任务详情开始时间", required = true)
+ private Long time;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/TaskMessage.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/TaskMessage.java
new file mode 100644
index 0000000..2bc7678
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/TaskMessage.java
@@ -0,0 +1,32 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import cd.casic.pipeline.dispatch.pojo.enums.TaskPhase;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname TaskMessage
+ * @Description TODO
+ * @Date 2025/4/8 16:41
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "TASK信息")
+public class TaskMessage {
+ @Schema(title = "TASK ID", required = true)
+ private Integer taskId;
+ @Schema(title = "TASK VM ID", required = true)
+ private Integer vmId;
+ @Schema(title = "TASK 执行的脚本", required = true)
+ private String script;
+ @Schema(title = "TASK 执行完信息", required = true)
+ private String message;
+ @Schema(title = "TASK 执行的脚本结果", required = true)
+ private TaskPhase status;
+ @Schema(title = "TASK 执行的脚本结果", required = true)
+ private Integer retryCount;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VM.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VM.java
new file mode 100644
index 0000000..032e33d
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VM.java
@@ -0,0 +1,51 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname VM
+ * @Description TODO
+ * @Date 2025/4/8 16:13
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "VM-基本信息")
+public class VM {
+ @Schema(title = "VM ID", required = true)
+ private Long id;
+ @Schema(title = "VM 对应母机ID", required = true)
+ private Integer machineId;
+ @Schema(title = "VM 类型ID", required = true)
+ private Integer typeId;
+ @Schema(title = "VM IP地址", required = true)
+ private String ip;
+ @Schema(title = "VM 名称", required = true)
+ private String name;
+ @Schema(title = "VM 系统信息", required = true)
+ private String os;
+ @Schema(title = "VM 系统信息版本", required = true)
+ private String osVersion;
+ @Schema(title = "VM CPU信息", required = true)
+ private String cpu;
+ @Schema(title = "VM 内存信息", required = true)
+ private String memory;
+ @Schema(title = "VM 是否在维护状态", required = true)
+ private Boolean inMaintain;
+ @Schema(title = "VM 管理员用户名", required = true)
+ private String vmManagerUsername;
+ @Schema(title = "VM 管理员密码", required = true)
+ private String vmManagerPassword;
+ @Schema(title = "VM 非管理员用户名", required = true)
+ private String vmUsername;
+ @Schema(title = "VM 非管理员密码", required = true)
+ private String vmPassword;
+ @Schema(title = "创建时间", required = true)
+ private Long createdTime;
+ @Schema(title = "修改时间", required = true)
+ private Long updatedTime;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMCreate.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMCreate.java
new file mode 100644
index 0000000..3580997
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMCreate.java
@@ -0,0 +1,47 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname VMCreate
+ * @Description TODO
+ * @Date 2025/4/8 16:42
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "VM-创建-基本信息")
+public class VMCreate {
+ @Schema(title = "VM ID", required = true)
+ private Long id;
+ @Schema(title = "VM 对应母机ID", required = true)
+ private Integer machineId;
+ @Schema(title = "VM 类型ID", required = true)
+ private Integer typeId;
+ @Schema(title = "VM IP地址", required = true)
+ private String ip;
+ @Schema(title = "VM 名称", required = true)
+ private String name;
+ @Schema(title = "VM 系统信息", required = true)
+ private String os;
+ @Schema(title = "VM 系统版本", required = true)
+ private String osVersion;
+ @Schema(title = "VM CPU信息", required = true)
+ private String cpu;
+ @Schema(title = "VM 内存信息", required = true)
+ private String memory;
+ @Schema(title = "VM 是否在维护状态", required = true)
+ private Boolean inMaintain;
+ @Schema(title = "VM 管理员用户名", required = true)
+ private String vmManagerUsername;
+ @Schema(title = "VM 管理员密码", required = true)
+ private String vmManagerPassword;
+ @Schema(title = "VM 非管理员用户名", required = true)
+ private String vmUsername;
+ @Schema(title = "VM 非管理员密码", required = true)
+ private String vmPassword;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMResponse.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMResponse.java
new file mode 100644
index 0000000..9229974
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMResponse.java
@@ -0,0 +1,55 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname VMResponse
+ * @Description TODO
+ * @Date 2025/4/8 16:42
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "VM-基本信息")
+public class VMResponse {
+ @Schema(title = "VM ID", required = true)
+ private Integer id;
+ @Schema(title = "VM 对应母机ID", required = true)
+ private Integer machineId;
+ @Schema(title = "VM 对应母机名称", required = true)
+ private String machineName;
+ @Schema(title = "VM 类型ID", required = true)
+ private Integer typeId;
+ @Schema(title = "VM 类型名称", required = true)
+ private String typeName;
+ @Schema(title = "VM IP地址", required = true)
+ private String ip;
+ @Schema(title = "VM 名称", required = true)
+ private String name;
+ @Schema(title = "VM 系统信息", required = true)
+ private String os;
+ @Schema(title = "VM 系统信息版本", required = true)
+ private String osVersion;
+ @Schema(title = "VM CPU信息", required = true)
+ private String cpu;
+ @Schema(title = "VM 内存信息", required = true)
+ private String memory;
+ @Schema(title = "VM 是否在维护状态", required = true)
+ private Boolean inMaintain;
+ @Schema(title = "VM 管理员用户名", required = true)
+ private String vmManagerUsername;
+ @Schema(title = "VM 管理员密码", required = true)
+ private String vmManagerPassword;
+ @Schema(title = "VM 非管理员用户名", required = true)
+ private String vmUsername;
+ @Schema(title = "VM 非管理员密码", required = true)
+ private String vmPassword;
+ @Schema(title = "创建时间", required = true)
+ private Long createdTime;
+ @Schema(title = "修改时间", required = true)
+ private Long updatedTime;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMTaskResult.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMTaskResult.java
new file mode 100644
index 0000000..c72f64a
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMTaskResult.java
@@ -0,0 +1,25 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname VMTaskResult
+ * @Description TODO
+ * @Date 2025/4/8 16:43
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "虚拟机主机-任务结束后置处理")
+public class VMTaskResult {
+ @Schema(title = "task id", required = true)
+ private Integer taskId;
+ @Schema(title = "脚本执行信息", required = true)
+ private String message;
+ @Schema(title = "脚本执行结果", required = true)
+ private Boolean success;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMType.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMType.java
new file mode 100644
index 0000000..5257749
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMType.java
@@ -0,0 +1,27 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname VMType
+ * @Description TODO
+ * @Date 2025/4/8 16:43
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "虚拟机类型")
+public class VMType {
+ @Schema(title = "类型ID", required = true)
+ private Integer id;
+ @Schema(title = "类型名称", required = true)
+ private String typeName;
+ @Schema(title = "创建时间", required = true)
+ private Long createdTime;
+ @Schema(title = "修改时间", required = true)
+ private Long updatedTime;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMTypeCreate.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMTypeCreate.java
new file mode 100644
index 0000000..62364cb
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMTypeCreate.java
@@ -0,0 +1,21 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname VMTypeCreate
+ * @Description TODO
+ * @Date 2025/4/8 16:43
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "虚拟机创建类型")
+public class VMTypeCreate {
+ @Schema(title = "类型名称", required = true)
+ private String typeName;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMWithPage.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMWithPage.java
new file mode 100644
index 0000000..f97999d
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMWithPage.java
@@ -0,0 +1,25 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author by mianbin
+ * @Classname VMWithPage
+ * @Description TODO
+ * @Date 2025/4/8 16:43
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "VM-分页-基本信息")
+public class VMWithPage {
+ @Schema(title = "VM总数", required = true)
+ private Integer total;
+ @Schema(title = "VM列表", required = true)
+ private List vms;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMWithPrivateProject.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMWithPrivateProject.java
new file mode 100644
index 0000000..3a183c0
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/VMWithPrivateProject.java
@@ -0,0 +1,31 @@
+package cd.casic.pipeline.dispatch.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname VMWithPrivateProject
+ * @Description TODO
+ * @Date 2025/4/8 16:44
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(title = "VM-专机信息")
+public class VMWithPrivateProject {
+ @Schema(title = "VM ID", required = true)
+ private long id;
+ @Schema(title = "VM 对应母机ID", required = true)
+ private int machineId;
+ @Schema(title = "VM 类型ID", required = true)
+ private int typeId;
+ @Schema(title = "VM IP地址", required = true)
+ private String ip;
+ @Schema(title = "VM 名称", required = true)
+ private String name;
+ @Schema(title = "工程ID", required = true)
+ private String projectId;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/enums/JobQuotaVmType.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/enums/JobQuotaVmType.java
new file mode 100644
index 0000000..90b5f0c
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/enums/JobQuotaVmType.java
@@ -0,0 +1,48 @@
+package cd.casic.pipeline.dispatch.pojo.enums;
+
+import cd.casic.ci.common.pipeline.type.DispatchType;
+import cd.casic.ci.common.pipeline.type.docker.DockerDispatchType;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author by mianbin
+ * @Classname JobQuotaVmType
+ * @Description TODO
+ * @Date 2025/4/8 16:14
+ */
+@Getter
+@AllArgsConstructor
+public enum JobQuotaVmType {
+ DOCKER_VM("Docker on VM"),
+ KUBERNETES("kubernetes"),
+ DOCKER_DEVCLOUD("Docker on DevCloud"),
+ MACOS_DEVCLOUD("MacOS on DevCloud"),
+ WINDOWS_DEVCLOUD("Windows on DevCloud"),
+ OTHER("私有构建机或集群"),
+ BUILD_LESS("无编译环境"),
+ DOCKER_GITCI("工蜂CI构建机"),
+ DOCKER_STREAM("STREAM构建机"),
+ DOCKER_BCS("Docker on Bcs"),
+ DOCKER_PCG("PCG公共构建资源"),
+ ALL("所有类型");
+
+ private final String displayName;
+
+ public static JobQuotaVmType parse(String vmType) {
+ for (JobQuotaVmType jobQuotaVmType : values()) {
+ if (jobQuotaVmType.name().equals(vmType)) {
+ return jobQuotaVmType;
+ }
+ }
+ return null;
+ }
+
+ public static JobQuotaVmType parse(DispatchType dispatchType) {
+ if (dispatchType instanceof DockerDispatchType) {
+ return DOCKER_VM;
+ }
+ // 其他类型暂时不限制
+ return null;
+ }
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/enums/PipelineTaskStatus.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/enums/PipelineTaskStatus.java
new file mode 100644
index 0000000..3245867
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/enums/PipelineTaskStatus.java
@@ -0,0 +1,39 @@
+package cd.casic.pipeline.dispatch.pojo.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author by mianbin
+ * @Classname PipelineTaskStatus
+ * @Description TODO
+ * @Date 2025/4/8 16:15
+ */
+@Getter
+@AllArgsConstructor
+public enum PipelineTaskStatus {
+ QUEUE(1),
+ RUNNING(2),
+ DONE(3),
+ FAILURE(4);
+
+ private final int status;
+
+ public static PipelineTaskStatus toStatus(int status) {
+ for (PipelineTaskStatus taskStatus : values()) {
+ if (taskStatus.getStatus() == status) {
+ return taskStatus;
+ }
+ }
+ throw new RuntimeException("Can't find the pipeline task status(" + status + ")");
+ }
+
+ public static PipelineTaskStatus parse(String input) {
+ for (PipelineTaskStatus taskStatus : values()) {
+ if (taskStatus.name().equals(input)) {
+ return taskStatus;
+ }
+ }
+ return DONE;
+ }
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/enums/TaskPhase.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/enums/TaskPhase.java
new file mode 100644
index 0000000..c55b32c
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/enums/TaskPhase.java
@@ -0,0 +1,40 @@
+package cd.casic.pipeline.dispatch.pojo.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.ToString;
+
+/**
+ * @author by mianbin
+ * @Classname TaskPhase
+ * @Description TODO
+ * @Date 2025/4/8 16:16
+ */
+@Getter
+@ToString
+@AllArgsConstructor
+public enum TaskPhase {
+ READY((byte) 0),
+ QUEUE((byte) 1),
+ RUNNING((byte) 3),
+ SUCCESS((byte) 101),
+ FAIL((byte) 102),
+ ABORT((byte) 104),
+ QUEUE_TIMEOUT((byte) 105), // 排队超时
+ TASK_TIMEOUT((byte) 106); // 构建超时
+
+ private final byte value;
+
+ public static TaskPhase fromShort(byte value) {
+ for (TaskPhase taskPhase : values()) {
+ if (taskPhase.getValue() == value) {
+ return taskPhase;
+ }
+ }
+ return null;
+ }
+
+ public static boolean isFinish(byte value) {
+ return value >= SUCCESS.getValue();
+ }
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/reids/RedisBuild.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/reids/RedisBuild.java
new file mode 100644
index 0000000..b35ba91
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/reids/RedisBuild.java
@@ -0,0 +1,51 @@
+package cd.casic.pipeline.dispatch.pojo.reids;
+
+import cd.casic.ci.common.pipeline.pojo.Zone;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Map;
+
+/**
+ * @author by mianbin
+ * @Classname RedisBuild
+ * @Date 2025/4/8 16:17
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@Schema(description = "RedisBuild 对象,用于存储构建信息")
+public class RedisBuild {
+
+ @JsonProperty("vmName")
+ @Schema(description = "虚拟机名称", required = true)
+ private String vmName;
+ @JsonProperty("projectId")
+ @Schema(description = "项目ID", required = true)
+ private String projectId;
+ @JsonProperty("pipelineId")
+ @Schema(description = "流水线ID", required = true)
+ private String pipelineId;
+ @JsonProperty("buildId")
+ @Schema(description = "构建ID", required = true)
+ private String buildId;
+ @JsonProperty("vmSeqId")
+ @Schema(description = "虚拟机序列ID", required = true)
+ private String vmSeqId;
+ @JsonProperty("channelCode")
+ @Schema(description = "通道代码")
+ private String channelCode;
+ @JsonProperty("zone")
+ @Schema(description = "区域信息")
+ private Zone zone;
+ @JsonProperty("atoms")
+ @Schema(description = "用插件框架开发的插件信息,key为插件code,value为下载路径", defaultValue = "{}")
+ private Map atoms = Map.of();
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/AgentBuildInfo.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/AgentBuildInfo.java
new file mode 100644
index 0000000..35c365b
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/AgentBuildInfo.java
@@ -0,0 +1,43 @@
+package cd.casic.pipeline.dispatch.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname AgentBuildInfo
+ * @Description TODO
+ * @Date 2025/4/8 16:18
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(title = "构建机构建信息")
+public class AgentBuildInfo {
+ @Schema(title = "项目id")
+ private String projectId;
+ @Schema(title = "构建机id")
+ private String agentId;
+ @Schema(title = "流水线id")
+ private String pipelineId;
+ @Schema(title = "流水线名称")
+ private String pipelineName;
+ @Schema(title = "构建id")
+ private String buildId;
+ @Schema(title = "构建计数")
+ private int buildNum;
+ @Schema(title = "构建机编排序号")
+ private String vmSeqId;
+ @Schema(title = "任务名")
+ private String taskName;
+ @Schema(title = "状态")
+ private String status;
+ @Schema(title = "创建时间")
+ private long createdTime;
+ @Schema(title = "更新时间")
+ private long updatedTime;
+ @Schema(title = "工作空间")
+ private String workspace;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/AskEnable.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/AskEnable.java
new file mode 100644
index 0000000..002ba70
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/AskEnable.java
@@ -0,0 +1,23 @@
+package cd.casic.pipeline.dispatch.pojo.thirdpartyagent;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname AskEnable
+ * @Description TODO
+ * @Date 2025/4/8 16:28
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonIgnoreProperties(ignoreUnknown = true)
+class AskEnable {
+ private String build;
+ private boolean upgrade;
+ private boolean dockerDebug;
+ private boolean pipeline;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/BuildJobType.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/BuildJobType.java
new file mode 100644
index 0000000..9b000dc
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/BuildJobType.java
@@ -0,0 +1,32 @@
+package cd.casic.pipeline.dispatch.pojo.thirdpartyagent;
+
+/**
+ * @author by mianbin
+ * @Classname BuildJobType
+ * @Description TODO
+ * @Date 2025/4/8 16:24
+ */
+public enum BuildJobType {
+ ALL,
+ DOCKER,
+ BINARY,
+ NONE;
+
+ public static BuildJobType toEnum(String type) {
+ if (type == null) {
+ return ALL;
+ }
+ switch (type) {
+ case "ALL":
+ return ALL;
+ case "DOCKER":
+ return DOCKER;
+ case "BINARY":
+ return BINARY;
+ case "NONE":
+ return NONE;
+ default:
+ return ALL;
+ }
+ }
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyAskInfo.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyAskInfo.java
new file mode 100644
index 0000000..0455f5d
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyAskInfo.java
@@ -0,0 +1,24 @@
+package cd.casic.pipeline.dispatch.pojo.thirdpartyagent;
+
+import cd.casic.ci.common.pipeline.pojo.agent.NewHeartbeatInfo;
+import cd.casic.ci.common.pipeline.pojo.agent.ThirdPartyAgentUpgradeByVersionInfo;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyAskInfo
+ * @Description TODO
+ * @Date 2025/4/8 16:24
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ThirdPartyAskInfo {
+ private AskEnable askEnable;
+ private NewHeartbeatInfo heartbeat;
+ private ThirdPartyAgentUpgradeByVersionInfo upgrade;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyAskResp.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyAskResp.java
new file mode 100644
index 0000000..657f006
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyAskResp.java
@@ -0,0 +1,25 @@
+package cd.casic.pipeline.dispatch.pojo.thirdpartyagent;
+
+import cd.casic.ci.common.pipeline.pojo.agent.UpgradeItem;
+import cd.casic.pipeline.environment.pojo.thirdpartyagent.AskHeartbeatResponse;
+import cd.casic.pipeline.environment.pojo.thirdpartyagent.ThirdPartyAgentPipeline;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyAskResp
+ * @Description TODO
+ * @Date 2025/4/8 16:28
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+class ThirdPartyAskResp {
+ private AskHeartbeatResponse heartbeat;
+ private ThirdPartyBuildInfo build;
+ private UpgradeItem upgrade;
+ private ThirdPartyAgentPipeline pipeline;
+ private ThirdPartyDockerDebugInfo debug;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyBuildDockerInfo.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyBuildDockerInfo.java
new file mode 100644
index 0000000..f79f02b
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyBuildDockerInfo.java
@@ -0,0 +1,39 @@
+package cd.casic.pipeline.dispatch.pojo.thirdpartyagent;
+
+
+import cd.casic.ci.common.pipeline.pojo.agent.DockerOptions;
+import cd.casic.ci.common.pipeline.pojo.agent.ThirdPartyAgentDockerInfoDispatch;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyBuildDockerInfo
+ * @Description TODO
+ * @Date 2025/4/8 16:27
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ThirdPartyBuildDockerInfo {
+ private String agentId;
+ private String secretKey;
+ private String image;
+ private ThirdPartyBuildDockerInfoCredential credential;
+ private DockerOptions options;
+ private String imagePullPolicy;
+
+ public ThirdPartyBuildDockerInfo(ThirdPartyAgentDockerInfoDispatch input) {
+ this.agentId = input.getAgentId();
+ this.secretKey = input.getSecretKey();
+ this.image = input.getImage();
+ this.credential = new ThirdPartyBuildDockerInfoCredential(input.getCredential());
+ this.options = input.getOptions();
+ this.imagePullPolicy = input.getImagePullPolicy();
+ }
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyBuildDockerInfoCredential.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyBuildDockerInfoCredential.java
new file mode 100644
index 0000000..b306804
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyBuildDockerInfoCredential.java
@@ -0,0 +1,30 @@
+package cd.casic.pipeline.dispatch.pojo.thirdpartyagent;
+
+import cd.casic.ci.common.pipeline.pojo.agent.Credential;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyBuildDockerInfoCredential
+ * @Date 2025/4/8 16:33
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+class ThirdPartyBuildDockerInfoCredential {
+ private String user;
+ private String password;
+ private String errMsg;
+
+ public ThirdPartyBuildDockerInfoCredential(Credential input) {
+ this.user = input != null ? input.getUser() : null;
+ this.password = input != null ? input.getPassword() : null;
+ this.errMsg = null;
+ }
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyBuildInfo.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyBuildInfo.java
new file mode 100644
index 0000000..a8f0b89
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyBuildInfo.java
@@ -0,0 +1,35 @@
+package cd.casic.pipeline.dispatch.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyBuildInfo
+ * @Description TODO
+ * @Date 2025/4/8 16:35
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(title = "第三方构建信息")
+public class ThirdPartyBuildInfo {
+ @Schema(title = "项目id")
+ private String projectId;
+ @Schema(title = "构建id")
+ private String buildId;
+ @Schema(title = "构建机编排序号")
+ private String vmSeqId;
+ @Schema(title = "工作空间")
+ private String workspace;
+ @Schema(title = "流水线ID")
+ private String pipelineId;
+ @Schema(title = "docker构建相关信息")
+ private ThirdPartyBuildDockerInfo dockerBuildInfo;
+ @Schema(title = "流水线执行次数")
+ private Integer executeCount;
+ @Schema(title = "容器hashId日志使用")
+ private String containerHashId;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyBuildWithStatus.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyBuildWithStatus.java
new file mode 100644
index 0000000..3188bee
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyBuildWithStatus.java
@@ -0,0 +1,37 @@
+package cd.casic.pipeline.dispatch.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyBuildWithStatus
+ * @Description TODO
+ * @Date 2025/4/8 16:35
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(title = "第三方构建信息模型")
+public class ThirdPartyBuildWithStatus {
+ @Schema(title = "项目id")
+ private String projectId;
+ @Schema(title = "构建id")
+ private String buildId;
+ @Schema(title = "构建环境id")
+ private String vmSeqId;
+ @Schema(title = "工作空间")
+ private String workspace;
+ @Schema(title = "流水线id")
+ private String pipelineId;
+ @Schema(title = "是否成功")
+ private boolean success;
+ @Schema(title = "message信息")
+ private String message;
+ @Schema(title = "错误信息")
+ private Error error;
+ @Schema(title = "流水线执行次数")
+ private Integer executeCount;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyDockerDebugDoneInfo.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyDockerDebugDoneInfo.java
new file mode 100644
index 0000000..7727af3
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyDockerDebugDoneInfo.java
@@ -0,0 +1,31 @@
+package cd.casic.pipeline.dispatch.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyDockerDebugDoneInfo
+ * @Description TODO
+ * @Date 2025/4/8 16:35
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(title = "第三方构建Docker登录调试完成信息")
+public class ThirdPartyDockerDebugDoneInfo {
+ @Schema(title = "项目id")
+ private String projectId;
+ @Schema(title = "debugId")
+ private Long debugId;
+ @Schema(title = "流水线id")
+ private String pipelineId;
+ @Schema(title = "debug链接")
+ private String debugUrl;
+ @Schema(title = "是否成功")
+ private boolean success;
+ @Schema(title = "错误信息")
+ private Error error;
+}
diff --git a/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyDockerDebugInfo.java b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyDockerDebugInfo.java
new file mode 100644
index 0000000..ee8cba6
--- /dev/null
+++ b/modules/module-ci-dispatch-api/src/main/java/cd/casic/pipeline/dispatch/pojo/thirdpartyagent/ThirdPartyDockerDebugInfo.java
@@ -0,0 +1,37 @@
+package cd.casic.pipeline.dispatch.pojo.thirdpartyagent;
+
+import cd.casic.ci.common.pipeline.pojo.agent.DockerOptions;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyDockerDebugInfo
+ * @Description TODO
+ * @Date 2025/4/8 16:36
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(title = "第三方构建Docker登录调试信息")
+public class ThirdPartyDockerDebugInfo {
+ @Schema(title = "项目id")
+ private String projectId;
+ @Schema(title = "构建id")
+ private String buildId;
+ @Schema(title = "构建机编排序号")
+ private String vmSeqId;
+ @Schema(title = "工作空间")
+ private String workspace;
+ @Schema(title = "流水线ID")
+ private String pipelineId;
+ @Schema(title = "调试用户")
+ private String debugUserId;
+ @Schema(title = "debugId")
+ private Long debugId;
+ private String image;
+ private ThirdPartyBuildDockerInfoCredential credential;
+ private DockerOptions options;
+}
diff --git a/modules/module-ci-environment/pom.xml b/modules/module-ci-environment/pom.xml
index 6594c21..0cc2ec9 100644
--- a/modules/module-ci-environment/pom.xml
+++ b/modules/module-ci-environment/pom.xml
@@ -18,7 +18,7 @@
cd.casic.boot
- module-ci-common
+ module-ci-process-api
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/ci/common/Main.java b/modules/module-ci-environment/src/main/java/cd/casic/ci/common/Main.java
deleted file mode 100644
index 0119f4f..0000000
--- a/modules/module-ci-environment/src/main/java/cd/casic/ci/common/Main.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package cd.casic.ci.common;
-
-public class Main {
- public static void main(String[] args) {
- System.out.println("Hello world!");
- }
-}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/constant/Constants.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/constant/Constants.java
new file mode 100644
index 0000000..fc96178
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/constant/Constants.java
@@ -0,0 +1,36 @@
+package cd.casic.pipeline.environment.constant;
+
+/**
+ * @author by mianbin
+ * @Classname Constants
+ * @Description TODO
+ * @Date 2025/4/8 19:56
+ */
+public final class Constants {
+ public static final long THIRD_PARTY_AGENT_HEARTBEAT_INTERVAL = 5L;
+ public static final String DEFAULT_SYTEM_USER = "devops";
+ public static final String BK_PROJECT_NO_ENVIRONMENT = "bkProjectNoEnvironment"; // 项目下无环境
+ public static final String BK_PROJECT_NO_NODE = "bkProjectNoNode"; // 项目下无节点
+ public static final String T_NODE_NODE_IP = "nodeIp";
+ public static final String T_NODE_HOST_ID = "hostId";
+ public static final String T_NODE_NODE_ID = "nodeId";
+ public static final String T_NODE_NODE_TYPE = "nodeType";
+ public static final String T_NODE_CLOUD_AREA_ID = "cloudAreaId";
+ public static final String T_NODE_NODE_STATUS = "nodeStatus";
+ public static final String T_NODE_AGENT_VERSION = "agentVersion";
+ public static final String T_NODE_AGENT_STATUS = "agentStatus";
+ public static final String T_NODE_PROJECT_ID = "projectId";
+ public static final String T_NODE_CREATED_USER = "createdUser";
+ public static final String T_NODE_OS_TYPE = "osType";
+ public static final String T_NODE_OS_NAME = "osName";
+ public static final String T_NODE_SERVER_ID = "serverId";
+ public static final String T_NODE_OPERATOR = "operator";
+ public static final String T_NODE_BAK_OPERATOR = "bakOperator";
+ public static final String T_ENV_ENV_ID = "envId";
+ public static final String T_ENVIRONMENT_THIRDPARTY_AGENT_NODE_ID = "nodeId";
+ public static final String T_ENVIRONMENT_THIRDPARTY_AGENT_MASTER_VERSION = "masterVersion";
+ public static final String BATCH_TOKEN_HEADER = "X-DEVOPS-AGENT-INSTALL-TOKEN"; // 批量安装agent token的header
+
+ private Constants() {
+ }
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/constant/EnvironmentMessageCode.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/constant/EnvironmentMessageCode.java
new file mode 100644
index 0000000..44b1e10
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/constant/EnvironmentMessageCode.java
@@ -0,0 +1,83 @@
+package cd.casic.pipeline.environment.constant;
+
+/**
+ * @author by mianbin
+ * @Classname EnvironmentMessageCode
+ * @Description TODO
+ * @Date 2025/4/8 19:57
+ */
+public final class EnvironmentMessageCode {
+ public static final String ERROR_ENV_NOT_EXISTS = "2105000"; // 环境管理:[{0}] 环境不存在
+ public static final String ERROR_NODE_INSUFFICIENT_PERMISSIONS = "2105001"; // 环境管理:环境权限不足 [{0}]
+ public static final String ERROR_NODE_NOT_EXISTS = "2105002"; // 环境管理:[{0}] 节点不存在
+ public static final String ERROR_NODE_NAME_DUPLICATE = "2105003"; // 环境管理:环境名称已存在: [{0}]
+ public static final String ERROR_ENV_BUILD_2_DEPLOY_DENY = "2105004"; // 环境管理:构建环境不能修改为部署环境
+ public static final String ERROR_ENV_DEPLOY_2_BUILD_DENY = "2105005"; // 环境管理:部署环境不能修改为构建环境
+ public static final String ERROR_ENV_NO_CREATE_PERMISSSION = "2105006"; // 环境管理:没有环境创建权限
+ public static final String ERROR_ENV_NO_EDIT_PERMISSSION = "2105007"; // 环境管理:没有环境编辑权限
+ public static final String ERROR_ENV_NO_VIEW_PERMISSSION = "2105008"; // 环境管理:没有环境查看权限
+ public static final String ERROR_ENV_NO_DEL_PERMISSSION = "2105009"; // 环境管理:没有环境删除权限
+ public static final String ERROR_ENV_ID_NULL = "2105010"; // 环境管理:环境ID不能为空
+ public static final String ERROR_ENV_NAME_NULL = "2105011"; // 环境管理:环境名称不能为空
+ public static final String ERROR_ENV_NAME_TOO_LONG = "2105012"; // 环境管理:环境名称太长
+ public static final String ERROR_ENV_NODE_HASH_ID_ILLEGAL = "2105013"; // 环境管理:环境下的节点ID不合法
+ public static final String ERROR_NODE_NO_CREATE_PERMISSSION = "2105014"; // 环境管理:没有节点创建权限
+ public static final String ERROR_NODE_NO_EDIT_PERMISSSION = "2105015"; // 环境管理:没有节点编辑权限
+ public static final String ERROR_NODE_NO_VIEW_PERMISSSION = "2105016"; // 环境管理:没有节点查看权限
+ public static final String ERROR_NODE_NO_DEL_PERMISSSION = "2105017"; // 环境管理:没有节点删除权限
+ public static final String ERROR_NODE_AGENT_STATUS_EXCEPTION = "2105018"; // 环境管理:构建机状态异常
+ public static final String ERROR_NODE_AGENT_SECRET_KEY_INVALID = "2105019"; // 环境管理:构建机密钥不对
+ public static final String ERROR_ENV_EXPIRED_DAYS = "2105020"; // 环境管理:有效期不能超过[{0}]天
+ public static final String ERROR_ENV_BUILD_CAN_NOT_ADD_SVR = "2105021"; // 服务器节点[{0}]不能添加到构建环境
+ public static final String ERROR_ENV_DEPLOY_CAN_NOT_ADD_AGENT = "2105022"; // 构建节点[{0}]不能添加到非构建环境
+ public static final String ERROR_NODE_CHANGE_USER_NOT_SUPPORT = "2105023"; // 节点类型【{0}】不支持修改导入人
+ public static final String ERROR_NODE_IMPORT_EXCEED = "2105024"; // 环境管理:导入节点数不能超过配额[{0}]
+ public static final String ERROR_NODE_IP_ILLEGAL_USER = "2105025"; // 环境管理:非法 IP [{0}], 请确认当前用户[{1}]是否是服务器的主备负责人 - 测试机导入|重新导入
+ public static final String ERROR_QUOTA_LIMIT = "2105026"; // 环境管理:配额不足,总量{0}, 已使用: {1}
+ public static final String ERROR_VM_CAN_NOT_DESTROY = "2105027"; // 环境管理:虚拟机状态为:{0}, 不允许销毁!请稍后操作!
+ public static final String ERROR_VM_CAN_NOT_IMAGED = "2105028"; // 环境管理:虚拟机状态为:{0}, 无法制作镜像!
+ public static final String ERROR_NODE_HAD_BEEN_ASSIGN = "2105029"; // 环境管理:节点已被分配,不能重新分配
+ public static final String ERROR_ENV_BCS_NOT_ACTIVED = "2105030"; // 环境管理:项目[{0}]没有开通过BCS虚拟机功能
+ public static final String ERROR_NODE_INFLUX_QUERY_HOST_INFO_FAIL = "2105031"; // 环境管理:查询构建机主机信息失败: {0}
+ public static final String ERROR_NODE_INFLUX_QUERY_CPU_INFO_FAIL = "2105032"; // 环境管理:查询构建机CPU信息失败: {0}
+ public static final String ERROR_NODE_INFLUX_QUERY_MEM_INFO_FAIL = "2105033"; // 环境管理:查询构建机内存信息失败: {0}
+ public static final String ERROR_NODE_INFLUX_QUERY_DISK_INFO_FAIL = "2105034"; // 环境管理:查询构建机磁盘信息失败: {0}
+ public static final String ERROR_NODE_INFLUX_QUERY_NET_INFO_FAIL = "2105035"; // 环境管理:查询构建机网络信息失败: {0}
+ public static final String ERROR_NODE_SHARE_PROJECT_EMPTY = "2105036"; // 环境管理:共享的项目列表为空
+ public static final String ERROR_NODE_SHARE_PROJECT_TYPE_ERROR = "2105037"; // 环境管理:仅构建环境支持共享
+ public static final String ERROR_NODE_NAME_INVALID_CHARACTER = "2105038"; // 环境管理:环境名称包含非法字符@
+ public static final String ERROR_NODE_NAME_OR_ID_INVALID = "2105039"; // 环境管理:获取节点失败,请求节点hash id或别名有误
+ public static final String ERROR_NOT_THIRD_PARTY_BUILD_MACHINE = "2105040"; // 环境管理:这个节点不是第三方构建机
+ public static final String THIRD_PARTY_BUILD_ENVIRONMENT_NOT_EXIST = "2105041"; // 第三方构建机环境不存在
+ public static final String ERROR_NO_PERMISSION_TO_USE_THIRD_PARTY_BUILD_ENV = "2105042"; // 无权限使用第三方构建机环境
+ public static final String ERROR_THIRD_PARTY_BUILD_ENV_NODE_NOT_EXIST = "2105043"; // 第三方构建机环境节点不存在
+ public static final String ERROR_PIPE_NOT_FOUND = "2105044"; // 环境管理:不存在该管道信息
+ public static final String ERROR_NODE_NO_USE_PERMISSSION = "2105045"; // 环境管理:节点[{0}]没有使用权限
+ public static final String ERROR_NODE_IP_ILLEGAL = "2105046"; // 环境管理: 不在CMDB中的IP [{0}]; 无权限的IP [{1}], 请确认当前用户[{2}]或节点导入人[{3}]是否为这些节点的主备负责人 - 脚本执行|文件分发
+ public static final String ERROR_CMDB_INTERFACE_TIME_OUT = "2105047"; // 环境管理: CMDB接口请求超时,请重试
+ public static final String ERROR_CMDB_RESPONSE = "2105048"; // 环境管理: CMDB接口请求异常,请重试
+ public static final String ERROR_SCRIPT_EXECUTE_HOST_EMPTY = "2105049"; // 环境管理: 脚本执行: 主机为空
+ public static final String ERROR_DISTRIBUTE_FILE_EXECUTE_TARGET_HOST_EMPTY = "2105050"; // 环境管理: 文件分发: 执行目标主机为空
+ public static final String ERROR_DISTRIBUTE_FILE_FILE_SOURCE_HOST_EMPTY = "2105051"; // 环境管理: 文件分发: 文件源主机为空
+ public static final String ERROR_ENV_LIST_NODE_NOT_IN_CC_OR_CMDB = "2105052"; // 环境管理: 环境中的[{0}]不在CC/CMDB中
+ public static final String ERROR_NODE_LIST_NODE_NOT_IN_CC_OR_CMDB = "2105053"; // 环境管理: 节点中的[{0}]不在CC/CMDB中
+ public static final String ERROR_JOB_INSTANCE_NOT_BELONG_TO_PROJECT = "2105054"; // 环境管理: 请求的job实例不属于当前项目或已过期(超过一个月)
+ public static final String ERROR_FAIL_TO_CREATE_AGENT_INSTALL_TASK = "2105055"; // 环境管理: 创建Agent安装任务失败:{0}
+ public static final String ERROR_INPUT_TOO_MANY_IP = "2105056"; // 环境管理: 输入的IP数量不可超过{0}
+ public static final String ERROR_NODE_NOT_BELONG_TO_PROJECT = "2105057"; // 环境管理: IP {0} 未被作为节点导入项目 {1},请到【环境管理-节点】导入测试机后重试
+
+ public static final String BK_NORMAL_VERSION = "bkNormalVersion"; // 8核16G(普通版)
+ public static final String BK_INTEL_XEON_SKYLAKE_PROCESSOR = "bkIntelXeonSkylakeProcessor"; // 2.5GHz 64核 Intel Xeon Skylake 6133处理器
+ public static final String BK_MEMORY = "bkMemory"; // 32GB*12 DDR3 内存
+ public static final String BK_SOLID_STATE_DISK = "bkSolidStateDisk"; // {0}GB 固态硬盘
+ public static final String BK_ESTIMATED_DELIVERY_TIME = "bkEstimatedDeliveryTime"; // 预计交付周期:{0}分钟
+ public static final String BK_HIGH_END_VERSION = "bkHighEndVersion"; // 32核64G(高配版)
+ public static final String AGENT_VERSION = "agentVersion"; // Agent版本
+ public static final String AGENT_STATUS = "agentStatus"; // Agent版本
+ public static final String OS_TYPE = "osType"; // 操作系统
+ public static final String NODE_USAGE_BUILD = "nodeUsageBuild"; // 构建
+ public static final String NODE_USAGE_DEPLOYMENT = "nodeUsageDeployment"; // 部署
+
+ private EnvironmentMessageCode() {
+ }
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/AddSharedProjectInfo.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/AddSharedProjectInfo.java
new file mode 100644
index 0000000..655cdd2
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/AddSharedProjectInfo.java
@@ -0,0 +1,41 @@
+package cd.casic.pipeline.environment.pojo;
+
+import cd.casic.pipeline.environment.pojo.enums.SharedEnvType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author by mianbin
+ * @Classname AddSharedProjectInfo
+ * @Description TODO
+ * @Date 2025/4/8 19:58
+ */
+@Getter
+@AllArgsConstructor
+@Schema(title = "VM虚拟机配额")
+public class AddSharedProjectInfo {
+ @Deprecated
+ @Schema(title = "工蜂项目ID", required = false)
+ private final String gitProjectId;
+
+ @Schema(title = "项目名称,工蜂项目则为groupName/projectName", required = true)
+ private final String name;
+
+ @Schema(title = "类型,预留", required = true)
+ private final SharedEnvType type;
+
+ @Schema(title = "项目ID", required = true)
+ private final String projectId;
+
+ @SuppressWarnings("TooGenericExceptionThrown")
+ public String getFinalProjectId() {
+ if (projectId != null) {
+ return projectId;
+ }
+ if (gitProjectId != null) {
+ return gitProjectId;
+ }
+ throw new RuntimeException("Project id must not null.");
+ }
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/AgentPipelineRefInfo.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/AgentPipelineRefInfo.java
new file mode 100644
index 0000000..96c9ef0
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/AgentPipelineRefInfo.java
@@ -0,0 +1,23 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+@Schema(title = "agent流水线引用信息")
+public class AgentPipelineRefInfo {
+ @Schema(title = "agentHashId", required = true)
+ private final String agentHashId;
+ @Schema(title = "流水线ID", required = true)
+ private final String pipelineId;
+ @Schema(title = "流水线名称", required = true)
+ private final String pipelineName;
+ @Schema(title = "Vm Seq ID", required = true)
+ private final String vmSeqId;
+ @Schema(title = "Job ID", required = true)
+ private final String jobId;
+ @Schema(title = "Job Name", required = true)
+ private final String jobName;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/AgentPipelineRefRequest.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/AgentPipelineRefRequest.java
new file mode 100644
index 0000000..e1239f1
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/AgentPipelineRefRequest.java
@@ -0,0 +1,21 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.List;
+
+@Getter
+@AllArgsConstructor
+@Schema(title = "agent流水线引用请求")
+public class AgentPipelineRefRequest {
+ @Schema(title = "action", required = true)
+ private final String action;
+
+ @Schema(title = "pipelineId", required = true)
+ private final String pipelineId;
+
+ @Schema(title = "PipelineId", required = true)
+ private final List pipelineRefInfos;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/AgentUpgradeType.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/AgentUpgradeType.java
new file mode 100644
index 0000000..f53304b
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/AgentUpgradeType.java
@@ -0,0 +1,29 @@
+package cd.casic.pipeline.environment.pojo;
+
+import lombok.Getter;
+
+@Getter
+public enum AgentUpgradeType {
+ WORKER,
+ GO_AGENT,
+ JDK,
+ DOCKER_INIT_FILE;
+
+ public static AgentUpgradeType find(String type) {
+ if (type == null) {
+ return null;
+ }
+ switch (type) {
+ case "WORKER":
+ return WORKER;
+ case "GO_AGENT":
+ return GO_AGENT;
+ case "JDK":
+ return JDK;
+ case "DOCKER_INIT_FILE":
+ return DOCKER_INIT_FILE;
+ default:
+ return null;
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/CcNode.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/CcNode.java
new file mode 100644
index 0000000..8999fd2
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/CcNode.java
@@ -0,0 +1,35 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+@Schema(title = "CC节点信息")
+public class CcNode {
+ @Schema(title = "节点名称", required = true)
+ private String name;
+
+ @Schema(title = "固资编号", required = true)
+ private String assetID;
+
+ @Schema(title = "责任人", required = true)
+ private String operator;
+
+ @Schema(title = "备份责任人", required = true)
+ private String bakOperator;
+
+ @Schema(title = "节点IP", required = true)
+ private String ip;
+
+ @Schema(title = "显示IP", required = true)
+ private String displayIp;
+
+ @Schema(title = "Agent状态", required = true)
+ private Boolean agentStatus;
+
+ @Schema(title = "操作系统", required = true)
+ private String osName;
+
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/CmdbNode.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/CmdbNode.java
new file mode 100644
index 0000000..832ee1d
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/CmdbNode.java
@@ -0,0 +1,55 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+@Schema(title = "CMDB节点信息")
+public class CmdbNode {
+ @Schema(title = "节点名称", required = true)
+ private final String name;
+
+ @Schema(title = "责任人", required = true)
+ private final String operator;
+
+ @Schema(title = "备份责任人", required = true)
+ private final String bakOperator;
+
+ @Schema(title = "节点IP", required = true)
+ private final String ip;
+
+ @Schema(title = "显示IP", required = true)
+ private final String displayIp;
+
+ @Schema(title = "操作系统", required = true)
+ private final String osName;
+
+ @Schema(title = "所属业务")
+ private final Long bizId;
+
+ @Schema(title = "节点状态")
+ private String nodeStatus;
+
+ @Schema(title = "是否已导入")
+ private Boolean importStatus;
+
+ @Schema(title = "主机id")
+ private final Long serverId;
+
+ public CmdbNode(String name, String operator, String bakOperator, String ip,
+ String displayIp, String osName, Long bizId, String nodeStatus,
+ Boolean importStatus, Long serverId) {
+ this.name = name;
+ this.operator = operator;
+ this.bakOperator = bakOperator;
+ this.ip = ip;
+ this.displayIp = displayIp;
+ this.osName = osName;
+ this.bizId = bizId;
+ this.nodeStatus = nodeStatus;
+ this.importStatus = importStatus;
+ this.serverId = serverId;
+ }
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/DevCloudImageParam.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/DevCloudImageParam.java
new file mode 100644
index 0000000..e8188c1
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/DevCloudImageParam.java
@@ -0,0 +1,19 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+@Schema(title = "DevCloud制作镜像参数")
+public class DevCloudImageParam {
+ @Schema(title = "镜像名", required = true)
+ private final String name;
+
+ @Schema(title = "镜像TAG", required = true)
+ private final String tag;
+
+ @Schema(title = "描述", required = true)
+ private final String description;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/DevCloudModel.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/DevCloudModel.java
new file mode 100644
index 0000000..0d5c5e0
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/DevCloudModel.java
@@ -0,0 +1,31 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+
+import java.util.List;
+
+@Getter
+@Schema(title = "DevCloud容器机型")
+public class DevCloudModel {
+ @Schema(title = "moduleId", required = true)
+ private String moduleId;
+
+ @Schema(title = "机型名称", required = true)
+ private String moduleName;
+
+ @Schema(title = "CPU", required = true)
+ private Integer cpu;
+
+ @Schema(title = "Memory", required = true)
+ private String memory;
+
+ @Schema(title = "Disk", required = true)
+ private String disk;
+
+ @Schema(title = "description", required = true)
+ private List description;
+
+ @Schema(title = "description", required = true)
+ private String produceTime;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/DevCloudVmParam.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/DevCloudVmParam.java
new file mode 100644
index 0000000..c81fce9
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/DevCloudVmParam.java
@@ -0,0 +1,26 @@
+package cd.casic.pipeline.environment.pojo;
+
+import cd.casic.ci.common.pipeline.pojo.Zone;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+@Schema(title = "DevCloud虚拟机参数")
+public class DevCloudVmParam {
+ @Schema(title = "镜像Id", required = true)
+ private String imageId;
+
+ @Schema(title = "机型", required = true)
+ private String modelId;
+
+ @Schema(title = "数量", required = true)
+ private Integer instanceCount;
+
+ @Schema(title = "区域", required = true)
+ private Zone zone;
+
+ @Schema(title = "有效期", required = true)
+ private Integer validity;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/DisplayName.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/DisplayName.java
new file mode 100644
index 0000000..97c25b4
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/DisplayName.java
@@ -0,0 +1,11 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@Schema(title = "显示名称")
+public class DisplayName {
+ @Schema(title = "显示名称", required = true)
+ private final String displayName;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvCreateInfo.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvCreateInfo.java
new file mode 100644
index 0000000..8e5f689
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvCreateInfo.java
@@ -0,0 +1,32 @@
+package cd.casic.pipeline.environment.pojo;
+
+import cd.casic.pipeline.environment.pojo.enums.EnvType;
+import cd.casic.pipeline.environment.pojo.enums.NodeSource;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.List;
+
+@Getter
+@AllArgsConstructor
+@Schema(title = "环境信息")
+public class EnvCreateInfo {
+ @Schema(title = "环境名称", required = true)
+ private final String name;
+
+ @Schema(title = "环境描述", required = true)
+ private final String desc;
+
+ @Schema(title = "环境类型(开发环境{DEV}|测试环境{TEST}|构建环境{BUILD})", required = true)
+ private final EnvType envType;
+
+ @Schema(title = "环境变量", required = false)
+ private final List envVars;
+
+ @Schema(title = "节点来源(已有节点{EXISTING}|快速生成{CREATE})", required = true)
+ private final NodeSource source;
+
+ @Schema(title = "节点 HashId 列表", required = false)
+ private final List nodeHashIds;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvUpdateInfo.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvUpdateInfo.java
new file mode 100644
index 0000000..9668c75
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvUpdateInfo.java
@@ -0,0 +1,25 @@
+package cd.casic.pipeline.environment.pojo;
+
+import cd.casic.pipeline.environment.pojo.enums.EnvType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.Getter;
+
+import java.util.List;
+
+@Getter
+@Data
+@Schema(title = "环境基本信息")
+public class EnvUpdateInfo {
+ @Schema(title = "环境名称", required = true)
+ private final String name;
+
+ @Schema(title = "环境描述", required = true)
+ private final String desc;
+
+ @Schema(title = "环境类型(构建环境{BUILD}|部署-开发/测试环境{DEV}|部署-生产环境{PROD}|)", required = true)
+ private final EnvType envType;
+
+ @Schema(title = "环境变量", required = false)
+ private final List envVars;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvVar.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvVar.java
new file mode 100644
index 0000000..bccdd95
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvVar.java
@@ -0,0 +1,21 @@
+package cd.casic.pipeline.environment.pojo;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+@Schema(title = "环境变量")
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class EnvVar {
+ @Schema(title = "变量名", required = true)
+ private final String name;
+
+ @Schema(title = "变量值", required = true)
+ private final String value;
+
+ @Schema(title = "是否安全变量", required = true)
+ private final Boolean secure;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvWithNode.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvWithNode.java
new file mode 100644
index 0000000..4867004
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvWithNode.java
@@ -0,0 +1,22 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+@Schema(title = "环境信息-Node数量")
+public class EnvWithNode {
+ @Schema(title = "环境 Id", required = true)
+ private Long envId;
+
+ @Schema(title = "环境名称", required = true)
+ private String envName;
+
+ @Schema(title = "源项目", required = false)
+ private String sharedProjectId;
+
+ @Schema(title = "分享人", required = false)
+ private String sharedUserId;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvWithNodeCount.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvWithNodeCount.java
new file mode 100644
index 0000000..7800eb7
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvWithNodeCount.java
@@ -0,0 +1,36 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@Schema(title = "环境信息-Node数量")
+public class EnvWithNodeCount {
+ @Schema(title = "环境所属项目Id", required = true)
+ private final String projectId;
+
+ @Schema(title = "环境 HashId", required = true)
+ private final String envHashId;
+
+ @Schema(title = "环境名称", required = true)
+ private final String name;
+
+ @Schema(title = "正常节点数量", required = true)
+ private final Integer normalNodeCount;
+
+ @Schema(title = "异常节点数量", required = true)
+ private final Integer abnormalNodeCount;
+
+ @Schema(title = "源项目", required = false)
+ private final String sharedProjectId;
+
+ @Schema(title = "分享人", required = false)
+ private final String sharedUserId;
+
+ @Schema(title = "节点hash id", required = false)
+ private final List nodeHashIds;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvWithPermission.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvWithPermission.java
new file mode 100644
index 0000000..db7faeb
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvWithPermission.java
@@ -0,0 +1,55 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@Schema(title = "环境信息(权限)")
+public class EnvWithPermission {
+ @Schema(title = "环境 HashId", required = true)
+ private String envHashId;
+
+ @Schema(title = "环境名称", required = true)
+ private String name;
+
+ @Schema(title = "环境描述", required = true)
+ private String desc;
+
+ @Schema(title = "环境类型(开发环境{DEV}|测试环境{TEST}|构建环境{BUILD})", required = true)
+ private String envType;
+
+ @Schema(title = "节点数量", required = false)
+ private Integer nodeCount;
+
+ @Schema(title = "环境变量", required = true)
+ private List envVars;
+
+ @Schema(title = "创建人", required = true)
+ private String createdUser;
+
+ @Schema(title = "创建时间", required = true)
+ private Long createdTime;
+
+ @Schema(title = "更新人", required = true)
+ private String updatedUser;
+
+ @Schema(title = "更新时间", required = true)
+ private Long updatedTime;
+
+ @Schema(title = "是否可以编辑", required = false)
+ private Boolean canEdit;
+
+ @Schema(title = "是否可以删除", required = false)
+ private Boolean canDelete;
+
+ @Schema(title = "是否可以使用", required = false)
+ private Boolean canUse;
+
+ @Schema(title = "项目名称", required = false)
+ private String projectName;
+
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvironmentId.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvironmentId.java
new file mode 100644
index 0000000..72045d8
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/EnvironmentId.java
@@ -0,0 +1,11 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@Schema(title = "环境-ID")
+public class EnvironmentId {
+ @Schema(title = "环境哈希ID", required = true)
+ private final String hashId;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/NodeBaseInfo.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/NodeBaseInfo.java
new file mode 100644
index 0000000..48a0352
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/NodeBaseInfo.java
@@ -0,0 +1,61 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+@Schema(title = "NodeBaseInfo-节点信息(权限)")
+public class NodeBaseInfo {
+ @Schema(title = "环境 HashId", required = true)
+ private String nodeHashId;
+
+ @Schema(title = "节点 Id", required = true)
+ private String nodeId;
+
+ @Schema(title = "节点名称", required = true)
+ private String name;
+
+ @Schema(title = "IP", required = true)
+ private String ip;
+
+ @Schema(title = "节点状态", required = true)
+ private String nodeStatus;
+
+ @Schema(title = "agent状态", required = false)
+ private Boolean agentStatus;
+
+ @Schema(title = "节点类型", required = true)
+ private String nodeType;
+
+ @Schema(title = "操作系统", required = false)
+ private String osName;
+
+ @Schema(title = "创建人", required = true)
+ private String createdUser;
+
+ @Schema(title = "责任人", required = false)
+ private String operator;
+
+ @Schema(title = "备份责任人", required = false)
+ private String bakOperator;
+
+ @Schema(title = "网关地域", required = false)
+ private String gateway;
+
+ @Schema(title = "显示名称", required = false)
+ private String displayName;
+
+ @Schema(title = "所属业务, 默认-1表示没有绑定业务")
+ private Long bizId;
+
+ @Schema(title = "当前环境是否启用这个 node")
+ private Boolean envEnableNode;
+
+ @Schema(title = "最后更新时间")
+ private Long lastModifyTime;
+
+ @Schema(title = "机型")
+ private String size;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/NodeDevCloudInfo.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/NodeDevCloudInfo.java
new file mode 100644
index 0000000..fa33216
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/NodeDevCloudInfo.java
@@ -0,0 +1,41 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+@Schema(title = "devCloud节点信息")
+public class NodeDevCloudInfo {
+ @Schema(title = "环境 HashId", required = true)
+ private final String nodeHashId;
+
+ @Schema(title = "节点 Id", required = true)
+ private final String nodeId;
+
+ @Schema(title = "节点名称", required = true)
+ private final String name;
+
+ @Schema(title = "IP", required = true)
+ private final String ip;
+
+ @Schema(title = "节点状态", required = true)
+ private final String nodeStatus;
+
+ @Schema(title = "agent状态", required = false)
+ private final Boolean agentStatus;
+
+ @Schema(title = "节点类型", required = true)
+ private final String nodeType;
+
+ @Schema(title = "操作系统", required = false)
+ private final String osName;
+
+ @Schema(title = "创建人", required = true)
+ private final String createdUser;
+
+ @Schema(title = "projectId", required = false)
+ private final String projectId;
+
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/NodePage.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/NodePage.java
new file mode 100644
index 0000000..dda7706
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/NodePage.java
@@ -0,0 +1,18 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@Schema(title = "节点(分页)")
+public class NodePage {
+ @Schema(title = "节点总数", required = true)
+ private final Integer total;
+
+ @Schema(title = "节点详情", required = true)
+ private final List data;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/NodeWithPermission.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/NodeWithPermission.java
new file mode 100644
index 0000000..a4359ab
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/NodeWithPermission.java
@@ -0,0 +1,112 @@
+package cd.casic.pipeline.environment.pojo;
+
+import cd.casic.pipeline.environment.pojo.thirdpartyagent.AgentBuildDetail;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.List;
+
+@Getter
+@AllArgsConstructor
+@Schema(title = "NodeWithPermission-节点信息(权限)")
+public class NodeWithPermission {
+ @Schema(title = "环境 HashId", required = true)
+ private final String nodeHashId;
+
+ @Schema(title = "节点 Id", required = true)
+ private final String nodeId;
+
+ @Schema(title = "节点名称", required = true)
+ private final String name;
+
+ @Schema(title = "IP", required = true)
+ private final String ip;
+
+ @Schema(title = "节点状态", required = true)
+ private final String nodeStatus;
+
+ @Schema(title = "节点类型", required = true)
+ private final String nodeType;
+
+ @Schema(title = "操作系统", required = false)
+ private final String osName;
+
+ @Schema(title = "创建人", required = true)
+ private final String createdUser;
+
+ @Schema(title = "责任人", required = false)
+ private final String operator;
+
+ @Schema(title = "备份责任人", required = false)
+ private final String bakOperator;
+
+ @Schema(title = "是否可以使用", required = false)
+ private final Boolean canUse;
+
+ @Schema(title = "是否可以编辑", required = false)
+ private final Boolean canEdit;
+
+ @Schema(title = "是否可以删除", required = false)
+ private final Boolean canDelete;
+
+ @Schema(title = "是否可以查看", required = false)
+ private final Boolean canView;
+
+ @Schema(title = "网关地域", required = false)
+ private final String gateway;
+
+ @Schema(title = "显示名称", required = false)
+ private final String displayName;
+
+ @Schema(title = "创建/导入时间", required = false)
+ private final String createTime;
+
+ @Schema(title = "最后修改时间", required = false)
+ private final String lastModifyTime;
+
+ @Schema(title = "最后修改人", required = false)
+ private final String lastModifyUser;
+
+ @Schema(title = "所属业务, 默认-1表示没有绑定业务")
+ private final Long bizId;
+
+ @Schema(title = "流水线Job引用数")
+ private final Integer pipelineRefCount;
+
+ @Schema(title = "流水线Job引用数")
+ private final String lastBuildTime;
+
+ @Schema(title = "agent状态", required = true)
+ private final Boolean agentStatus;
+
+ @Schema(title = "agent版本")
+ private final String agentVersion;
+
+ @Schema(title = "agent hash id")
+ private final String agentHashId;
+
+ @Schema(title = "云区域ID")
+ private final Long cloudAreaId;
+
+ @Schema(title = "操作系统类型")
+ private final String osType;
+
+ @Schema(title = "hostID")
+ private final Long bkHostId;
+
+ @Schema(title = "job任务ID")
+ private final Long taskId;
+
+ @Schema(title = "主机serverId")
+ private final Long serverId;
+
+ @Schema(title = "机型")
+ private final String size;
+
+ @Schema(title = "该节点所属环境名")
+ private final List envNames;
+
+ @Schema(title = "最近构建信息")
+ private AgentBuildDetail latestBuildDetail;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/ProjectConfig.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/ProjectConfig.java
new file mode 100644
index 0000000..f7a2573
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/ProjectConfig.java
@@ -0,0 +1,35 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+@Schema(title = "项目配置")
+public class ProjectConfig {
+ @Schema(title = "项目Id", required = true)
+ private String projectId;
+
+ @Schema(title = "更新人", required = true)
+ private String updatedUser;
+
+ @Schema(title = "更新时间", required = true)
+ private Long updatedTime;
+
+ @Schema(title = "允许使用BCS虚拟机功能", required = true)
+ private Boolean bcsVmEnabled;
+
+ @Schema(title = "BCS虚拟机配额", required = true)
+ private Integer bcsVmQuota;
+
+ @Schema(title = "导入服务器配额", required = true)
+ private Integer importQuota;
+
+ @Schema(title = "允许使用DevCloud功能", required = true)
+ private Boolean devCloudEnable;
+
+ @Schema(title = "DevCloud配额", required = true)
+ private Integer devCloudQuota;
+
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/ProjectConfigPage.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/ProjectConfigPage.java
new file mode 100644
index 0000000..5a38431
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/ProjectConfigPage.java
@@ -0,0 +1,18 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@Schema(title = "项目配置(分页)")
+public class ProjectConfigPage {
+ @Schema(title = "projectConfig总数", required = true)
+ private final Integer total;
+
+ @Schema(title = "projectConfig详情", required = true)
+ private final List data;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/ProjectConfigParam.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/ProjectConfigParam.java
new file mode 100644
index 0000000..cec3e2d
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/ProjectConfigParam.java
@@ -0,0 +1,32 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+@Schema(title = "项目配置")
+public class ProjectConfigParam {
+ @Schema(title = "项目Id", required = true)
+ private String projectId;
+
+ @Schema(title = "更新人", required = true)
+ private String updatedUser;
+
+ @Schema(title = "允许使用BCS虚拟机功能", required = true)
+ private Boolean bcsVmEnabled;
+
+ @Schema(title = "BCS虚拟机配额", required = true)
+ private Integer bcsVmQuota;
+
+ @Schema(title = "导入服务器配额", required = true)
+ private Integer importQuota;
+
+ @Schema(title = "允许使用DevCloud功能", required = true)
+ private Boolean devCloudEnable;
+
+ @Schema(title = "DevCloud配额", required = true)
+ private Integer devCloudQuota;
+
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/ProjectInfo.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/ProjectInfo.java
new file mode 100644
index 0000000..b6c68e0
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/ProjectInfo.java
@@ -0,0 +1,35 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+@Schema(title = "VM虚拟机配额")
+public class ProjectInfo {
+ @Schema(title = "允许使用BCS虚拟机功能", required = true)
+ private final Boolean bcsVmEnabled;
+
+ @Schema(title = "BCS虚拟机配额", required = true)
+ private final Integer bcsVmQuota;
+
+ @Schema(title = "BCS虚拟机已用数量", required = true)
+ private final Integer bcsVmUsedCount;
+
+ @Schema(title = "BCS虚拟机可用数量", required = true)
+ private final Integer bcsVmRestCount;
+
+ @Schema(title = "导入服务器配额", required = true)
+ private final Integer importQuota;
+
+ @Schema(title = "允许使用DevCloud虚拟机功能", required = true)
+ private final Boolean devCloudVmEnabled;
+
+ @Schema(title = "DevCloud虚拟机配额", required = true)
+ private final Integer devCloudVmQuota;
+
+ @Schema(title = "DevCloud虚拟机已用数量", required = true)
+ private final Integer devCloudVmUsedCount;
+
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/SharedProjectInfo.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/SharedProjectInfo.java
new file mode 100644
index 0000000..3f1b5fe
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/SharedProjectInfo.java
@@ -0,0 +1,33 @@
+package cd.casic.pipeline.environment.pojo;
+
+import cd.casic.pipeline.environment.pojo.enums.SharedEnvType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+@Schema(title = "VM虚拟机配额")
+public class SharedProjectInfo {
+ @Schema(title = "蓝盾项目Id", required = true)
+ private String projectId;
+
+ @Schema(title = "工蜂项目ID", required = true)
+ private String gitProjectId;
+
+ @Schema(title = "项目名称,工蜂项目则为groupName/projectName", required = true)
+ private String name;
+
+ @Schema(title = "类型,预留", required = true)
+ private SharedEnvType type;
+
+ @Schema(title = "导入服务器配额", required = true)
+ private String creator;
+
+ @Schema(title = "允许使用DevCloud虚拟机功能", required = true)
+ private Long createTime;
+
+ @Schema(title = "DevCloud虚拟机配额", required = true)
+ private Long updateTime;
+
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/SharedProjectInfoWrap.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/SharedProjectInfoWrap.java
new file mode 100644
index 0000000..da0b1c4
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/SharedProjectInfoWrap.java
@@ -0,0 +1,17 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@Schema(title = "共享的项目列表")
+public class SharedProjectInfoWrap {
+ @Parameter(description = "共享的项目列表", required = true)
+ private final List sharedProjects;
+
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/TEnvShareProjectInfo.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/TEnvShareProjectInfo.java
new file mode 100644
index 0000000..1ef32da
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/TEnvShareProjectInfo.java
@@ -0,0 +1,35 @@
+package cd.casic.pipeline.environment.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@Schema(title = "T_ENV_SHARE_PROJECT POJO")
+public class TEnvShareProjectInfo {
+ @Schema(title = "环境ID")
+ private Long envId;
+
+ @Schema(title = "名称")
+ private String envName;
+
+ @Schema(title = "主项目ID")
+ private String mainProjectId;
+
+ @Schema(title = "共享的目标项目ID")
+ private String sharedProjectId;
+
+ @Schema(title = "目标项目名称")
+ private String sharedProjectName;
+
+ @Schema(title = "类型")
+ private String type;
+
+ @Schema(title = "创建者")
+ private String creator;
+
+ private LocalDateTime createTime;
+
+ private LocalDateTime updateTime;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/EnvType.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/EnvType.java
new file mode 100644
index 0000000..b282c20
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/EnvType.java
@@ -0,0 +1,17 @@
+package cd.casic.pipeline.environment.pojo.enums;
+
+import lombok.Getter;
+
+/**
+ * @author by mianbin
+ * @Classname EnvType
+ * @Description TODO
+ * @Date 2025/4/8 19:59
+ */
+@Getter
+public enum EnvType {
+ DEV,
+ TEST,
+ PROD,
+ BUILD
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/NodeSource.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/NodeSource.java
new file mode 100644
index 0000000..48a2e5a
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/NodeSource.java
@@ -0,0 +1,16 @@
+package cd.casic.pipeline.environment.pojo.enums;
+
+import lombok.Getter;
+
+/**
+ * @author by mianbin
+ * @Classname NodeSource
+ * @Description TODO
+ * @Date 2025/4/8 20:00
+ */
+@Getter
+public enum NodeSource {
+ EXISTING,
+ CREATE,
+ CMDB
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/NodeStatus.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/NodeStatus.java
new file mode 100644
index 0000000..44a6327
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/NodeStatus.java
@@ -0,0 +1,67 @@
+package cd.casic.pipeline.environment.pojo.enums;
+
+import lombok.Getter;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+
+/**
+ * @author by mianbin
+ * @Classname NodeStatus
+ * @Description TODO
+ * @Date 2025/4/8 20:00
+ */
+@Getter
+public enum NodeStatus {
+ NORMAL("normal"), // 正常
+ ABNORMAL("abnormal"), // 异常(节点类型:构建 - 蓝盾agent异常,部署 - GSE agent异常)
+ NOT_INSTALLED("notInstall"), // 未安装agent
+ DELETED("deleted"), // 已删除
+ LOST("lost"), // 失联
+ CREATING("creating"), // 正在创建中
+ RUNNING("running"), // 安装Agent
+ STARTING("starting"), // 正在开机中
+ STOPPING("stopping"), // 正在关机中
+ STOPPED("stopped"), // 已关机
+ RESTARTING("restarting"), // 正在重启中
+ DELETING("deleting"), // 正在销毁中
+ BUILDING_IMAGE("buildingImage"), // 正在制作镜像中
+ BUILD_IMAGE_SUCCESS("buildImageSuccess"), // 制作镜像成功
+ BUILD_IMAGE_FAILED("buildImageFailed"), // 制作镜像失败
+ NOT_IN_CC("notInCC"), // CC中不存在(仅部署类型节点)
+ NOT_IN_CMDB("notInCmdb"), // CMDB中不存在(仅部署类型节点)
+ UNKNOWN("unknown"); // 未知
+
+ private final String statusName;
+
+ NodeStatus(String statusName) {
+ this.statusName = statusName;
+ }
+
+ public static String getStatusName(String status) {
+ for (NodeStatus nodeStatus : values()) {
+ if (nodeStatus.name().equals(status.toUpperCase(Locale.getDefault()))) {
+ return MessageFormat.format("envNodeStatus.{0}", nodeStatus.name());
+ }
+ }
+ return MessageFormat.format("envNodeStatus.{0}", UNKNOWN.name());
+ }
+
+ public static NodeStatus parseByName(String name) {
+ for (NodeStatus nodeStatus : values()) {
+ if (nodeStatus.name().equals(name)) {
+ return nodeStatus;
+ }
+ }
+ return UNKNOWN;
+ }
+
+ public static NodeStatus parseByStatusName(String statusName) {
+ for (NodeStatus nodeStatus : values()) {
+ if (nodeStatus.getStatusName().equals(statusName)) {
+ return nodeStatus;
+ }
+ }
+ return UNKNOWN;
+ }
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/NodeType.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/NodeType.java
new file mode 100644
index 0000000..4142569
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/NodeType.java
@@ -0,0 +1,47 @@
+package cd.casic.pipeline.environment.pojo.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author by mianbin
+ * @Classname NodeType
+ * @Description TODO
+ * @Date 2025/4/8 20:03
+ */
+@Getter
+@AllArgsConstructor
+public enum NodeType {
+ CMDB("CMDB"),
+ DEVCLOUD("DevCloud虚拟机"),
+ THIRDPARTY("第三方构建机"),
+ OTHER("其他"),
+ UNKNOWN("未知");
+
+ private final String typeName;
+
+ public static List coreTypesName() {
+ return Arrays.asList(CMDB.name(), DEVCLOUD.name(), THIRDPARTY.name(), OTHER.name(), UNKNOWN.name());
+ }
+
+ public static String getTypeName(String nodeType) {
+ for (NodeType type : values()) {
+ if (type.name().equals(nodeType)) {
+ return type.getTypeName();
+ }
+ }
+ return UNKNOWN.getTypeName();
+ }
+
+ public static NodeType parseByTypeName(String typeName) {
+ for (NodeType type : values()) {
+ if (type.getTypeName().equals(typeName)) {
+ return type;
+ }
+ }
+ return UNKNOWN;
+ }
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/OsType.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/OsType.java
new file mode 100644
index 0000000..0546382
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/OsType.java
@@ -0,0 +1,20 @@
+package cd.casic.pipeline.environment.pojo.enums;
+
+import lombok.Getter;
+
+/**
+ * @author by mianbin
+ * @Classname OsType
+ * @Description TODO
+ * @Date 2025/4/8 20:04
+ */
+@Getter
+public enum OsType { // CC中能查到的所有os类型+OTHER
+ LINUX,
+ WINDOWS,
+ AIX,
+ SOLARIS,
+ UNIX,
+ FREEBSD,
+ OTHER
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/SharedEnvType.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/SharedEnvType.java
new file mode 100644
index 0000000..8234566
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/enums/SharedEnvType.java
@@ -0,0 +1,12 @@
+package cd.casic.pipeline.environment.pojo.enums;
+
+/**
+ * @author by mianbin
+ * @Classname SharedEnvType
+ * @Description TODO
+ * @Date 2025/4/8 20:16
+ */
+public enum SharedEnvType {
+ PROJECT,
+ GROUP
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/AgentBuildDetail.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/AgentBuildDetail.java
new file mode 100644
index 0000000..029f5c1
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/AgentBuildDetail.java
@@ -0,0 +1,44 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+/**
+ * @author by mianbin
+ * @Classname AgentBuildDetail
+ * @Description TODO
+ * @Date 2025/4/8 21:13
+ */
+
+@Data
+public class AgentBuildDetail {
+ @Schema(title = "节点 Hash ID", required = true)
+ private String nodeId;
+ @Schema(title = "Agent Hash ID", required = true)
+ private String agentId;
+ @Schema(title = "项目ID", required = true)
+ private String projectId;
+ @Schema(title = "流水线ID", required = true)
+ private String pipelineId;
+ @Schema(title = "流水线名称", required = true)
+ private String pipelineName;
+ @Schema(title = "构建ID", required = true)
+ private String buildId;
+ @Schema(title = "构建号", required = true)
+ private int buildNumber;
+ @Schema(title = "VM_SET_ID", required = true)
+ private String vmSetId;
+ @Schema(title = "构建任务名称", required = true)
+ private String taskName;
+ @Schema(title = "状态", required = true)
+ private String status;
+ @Schema(title = "创建时间", required = true)
+ private Date createdTime;
+ @Schema(title = "更新时间", required = true)
+ private Date updatedTime;
+ @Schema(title = "工作空间", required = true)
+ private String workspace;
+ @Schema(title = "agent任务", required = false)
+ private AgentTask agentTask;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/AgentPipelineRef.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/AgentPipelineRef.java
new file mode 100644
index 0000000..d032111
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/AgentPipelineRef.java
@@ -0,0 +1,36 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author by mianbin
+ * @Classname AgentPipelineRef
+ * @Description TODO
+ * @Date 2025/4/8 21:13
+ */
+@Data
+public class AgentPipelineRef {
+ @Schema(title = "Node ID", required = true)
+ private Long nodeId;
+ @Schema(title = "Node Hash ID", required = true)
+ private String nodeHashId;
+ @Schema(title = "Agent ID", required = true)
+ private Long agentId;
+ @Schema(title = "Agent Hash ID", required = true)
+ private String agentHashId;
+ @Schema(title = "项目ID", required = true)
+ private String projectId;
+ @Schema(title = "流水线ID", required = true)
+ private String pipelineId;
+ @Schema(title = "流水线名称", required = true)
+ private String pipelineName;
+ @Schema(title = "Vm Seq ID", required = true)
+ private String vmSeqId;
+ @Schema(title = "Job ID", required = true)
+ private String jobId;
+ @Schema(title = "Job Name", required = true)
+ private String jobName;
+ @Schema(title = "上次构建时间", required = false)
+ private String lastBuildTime;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/AgentShared.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/AgentShared.java
new file mode 100644
index 0000000..6946be8
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/AgentShared.java
@@ -0,0 +1,19 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author by mianbin
+ * @Classname AgentShared
+ * @Description TODO
+ * @Date 2025/4/8 21:13
+ */
+@Data
+public class AgentShared {
+ private Long agentId;
+ private String mainProjectId;
+ private List sharedProjectId;
+ private String userId;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/AgentTask.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/AgentTask.java
new file mode 100644
index 0000000..cba0316
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/AgentTask.java
@@ -0,0 +1,16 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author by mianbin
+ * @Classname AgentTask
+ * @Description TODO
+ * @Date 2025/4/8 21:14
+ */
+@Data
+public class AgentTask {
+ @Schema(title = "Task状态", required = true)
+ private String status;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/AskHeartbeatResponse.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/AskHeartbeatResponse.java
new file mode 100644
index 0000000..d5aeb8c
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/AskHeartbeatResponse.java
@@ -0,0 +1,36 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author by mianbin
+ * @Classname AskHeartbeatResponse
+ * @Description TODO
+ * @Date 2025/4/8 21:14
+ */
+@Data
+public class AskHeartbeatResponse {
+ @Schema(title = "主版本")
+ private String masterVersion;
+ @Schema(title = "从属版本")
+ private String slaveVersion;
+ @Schema(title = "构建机状态")
+ private String agentStatus;
+ @Schema(title = "通道数量")
+ private int parallelTaskCount;
+ @Schema(title = "环境变量")
+ private Map envs;
+ @Schema(title = "网关地址")
+ private String gateway;
+ @Schema(title = "文件网关路径")
+ private String fileGateway;
+ @Schema(title = "Agent的一些属性配置")
+ private Map props;
+ @Schema(title = "docker最大任务数量")
+ private int dockerParallelTaskCount;
+ @Schema(title = "用户国际化语言")
+ private String language;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/BatchFetchAgentData.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/BatchFetchAgentData.java
new file mode 100644
index 0000000..ce5d49e
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/BatchFetchAgentData.java
@@ -0,0 +1,20 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Set;
+
+/**
+ * @author by mianbin
+ * @Classname BatchFetchAgentData
+ * @Description TODO
+ * @Date 2025/4/8 21:14
+ */
+@Data
+public class BatchFetchAgentData {
+ @Schema(title = "Node Hash ID列表,和 agentHashId 选其一即可", required = false)
+ private Set nodeHashIds;
+ @Schema(title = "agent Hash ID列表,和 nodeHashId 选其一即可", required = false)
+ private Set agentHashIds;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/EnvNodeAgent.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/EnvNodeAgent.java
new file mode 100644
index 0000000..6525c9c
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/EnvNodeAgent.java
@@ -0,0 +1,16 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import lombok.Data;
+
+/**
+ * @author by mianbin
+ * @Classname EnvNodeAgent
+ * @Description TODO
+ * @Date 2025/4/8 21:14
+ */
+@Data
+public class EnvNodeAgent {
+ private ThirdPartyAgent agent;
+ private boolean enableNode;
+ private String nodeDisplayName;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/HeartbeatInfo.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/HeartbeatInfo.java
new file mode 100644
index 0000000..8fdbd79
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/HeartbeatInfo.java
@@ -0,0 +1,56 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import cd.casic.ci.common.pipeline.pojo.agent.ThirdPartyBuildInfo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author by mianbin
+ * @Classname HeartbeatInfo
+ * @Description TODO
+ * @Date 2025/4/8 21:15
+ */
+@Data
+@AllArgsConstructor
+public class HeartbeatInfo {
+ @Schema(title = "主版本")
+ private String masterVersion;
+ @Schema(title = "从属版本")
+ private String slaveVersion;
+ @Schema(title = "主机名")
+ private String hostName;
+ @Schema(title = "Agent IP")
+ private String agentIp;
+ @Schema(title = "通道数量")
+ private int parallelTaskCount;
+ @Schema(title = "Agent安装路径")
+ private String agentInstallPath;
+ @Schema(title = "启动用户")
+ private String startedUser;
+ @Schema(title = "任务列表")
+ private List taskList;
+ @Schema(title = "Agent ID")
+ private Long agentId;
+ @Schema(title = "项目ID")
+ private String projectId;
+ @Schema(title = "心跳时间")
+ private Long heartbeatTime;
+ public static HeartbeatInfo dummyHeartbeat(String projectId, Long agentId) {
+ return new HeartbeatInfo(
+ "",
+ "",
+ "",
+ "",
+ 0,
+ "",
+ "",
+ List.of(),
+ agentId,
+ projectId,
+ System.currentTimeMillis()
+ );
+ }
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/HeartbeatResponse.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/HeartbeatResponse.java
new file mode 100644
index 0000000..36717c5
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/HeartbeatResponse.java
@@ -0,0 +1,36 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author by mianbin
+ * @Classname HeartbeatResponse
+ * @Description TODO
+ * @Date 2025/4/8 21:15
+ */
+@Data
+public class HeartbeatResponse {
+ @Schema(title = "主版本")
+ private String masterVersion;
+ @Schema(title = "从属版本")
+ private String slaveVersion;
+ @Schema(title = "构建机状态")
+ private String agentStatus;
+ @Schema(title = "通道数量")
+ private int parallelTaskCount;
+ @Schema(title = "环境变量")
+ private Map envs;
+ @Schema(title = "网关地址")
+ private String gateway;
+ @Schema(title = "文件网关路径")
+ private String fileGateway;
+ @Schema(title = "Agent的一些属性配置")
+ private Map props;
+ @Schema(title = "docker最大任务数量")
+ private int dockerParallelTaskCount;
+ @Schema(title = "用户国际化语言")
+ private String language;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/JDKInfo.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/JDKInfo.java
new file mode 100644
index 0000000..88b3bb5
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/JDKInfo.java
@@ -0,0 +1,20 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author by mianbin
+ * @Classname JDKInfo
+ * @Description TODO
+ * @Date 2025/4/8 21:16
+ */
+@Data
+public class JDKInfo {
+ @Schema(title = "操作系统类型,MACOS/LINUX/WINDOWS")
+ private String os;
+ @Schema(title = "CPU架构,AMD64/ARM64/MIPS64")
+ private String archType;
+ @Schema(title = "java -version 版本信息最后一行")
+ private String jdkVersionString;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartAgentUpdateType.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartAgentUpdateType.java
new file mode 100644
index 0000000..50db918
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartAgentUpdateType.java
@@ -0,0 +1,13 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartAgentUpdateType
+ * @Description TODO
+ * @Date 2025/4/8 21:16
+ */
+public enum ThirdPartAgentUpdateType {
+ ADD,
+ REMOVE,
+ UPDATE
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgent.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgent.java
new file mode 100644
index 0000000..f9cbe69
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgent.java
@@ -0,0 +1,41 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import cd.casic.ci.common.pipeline.enums.AgentStatus;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyAgent
+ * @Description TODO
+ * @Date 2025/4/8 21:16
+ */
+@Data
+public class ThirdPartyAgent {
+ @Schema(title = "Agent Hash ID", required = true)
+ private String agentId;
+ @Schema(title = "项目ID", required = true)
+ private String projectId;
+ @Schema(title = "节点ID", required = false)
+ private String nodeId;
+ @Schema(title = "状态")
+ private AgentStatus status;
+ @Schema(title = "主机名", required = true)
+ private String hostname;
+ @Schema(title = "系统", required = true)
+ private String os;
+ @Schema(title = "IP地址", required = true)
+ private String ip;
+ @Schema(title = "Secret KEY", required = true)
+ private String secretKey;
+ @Schema(title = "创建用户", required = true)
+ private String createUser;
+ @Schema(title = "创建时间", required = true)
+ private Long createTime;
+ @Schema(title = "并行执行的个数", required = false)
+ private Integer parallelTaskCount;
+ @Schema(title = "Docker构建机并行执行的个数", required = false)
+ private Integer dockerParallelTaskCount;
+ @Schema(title = "agent版本")
+ private String masterVersion;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentAction.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentAction.java
new file mode 100644
index 0000000..e91f56b
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentAction.java
@@ -0,0 +1,22 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyAgentAction
+ * @Description TODO
+ * @Date 2025/4/8 21:19
+ */
+@Data
+public class ThirdPartyAgentAction {
+ @Schema(title = "Agent Hash Id", required = true)
+ private String agentId;
+ @Schema(title = "项目ID", required = true)
+ private String projectId;
+ @Schema(title = "活动", required = true)
+ private String action;
+ @Schema(title = "活动时间", required = true)
+ private Long actionTime;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentCreate.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentCreate.java
new file mode 100644
index 0000000..98be140
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentCreate.java
@@ -0,0 +1,20 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyAgentCreate
+ * @Description TODO
+ * @Date 2025/4/8 21:19
+ */
+@Data
+public class ThirdPartyAgentCreate {
+ @Schema(title = "名称", required = true)
+ private String name;
+ @Schema(title = "IP地址", required = true)
+ private String ip;
+ @Schema(title = "工作空间", required = true)
+ private String workspace;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentDetail.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentDetail.java
new file mode 100644
index 0000000..ffef2f3
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentDetail.java
@@ -0,0 +1,73 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import cd.casic.ci.common.pipeline.pojo.agent.NewHeartbeatInfo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyAgentDetail
+ * @Description TODO
+ * @Date 2025/4/8 21:19
+ */
+@Data
+public class ThirdPartyAgentDetail {
+ @Schema(title = "Agent Hash ID", required = true)
+ private String agentId;
+ @Schema(title = "Node Hash ID", required = true)
+ private String nodeId;
+ @Schema(title = "节点名称", required = true)
+ private String displayName;
+ @Schema(title = "项目ID", required = true)
+ private String projectId;
+ @Schema(title = "状态", required = true)
+ private String status;
+ @Schema(title = "主机名", required = true)
+ private String hostname;
+ @Schema(title = "操作系统 | LINUX MACOS WINDOWS", required = true)
+ private String os;
+ @Schema(title = "操作系统", required = true)
+ private String osName;
+ @Schema(title = "IP地址", required = true)
+ private String ip;
+ @Schema(title = "导入人", required = true)
+ private String createdUser;
+ @Schema(title = "导入时间", required = true)
+ private String createdTime;
+ @Schema(title = "Agent版本", required = true)
+ private String agentVersion;
+ @Schema(title = "Worker版本", required = true)
+ private String slaveVersion;
+ @Schema(title = "agent安装路径", required = true)
+ private String agentInstallPath;
+ @Schema(title = "已废弃,使用 parallelTaskCount", required = true)
+ private String maxParallelTaskCount;
+ @Schema(title = "最大构建并发数", required = true)
+ private String parallelTaskCount;
+ @Schema(title = "docker构建机通道数量", required = true)
+ private String dockerParallelTaskCount;
+ @Schema(title = "启动用户", required = true)
+ private String startedUser;
+ @Schema(title = "agent链接", required = true)
+ private String agentUrl;
+ @Schema(title = "agent安装脚本", required = true)
+ private String agentScript;
+ @Schema(title = "最新心跳时间", required = true)
+ private String lastHeartbeatTime;
+ @Schema(title = "CPU 核数", required = true)
+ private String ncpus;
+ @Schema(title = "内存", required = true)
+ private String memTotal;
+ @Schema(title = "硬盘空间(最大盘)", required = true)
+ private String diskTotal;
+ @Schema(title = "是否可以编辑", required = false)
+ private Boolean canEdit;
+ @Schema(title = "当前Agent版本", required = false)
+ private String currentAgentVersion;
+ @Schema(title = "当前Worker版本", required = false)
+ private String currentWorkerVersion;
+ @Schema(title = "心跳信息", required = false)
+ private NewHeartbeatInfo heartbeatInfo;
+ @Schema(title = "错误退出信息", required = false)
+ private String exitErrorMsg;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentHeartbeatInfo.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentHeartbeatInfo.java
new file mode 100644
index 0000000..d777a73
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentHeartbeatInfo.java
@@ -0,0 +1,15 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import lombok.Data;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyAgentHeartbeatInfo
+ * @Description TODO
+ * @Date 2025/4/8 21:19
+ */
+@Data
+public class ThirdPartyAgentHeartbeatInfo {
+ private String masterVersion;
+ private String slaveVersion;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentInfo.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentInfo.java
new file mode 100644
index 0000000..3323bd8
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentInfo.java
@@ -0,0 +1,28 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyAgentInfo
+ * @Description TODO
+ * @Date 2025/4/8 21:20
+ */
+@Data
+public class ThirdPartyAgentInfo {
+ @Schema(title = "Agent Hash ID", required = true)
+ private String agentId;
+ @Schema(title = "项目ID", required = true)
+ private String projectId;
+ @Schema(title = "状态")
+ private String status;
+ @Schema(title = "主机名", required = true)
+ private String hostname;
+ @Schema(title = "IP地址", required = true)
+ private String ip;
+ @Schema(title = "节点名", required = true)
+ private String displayName;
+ @Schema(title = "详细名称", required = false)
+ private String detailName;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentLink.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentLink.java
new file mode 100644
index 0000000..ca61b1b
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentLink.java
@@ -0,0 +1,18 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyAgentLink
+ * @Description TODO
+ * @Date 2025/4/8 21:20
+ */
+@Data
+public class ThirdPartyAgentLink {
+ @Schema(title = "ID")
+ private String agentId;
+ @Schema(title = "链接")
+ private String link;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentPipeline.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentPipeline.java
new file mode 100644
index 0000000..d46db03
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentPipeline.java
@@ -0,0 +1,27 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import cd.casic.pipeline.environment.pojo.thirdpartyagent.pipeline.CommandPipeline;
+import cd.casic.pipeline.environment.pojo.thirdpartyagent.pipeline.FilePipeline;
+import cd.casic.pipeline.environment.pojo.thirdpartyagent.pipeline.PipelineType;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyAgentPipeline
+ * @Description TODO
+ * @Date 2025/4/8 21:20
+ */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
+@JsonSubTypes({
+ @JsonSubTypes.Type(value = CommandPipeline.class, name = "COMMAND"),
+ @JsonSubTypes.Type(value = FilePipeline.class, name = "FILE")
+})
+@Data
+@AllArgsConstructor
+public class ThirdPartyAgentPipeline {
+ private PipelineType type;
+ private String seqId;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentStartInfo.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentStartInfo.java
new file mode 100644
index 0000000..31ea609
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentStartInfo.java
@@ -0,0 +1,24 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyAgentStartInfo
+ * @Description TODO
+ * @Date 2025/4/8 21:20
+ */
+@Data
+public class ThirdPartyAgentStartInfo {
+ @Schema(title = "主机名称")
+ private String hostname;
+ @Schema(title = "主机IP")
+ private String hostIp;
+ @Schema(title = "操作系统")
+ private String detectOS;
+ @Schema(title = "版本号")
+ private String version;
+ @Schema(title = "主版本号")
+ private String masterVersion;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentStaticInfo.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentStaticInfo.java
new file mode 100644
index 0000000..0193005
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/ThirdPartyAgentStaticInfo.java
@@ -0,0 +1,38 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author by mianbin
+ * @Classname ThirdPartyAgentStaticInfo
+ * @Description TODO
+ * @Date 2025/4/8 21:20
+ */
+@Data
+public class ThirdPartyAgentStaticInfo {
+ @Schema(title = "Agent Hash ID", required = true)
+ private String agentId;
+ @Schema(title = "项目ID", required = true)
+ private String projectId;
+ @Schema(title = "操作系统", required = true)
+ private String os;
+ @Schema(title = "密钥", required = true)
+ private String secretKey;
+ @Schema(title = "创建人", required = true)
+ private String createdUser;
+ @Schema(title = "gateway", required = false)
+ private String gateway;
+ @Schema(title = "link", required = true)
+ private String link;
+ @Schema(title = "script", required = true)
+ private String script;
+ @Schema(title = "ip", required = true)
+ private String ip;
+ @Schema(title = "hostName", required = false)
+ private String hostName;
+ @Schema(title = "状态")
+ private Integer status;
+ @Schema(title = "agent版本")
+ private String masterVersion;
+}
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/CommandPipeline.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/CommandPipeline.java
new file mode 100644
index 0000000..c03c309
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/CommandPipeline.java
@@ -0,0 +1,14 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent.pipeline;
+
+import cd.casic.pipeline.environment.pojo.thirdpartyagent.ThirdPartyAgentPipeline;
+import lombok.Getter;
+
+@Getter
+public class CommandPipeline extends ThirdPartyAgentPipeline {
+ private final String command;
+
+ public CommandPipeline(String command, String seqId) {
+ super(PipelineType.COMMAND, seqId);
+ this.command = command;
+ }
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/CommandPipelineCreate.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/CommandPipelineCreate.java
new file mode 100644
index 0000000..14b99eb
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/CommandPipelineCreate.java
@@ -0,0 +1,22 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent.pipeline;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CommandPipelineCreate extends PipelineCreate {
+ private String command;
+ private String seqId;
+
+ public CommandPipelineCreate(String command) {
+ super(PipelineType.COMMAND, null);
+ this.command = command;
+ }
+
+ //TODO
+ public CommandPipelineCreate() {
+ super(null, null);
+ this.command = command;
+ }
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/FilePipeline.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/FilePipeline.java
new file mode 100644
index 0000000..b1c477b
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/FilePipeline.java
@@ -0,0 +1,21 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent.pipeline;
+
+import cd.casic.pipeline.environment.pojo.thirdpartyagent.ThirdPartyAgentPipeline;
+import lombok.Getter;
+
+@Getter
+public class FilePipeline extends ThirdPartyAgentPipeline {
+ private final FilePipelineOperation operation;
+ private final String file;
+
+ public FilePipeline(FilePipelineOperation operation, String file, String seqId) {
+ super(PipelineType.FILE, seqId);
+ this.operation = operation;
+ this.file = file;
+ }
+
+ public enum FilePipelineOperation {
+ DOWNLOAD,
+ UPLOAD
+ }
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/FilePipelineCreate.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/FilePipelineCreate.java
new file mode 100644
index 0000000..d249d7c
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/FilePipelineCreate.java
@@ -0,0 +1,21 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent.pipeline;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class FilePipelineCreate extends PipelineCreate {
+ private final FilePipeline.FilePipelineOperation operation;
+ private final String file;
+
+ public FilePipelineCreate(
+ @JsonProperty("operation") FilePipeline.FilePipelineOperation operation,
+ @JsonProperty("file") String file,
+ @JsonProperty("seqId") String seqId) {
+ super(PipelineType.FILE, seqId);
+ this.operation = operation;
+ this.file = file;
+ }
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/PipelineCreate.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/PipelineCreate.java
new file mode 100644
index 0000000..2074480
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/PipelineCreate.java
@@ -0,0 +1,22 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent.pipeline;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+public abstract class PipelineCreate {
+ private PipelineType type;
+ private String seqId;
+
+ public PipelineCreate(
+ @JsonProperty("type") PipelineType type,
+ @JsonProperty("seqId") String seqId
+ ) {
+ this.type = type;
+ this.seqId = seqId;
+ }
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/PipelineResponse.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/PipelineResponse.java
new file mode 100644
index 0000000..fc2cd16
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/PipelineResponse.java
@@ -0,0 +1,23 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent.pipeline;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class PipelineResponse {
+ private final PipelineStatus status;
+ private final String message;
+ private final String seqId;
+
+ public PipelineResponse(
+ @JsonProperty("status") PipelineStatus status,
+ @JsonProperty("message") String message,
+ @JsonProperty("seqId") String seqId
+ ) {
+ this.status = status;
+ this.message = message;
+ this.seqId = seqId;
+ }
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/PipelineSeqId.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/PipelineSeqId.java
new file mode 100644
index 0000000..a0141dc
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/PipelineSeqId.java
@@ -0,0 +1,12 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent.pipeline;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class PipelineSeqId {
+ private String seqId;
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/PipelineStatus.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/PipelineStatus.java
new file mode 100644
index 0000000..d320b5f
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/PipelineStatus.java
@@ -0,0 +1,27 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent.pipeline;
+
+import lombok.Getter;
+
+@Getter
+public enum PipelineStatus {
+ PENDING(1),
+ EXECUTING(2),
+ TIMEOUT(3),
+ FAILURE(4),
+ SUCCESS(5);
+
+ private final int status;
+
+ PipelineStatus(int status) {
+ this.status = status;
+ }
+
+ public static PipelineStatus from(int status) {
+ for (PipelineStatus pipelineStatus : values()) {
+ if (pipelineStatus.getStatus() == status) {
+ return pipelineStatus;
+ }
+ }
+ throw new RuntimeException("The pipeline status " + status + " is not exist");
+ }
+}
\ No newline at end of file
diff --git a/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/PipelineType.java b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/PipelineType.java
new file mode 100644
index 0000000..d131a31
--- /dev/null
+++ b/modules/module-ci-environment/src/main/java/cd/casic/pipeline/environment/pojo/thirdpartyagent/pipeline/PipelineType.java
@@ -0,0 +1,9 @@
+package cd.casic.pipeline.environment.pojo.thirdpartyagent.pipeline;
+
+import lombok.Getter;
+
+@Getter
+public enum PipelineType {
+ COMMAND,
+ FILE
+}
\ No newline at end of file
diff --git a/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/AppLogResource.java b/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/AppLogResource.java
index 5845508..722b15e 100644
--- a/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/AppLogResource.java
+++ b/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/AppLogResource.java
@@ -11,8 +11,7 @@ import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.*;
-import static cd.casic.ci.common.constant.OpsHeader.*;;
-
+import static cd.casic.ci.common.pipeline.constant.OpsHeader.*;;
@Tag(name = "用户-日志资源")
@RestController
diff --git a/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/BuildLogPrintResource.java b/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/BuildLogPrintResource.java
index a208f55..08df532 100644
--- a/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/BuildLogPrintResource.java
+++ b/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/BuildLogPrintResource.java
@@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
-import static cd.casic.ci.common.constant.OpsHeader.*;;
+import static cd.casic.ci.common.pipeline.constant.OpsHeader.*;;
/**
* @author by mianbin
diff --git a/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/ServiceLogPrintResource.java b/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/ServiceLogPrintResource.java
index 266a678..bde8c4a 100644
--- a/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/ServiceLogPrintResource.java
+++ b/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/ServiceLogPrintResource.java
@@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
-import static cd.casic.ci.common.constant.OpsHeader.AUTH_HEADER_DEVOPS_BUILD_ID;
+import static cd.casic.ci.common.pipeline.constant.OpsHeader.AUTH_HEADER_DEVOPS_BUILD_ID;
@RestController
diff --git a/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/ServiceLogResource.java b/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/ServiceLogResource.java
index b8db08a..a2d4ea0 100644
--- a/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/ServiceLogResource.java
+++ b/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/ServiceLogResource.java
@@ -11,7 +11,7 @@ import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.*;
-import static cd.casic.ci.common.constant.OpsHeader.*;;
+import static cd.casic.ci.common.pipeline.constant.OpsHeader.*;;
@RestController
diff --git a/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/UserLogResource.java b/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/UserLogResource.java
index 8a543f1..b979d84 100644
--- a/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/UserLogResource.java
+++ b/modules/module-ci-log/src/main/java/cd/casic/ci/log/api/UserLogResource.java
@@ -11,7 +11,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
-import static cd.casic.ci.common.constant.OpsHeader.*;;
+import static cd.casic.ci.common.pipeline.constant.OpsHeader.*;;
@RestController
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/engine/BuildJobResource.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/engine/BuildJobResource.java
index c1148ba..73d0fa6 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/engine/BuildJobResource.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/engine/BuildJobResource.java
@@ -1,6 +1,6 @@
package cd.casic.ci.process.api.engine;
-import cd.casic.ci.common.pojo.ErrorInfo;
+import cd.casic.ci.common.pipeline.pojo.ErrorInfo;
import cd.casic.ci.common.pipeline.pojo.JobHeartbeatRequest;
import cd.casic.ci.process.api.engine.pojo.HeartBeatInfo;
import cd.casic.ci.process.api.process.pojo.BuildJobResult;
@@ -13,7 +13,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import kotlin.Result;
import org.springframework.web.bind.annotation.*;
-import static cd.casic.ci.common.constant.OpsHeader.*;
+import static cd.casic.ci.common.pipeline.constant.OpsHeader.*;
/**
* @author by mianbin
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/engine/atom/IAtomTask.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/engine/atom/IAtomTask.java
index 3746427..38b55b7 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/engine/atom/IAtomTask.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/engine/atom/IAtomTask.java
@@ -1,9 +1,9 @@
package cd.casic.ci.process.api.engine.atom;
-import cd.casic.ci.common.enums.ErrorCode;
import cd.casic.ci.common.pipeline.enums.BuildStatus;
+import cd.casic.ci.common.pipeline.enums.ErrorCode;
+import cd.casic.ci.common.pipeline.pojo.ErrorType;
import cd.casic.ci.common.pipeline.utils.EnvUtils;
-import cd.casic.ci.common.pojo.ErrorType;
import cd.casic.ci.event.enums.ActionType;
import cd.casic.ci.process.api.engine.common.Timeout;
import cd.casic.ci.process.api.engine.common.VMUtils;
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/engine/pojo/BuildInfo.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/engine/pojo/BuildInfo.java
index 933736a..82466be 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/engine/pojo/BuildInfo.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/engine/pojo/BuildInfo.java
@@ -3,7 +3,7 @@ package cd.casic.ci.process.api.engine.pojo;
import cd.casic.ci.common.pipeline.enums.BuildStatus;
import cd.casic.ci.common.pipeline.enums.ChannelCode;
import cd.casic.ci.common.pipeline.pojo.BuildParameters;
-import cd.casic.ci.common.pojo.ErrorInfo;
+import cd.casic.ci.common.pipeline.pojo.ErrorInfo;
import cd.casic.ci.process.api.process.pojo.BuildStageStatus;
import cd.casic.ci.process.api.process.pojo.PipelineBuildMaterial;
import cd.casic.ci.process.api.process.pojo.code.WebhookInfo;
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/engine/pojo/PipelineBuildTask.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/engine/pojo/PipelineBuildTask.java
index 7604e34..0d66d85 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/engine/pojo/PipelineBuildTask.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/engine/pojo/PipelineBuildTask.java
@@ -2,7 +2,7 @@ package cd.casic.ci.process.api.engine.pojo;
import cd.casic.ci.common.pipeline.enums.BuildStatus;
import cd.casic.ci.common.pipeline.pojo.element.ElementAdditionalOptions;
-import cd.casic.ci.common.pojo.ErrorType;
+import cd.casic.ci.common.pipeline.pojo.ErrorType;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.time.LocalDateTime;
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/BuildHistory.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/BuildHistory.java
index 752c8ca..bad8c78 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/BuildHistory.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/BuildHistory.java
@@ -1,7 +1,7 @@
package cd.casic.ci.process.api.process.pojo;
import cd.casic.ci.common.pipeline.pojo.BuildParameters;
-import cd.casic.ci.common.pojo.ErrorInfo;
+import cd.casic.ci.common.pipeline.pojo.ErrorInfo;
import cd.casic.ci.process.api.process.pojo.code.WebhookInfo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/BuildHistoryWithVars.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/BuildHistoryWithVars.java
index 5c26497..ec4b9d3 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/BuildHistoryWithVars.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/BuildHistoryWithVars.java
@@ -1,7 +1,7 @@
package cd.casic.ci.process.api.process.pojo;
import cd.casic.ci.common.pipeline.pojo.BuildParameters;
-import cd.casic.ci.common.pojo.ErrorInfo;
+import cd.casic.ci.common.pipeline.pojo.ErrorInfo;
import cd.casic.ci.process.api.process.pojo.code.WebhookInfo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/BuildVariables.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/BuildVariables.java
index b8fef95..8113aea 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/BuildVariables.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/BuildVariables.java
@@ -1,7 +1,7 @@
package cd.casic.ci.process.api.process.pojo;
import cd.casic.ci.common.pipeline.pojo.BuildParameters;
-import cd.casic.ci.common.pojo.BuildEnv;
+import cd.casic.ci.common.pipeline.pojo.BuildEnv;
import cd.casic.ci.project.dal.pojo.PipelineAsCodeSettings;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/app/StartBuildContext.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/app/StartBuildContext.java
index d4b9a7a..3752e38 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/app/StartBuildContext.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/app/StartBuildContext.java
@@ -1,6 +1,6 @@
package cd.casic.ci.process.api.process.pojo.app;
-import cd.casic.ci.common.constant.StringConstant;
+import cd.casic.ci.common.pipeline.constant.StringConstant;
import cd.casic.ci.common.pipeline.container.Container;
import cd.casic.ci.common.pipeline.container.Stage;
import cd.casic.ci.common.pipeline.enums.BuildStatus;
@@ -26,8 +26,8 @@ import lombok.extern.slf4j.Slf4j;
import java.time.LocalDateTime;
import java.util.*;
-import static cd.casic.ci.common.constant.PipelineConstants.PIPELINE_GIT_EVENT_URL;
-import static cd.casic.ci.common.constant.WebhookConstant.*;
+import static cd.casic.ci.common.pipeline.constant.PipelineConstants.PIPELINE_GIT_EVENT_URL;
+import static cd.casic.ci.common.pipeline.constant.WebhookConstant.*;
import static cd.casic.ci.process.api.process.utils.Constants.*;
import static cd.casic.ci.process.api.process.utils.PipelineVarUtil.CONTEXT_PREFIX;
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineBuildLessStartupEvent.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineBuildLessStartupEvent.java
index 1bc3cef..2e90a2b 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineBuildLessStartupEvent.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineBuildLessStartupEvent.java
@@ -1,6 +1,6 @@
package cd.casic.ci.process.api.process.pojo.mq;
-import cd.casic.ci.common.pojo.Zone;
+import cd.casic.ci.common.pipeline.pojo.Zone;
import cd.casic.ci.event.enums.ActionType;
import cd.casic.ci.event.pojo.pipeline.IPipelineEvent;
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/pipeline/ModelRecord.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/pipeline/ModelRecord.java
index 58178ef..42b977c 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/pipeline/ModelRecord.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/pipeline/ModelRecord.java
@@ -2,7 +2,7 @@ package cd.casic.ci.process.api.process.pojo.pipeline;
import cd.casic.ci.common.pipeline.Model;
import cd.casic.ci.common.pipeline.pojo.transfer.TemplateInfo;
-import cd.casic.ci.common.pojo.ErrorInfo;
+import cd.casic.ci.common.pipeline.pojo.ErrorInfo;
import cd.casic.ci.process.api.process.pojo.BuildStageStatus;
import cd.casic.ci.process.api.process.pojo.PipelineBuildMaterial;
import cd.casic.ci.process.api.process.pojo.code.WebhookInfo;
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/pipeline/PipelineYamlSyncInfo.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/pipeline/PipelineYamlSyncInfo.java
index d301935..f90c164 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/pipeline/PipelineYamlSyncInfo.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/pipeline/PipelineYamlSyncInfo.java
@@ -1,6 +1,6 @@
package cd.casic.ci.process.api.process.pojo.pipeline;
-import cd.casic.ci.common.enums.RepoYamlSyncStatusEnum;
+import cd.casic.ci.common.pipeline.enums.RepoYamlSyncStatusEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/pipeline/PipelineYamlVo.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/pipeline/PipelineYamlVo.java
index dcb6323..08aaf80 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/pipeline/PipelineYamlVo.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/pipeline/PipelineYamlVo.java
@@ -1,6 +1,6 @@
package cd.casic.ci.process.api.process.pojo.pipeline;
-import cd.casic.ci.common.enums.ScmType;
+import cd.casic.ci.common.pipeline.enums.ScmType;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/pipeline/record/BuildRecordModel.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/pipeline/record/BuildRecordModel.java
index ae220c5..30dfc8e 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/pipeline/record/BuildRecordModel.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/pipeline/record/BuildRecordModel.java
@@ -2,7 +2,7 @@ package cd.casic.ci.process.api.process.pojo.pipeline.record;
import cd.casic.ci.common.pipeline.enums.BuildRecordTimeStamp;
import cd.casic.ci.common.pipeline.pojo.time.BuildTimestampType;
-import cd.casic.ci.common.pojo.ErrorInfo;
+import cd.casic.ci.common.pipeline.pojo.ErrorInfo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/utils/DependOnUtils.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/utils/DependOnUtils.java
index 2cc3cf4..5219588 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/utils/DependOnUtils.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/utils/DependOnUtils.java
@@ -1,6 +1,6 @@
package cd.casic.ci.process.api.process.utils;
-import cd.casic.ci.common.constant.HttpStatus;
+import cd.casic.ci.common.pipeline.constant.HttpStatus;
import cd.casic.ci.common.pipeline.container.Container;
import cd.casic.ci.common.pipeline.container.NormalContainer;
import cd.casic.ci.common.pipeline.container.Stage;
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/utils/PipelineVarUtil.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/utils/PipelineVarUtil.java
index dbeb5ba..18984d6 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/utils/PipelineVarUtil.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/process/api/process/utils/PipelineVarUtil.java
@@ -1,6 +1,6 @@
package cd.casic.ci.process.api.process.utils;
-import cd.casic.ci.common.constant.StringConstant;
+import cd.casic.ci.common.pipeline.constant.StringConstant;
import cd.casic.ci.common.pipeline.enums.BuildFormPropertyType;
import cd.casic.ci.common.pipeline.pojo.BuildParameters;
import cn.hutool.core.lang.Pair;
diff --git a/modules/module-ci-process-biz/pom.xml b/modules/module-ci-process-biz/pom.xml
new file mode 100644
index 0000000..9667794
--- /dev/null
+++ b/modules/module-ci-process-biz/pom.xml
@@ -0,0 +1,22 @@
+
+
+ 4.0.0
+
+ cd.casic.boot
+ modules
+ ${revision}
+
+
+ cd.casic.pipeline
+ module-ci-process-biz
+
+
+
+ cd.casic.boot
+ module-ci-process-api
+
+
+
+
\ No newline at end of file
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/command/Cmd.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/command/Cmd.java
new file mode 100644
index 0000000..7de9c5c
--- /dev/null
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/command/Cmd.java
@@ -0,0 +1,38 @@
+package cd.casic.ci.process.command;
+
+/**
+ * @author by mianbin
+ * @Classname Cmd
+ * @Description 定义引擎命令
+ * @Date 2025/4/7 19:37
+ */
+public interface Cmd {
+ /**
+ * 当前[commandContext]上下文能否满足运行条件
+ *
+ * @param commandContext 命令上下文
+ * @return 如果满足运行条件返回 true,否则返回 false
+ */
+ boolean canExecute(T commandContext);
+
+ /**
+ * 本命令[commandContext]上下文执行核心处理逻辑
+ *
+ * @param commandContext 命令上下文
+ */
+ void execute(T commandContext);
+
+ /**
+ * 执行总入口,将调用[canExecute]判断是否满足再执行[execute]函数,
+ * 并将[chain]链式传递[commandContext]继续执行下去
+ *
+ * @param commandContext 命令上下文
+ * @param chain 命令链
+ */
+ default void doExecute(T commandContext, CmdChain chain) {
+ if (canExecute(commandContext)) {
+ execute(commandContext);
+ }
+ chain.doCommand(commandContext);
+ }
+}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/command/CmdChain.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/command/CmdChain.java
new file mode 100644
index 0000000..455f7c9
--- /dev/null
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/command/CmdChain.java
@@ -0,0 +1,35 @@
+package cd.casic.ci.process.command;
+
+/**
+ * @author by mianbin
+ * @Classname CmdChain
+ * @Description 引擎控制命令链
+ * @Date 2025/4/7 19:37
+ */
+public interface CmdChain {
+
+ /**
+ * 使用泛型的命令上下文[commandContext]执行命令
+ * [commandContext]具备传递和存储中间数据,由各部件定义
+ *
+ * @param commandContext 命令上下文
+ */
+ default void doCommand(T commandContext) {
+ if (commandContext.getCmdFlowSeq() < 0) { // 校正
+ commandContext.setCmdFlowSeq(0);
+ }
+ // 每次调用,都增1,走向下一条命令链
+ Cmd nextCmd = nextCommand(commandContext);
+ if (nextCmd != null) {
+ nextCmd.doExecute(commandContext, this);
+ }
+ }
+
+ /**
+ * 获取下一个命令
+ *
+ * @param commandContext 命令上下文
+ * @return 下一个命令,如果没有则返回 null
+ */
+ Cmd nextCommand(T commandContext);
+}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/command/CmdContext.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/command/CmdContext.java
new file mode 100644
index 0000000..5bd638d
--- /dev/null
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/command/CmdContext.java
@@ -0,0 +1,27 @@
+package cd.casic.ci.process.command;
+
+import cd.casic.framework.commons.util.watcher.Watcher;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author by mianbin
+ * @Classname CmdContext
+ * @Description 命令上下文基础类
+ * @Date 2025/4/7 19:35
+ */
+@Data
+public class CmdContext {
+ protected int executeCount;
+ protected int cmdFlowSeq;
+ protected final Map variables;
+ protected final Watcher watcher;
+
+ public CmdContext(int cmdFlowSeq, Map variables, Watcher watcher) {
+ this.cmdFlowSeq = cmdFlowSeq;
+ this.executeCount = 1; // 对应 Kotlin 中的初始值
+ this.variables = variables;
+ this.watcher = watcher;
+ }
+}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/BuildJobResourceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/BuildJobResourceImpl.java
new file mode 100644
index 0000000..4549299
--- /dev/null
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/BuildJobResourceImpl.java
@@ -0,0 +1,64 @@
+package cd.casic.ci.process.engine;
+
+import cd.casic.ci.common.pipeline.pojo.JobHeartbeatRequest;
+import cd.casic.ci.common.pipeline.pojo.ErrorInfo;
+import cd.casic.ci.process.api.engine.BuildJobResource;
+import cd.casic.ci.process.api.engine.pojo.HeartBeatInfo;
+import cd.casic.ci.process.api.process.pojo.BuildJobResult;
+import cd.casic.ci.process.api.process.pojo.BuildTask;
+import cd.casic.ci.process.api.process.pojo.BuildTaskResult;
+import cd.casic.ci.process.api.process.pojo.BuildVariables;
+import kotlin.Result;
+
+/**
+ * @author by mianbin
+ * @Classname BuildJobResourceImpl
+ * @Description TODO
+ * @Date 2025/4/7 19:01
+ */
+public class BuildJobResourceImpl implements BuildJobResource {
+ @Override
+ public Result jobStarted(String projectId, String buildId, String vmSeqId, String vmName, String retryCount) {
+ return null;
+ }
+
+ @Override
+ public Result claimTask(String projectId, String buildId, String vmSeqId, String vmName) {
+ return null;
+ }
+
+ @Override
+ public Result completeTask(String projectId, String buildId, String vmSeqId, String vmName, BuildTaskResult result) {
+ return null;
+ }
+
+ @Override
+ public Result jobEnd(String projectId, String buildId, String vmSeqId, String vmName, BuildJobResult result) {
+ return null;
+ }
+
+ @Override
+ public Result jobTimeout(String projectId, String pipelineId, String buildId, String vmSeqId) {
+ return null;
+ }
+
+ @Override
+ public Result jobHeartbeat(String buildId, String vmSeqId, String vmName) {
+ return null;
+ }
+
+ @Override
+ public Result jobHeartbeatV1(String projectId, String buildId, String vmSeqId, String vmName, Integer executeCount, JobHeartbeatRequest jobHeartbeatRequest) {
+ return null;
+ }
+
+ @Override
+ public Result submitError(String projectId, String pipelineId, String buildId, String vmSeqId, ErrorInfo errorInfo) {
+ return null;
+ }
+
+ @Override
+ public Result getBuildDetailUrl(String projectId, String pipelineId, String buildId) {
+ return null;
+ }
+}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/BuildDetailDao.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/BuildDetailDao.java
new file mode 100644
index 0000000..1d5a53a
--- /dev/null
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/BuildDetailDao.java
@@ -0,0 +1,11 @@
+package cd.casic.ci.process.process.dal;
+
+/**
+ * @author by mianbin
+ * @Classname BuildDetailDao
+ * @Description TODO
+ * @Date 2025/4/8 10:14
+ */
+public class BuildDetailDao {
+
+}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/package-info.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/package-info.java
new file mode 100644
index 0000000..2dfd2e1
--- /dev/null
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/package-info.java
@@ -0,0 +1,7 @@
+/**
+ * @Classname package-info
+ * @Description TODO
+ * @Date 2025/4/8 10:14
+ * @author by mianbin
+ */
+package cd.casic.ci.process.process;
\ No newline at end of file
diff --git a/modules/module-ci-project/src/main/java/cd/casic/ci/project/dal/pojo/SubjectScopeInfo.java b/modules/module-ci-project/src/main/java/cd/casic/ci/project/dal/pojo/SubjectScopeInfo.java
index fd43468..1566bf2 100644
--- a/modules/module-ci-project/src/main/java/cd/casic/ci/project/dal/pojo/SubjectScopeInfo.java
+++ b/modules/module-ci-project/src/main/java/cd/casic/ci/project/dal/pojo/SubjectScopeInfo.java
@@ -1,6 +1,6 @@
package cd.casic.ci.project.dal.pojo;
-import cd.casic.ci.common.enums.SubjectScopeType;
+import cd.casic.ci.common.pipeline.enums.SubjectScopeType;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
diff --git a/modules/module-ci-project/src/main/java/cd/casic/ci/project/service/impl/ProjectServiceImpl.java b/modules/module-ci-project/src/main/java/cd/casic/ci/project/service/impl/ProjectServiceImpl.java
index 2f930be..8399378 100644
--- a/modules/module-ci-project/src/main/java/cd/casic/ci/project/service/impl/ProjectServiceImpl.java
+++ b/modules/module-ci-project/src/main/java/cd/casic/ci/project/service/impl/ProjectServiceImpl.java
@@ -1,7 +1,7 @@
package cd.casic.ci.project.service.impl;
-import cd.casic.ci.common.constant.BaseConstant;
+import cd.casic.ci.common.pipeline.constant.BaseConstant;
import cd.casic.ci.project.constant.ProjectConstants;
import cd.casic.ci.project.dal.dao.ProjectMapper;
import cd.casic.ci.project.dal.dto.Project;
diff --git a/modules/module-ci-repository/src/main/java/cd/casic/ci/log/scm/service/github/GithubService.java b/modules/module-ci-repository/src/main/java/cd/casic/ci/log/scm/service/github/GithubService.java
index 989a698..0c5b8d7 100644
--- a/modules/module-ci-repository/src/main/java/cd/casic/ci/log/scm/service/github/GithubService.java
+++ b/modules/module-ci-repository/src/main/java/cd/casic/ci/log/scm/service/github/GithubService.java
@@ -1,6 +1,6 @@
package cd.casic.ci.log.scm.service.github;
-import cd.casic.ci.common.constant.CommonMessageCode;
+import cd.casic.ci.common.pipeline.constant.CommonMessageCode;
import cd.casic.ci.log.scm.dal.pojo.github.GithubBranch;
import cd.casic.ci.log.scm.dal.pojo.github.GithubTag;
import cd.casic.framework.commons.exception.ServiceException;
diff --git a/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/UserCredentialResource.java b/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/UserCredentialResource.java
index 65b86d9..686587d 100644
--- a/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/UserCredentialResource.java
+++ b/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/UserCredentialResource.java
@@ -11,8 +11,8 @@ import org.springframework.web.bind.annotation.*;
import java.security.Permission;
import java.util.List;
-import static cd.casic.ci.common.constant.OpsHeader.AUTH_HEADER_USER_ID;
-import static cd.casic.ci.common.constant.OpsHeader.AUTH_HEADER_USER_ID_DEFAULT_VALUE;
+import static cd.casic.ci.common.pipeline.constant.OpsHeader.AUTH_HEADER_USER_ID;
+import static cd.casic.ci.common.pipeline.constant.OpsHeader.AUTH_HEADER_USER_ID_DEFAULT_VALUE;
/**
* @Author:mianbin
diff --git a/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/api/BuildAgentCredentialApi.java b/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/api/BuildAgentCredentialApi.java
index 56f8f4c..edfcdbf 100644
--- a/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/api/BuildAgentCredentialApi.java
+++ b/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/api/BuildAgentCredentialApi.java
@@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.Map;
-import static cd.casic.ci.common.constant.OpsHeader.*;
+import static cd.casic.ci.common.pipeline.constant.OpsHeader.*;
/**
diff --git a/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/api/BuildCredentialApi.java b/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/api/BuildCredentialApi.java
index d28aa24..0a4e6e6 100644
--- a/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/api/BuildCredentialApi.java
+++ b/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/api/BuildCredentialApi.java
@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.Map;
-import static cd.casic.ci.common.constant.OpsHeader.*;
+import static cd.casic.ci.common.pipeline.constant.OpsHeader.*;
/**
* @Author:mianbin
diff --git a/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/api/OpCredentialApi.java b/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/api/OpCredentialApi.java
index e5a210b..ee54467 100644
--- a/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/api/OpCredentialApi.java
+++ b/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/api/OpCredentialApi.java
@@ -8,7 +8,7 @@ import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.*;
-import static cd.casic.ci.common.constant.OpsHeader.AUTH_HEADER_USER_ID;
+import static cd.casic.ci.common.pipeline.constant.OpsHeader.AUTH_HEADER_USER_ID;
/**
* @Author:mianbin
diff --git a/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/api/ServiceCredentialApi.java b/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/api/ServiceCredentialApi.java
index f35d1e0..96424f4 100644
--- a/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/api/ServiceCredentialApi.java
+++ b/modules/module-ci-ticket/src/main/java/cd/casic/ci/ticket/api/ServiceCredentialApi.java
@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*;
import java.security.Permission;
-import static cd.casic.ci.common.constant.OpsHeader.*;
+import static cd.casic.ci.common.pipeline.constant.OpsHeader.*;
@RestController
diff --git a/modules/module-ci-worker/src/main/java/cd/casic/devops/common/worker/env/AgentEnv.java b/modules/module-ci-worker/src/main/java/cd/casic/devops/common/worker/env/AgentEnv.java
index 0c64d25..4bddf52 100644
--- a/modules/module-ci-worker/src/main/java/cd/casic/devops/common/worker/env/AgentEnv.java
+++ b/modules/module-ci-worker/src/main/java/cd/casic/devops/common/worker/env/AgentEnv.java
@@ -12,7 +12,7 @@
package cd.casic.devops.common.worker.env;
-import cd.casic.ci.common.enums.OSType;
+import cd.casic.ci.common.pipeline.enums.OSType;
import lombok.SneakyThrows;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/modules/pom.xml b/modules/pom.xml
index c711789..8160c2c 100644
--- a/modules/pom.xml
+++ b/modules/pom.xml
@@ -23,9 +23,10 @@
module-ci-ticket
module-ci-worker
module-ci-environment
- module-ci-common
module-ci-common-pipeline
module-ci-process-api
+ module-ci-process-biz
+ module-ci-dispatch-api