From de80ed56fea2e7cb0a076ac31a0c61071d709ccf Mon Sep 17 00:00:00 2001 From: even <827656971@qq.com> Date: Wed, 28 May 2025 19:31:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E7=9A=84worker=E6=B7=BB=E5=8A=A0,?= =?UTF-8?q?=E7=AD=89=E5=BE=85=E5=AE=A1=E6=89=B9=E8=8A=82=E7=82=B9=E9=A2=84?= =?UTF-8?q?=E7=95=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manager/impl/DefaultWorkerManager.java | 7 +----- .../ci/process/engine/worker/AFLWorker.java | 15 +---------- .../engine/worker/ApplicationWorker.java | 6 ++--- .../process/engine/worker/CodingWorker.java | 5 ++-- .../engine/worker/CustomCompilerWorker.java | 25 +++++++++++++++++++ .../engine/worker/DBFuzzTestingWorker.java | 25 +++++++++++++++++++ .../worker/DIYImageExecuteCommandWorker.java | 7 +----- .../ci/process/engine/worker/SastWorker.java | 25 +++++++++++++++++++ .../engine/worker/ScaBinaryWorker.java | 5 ++-- .../engine/worker/ScaMirrorWorker.java | 7 +++--- .../process/engine/worker/ScaSbomWorker.java | 3 ++- .../engine/worker/TargetHandleWorker.java | 4 +-- .../worker/TestCaseGenerationWorker.java | 4 +-- .../process/engine/worker/TestGitWorker.java | 3 ++- .../ci/process/engine/worker/TestWorker.java | 4 +-- .../engine/worker/UnitTestingWorker.java | 25 +++++++++++++++++++ .../engine/worker/{ => base}/BaseWorker.java | 14 +++++------ .../engine/worker/{ => base}/HttpWorker.java | 6 ++--- .../engine/worker/base/PassableWorker.java | 10 ++++++++ .../engine/worker/{ => base}/SshWorker.java | 6 ++--- .../pipeline/impl/PipelineServiceImpl.java | 2 +- 21 files changed, 149 insertions(+), 59 deletions(-) create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/CustomCompilerWorker.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/DBFuzzTestingWorker.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/SastWorker.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/UnitTestingWorker.java rename modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/{ => base}/BaseWorker.java (86%) rename modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/{ => base}/HttpWorker.java (94%) create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/PassableWorker.java rename modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/{ => base}/SshWorker.java (95%) diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultWorkerManager.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultWorkerManager.java index b9deae3f..b6411644 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultWorkerManager.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultWorkerManager.java @@ -6,23 +6,18 @@ import cd.casic.ci.process.engine.manager.RunContextManager; import cd.casic.ci.process.engine.manager.WorkerManager; import cd.casic.ci.process.engine.message.TaskRunMessage; import cd.casic.ci.process.engine.runContext.BaseRunContext; -import cd.casic.ci.process.engine.worker.BaseWorker; +import cd.casic.ci.process.engine.worker.base.BaseWorker; import cd.casic.ci.process.process.dataObject.task.PipTask; import cd.casic.framework.commons.exception.ServiceException; import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; -import cd.casic.framework.mq.redis.core.stream.AbstractRedisStreamMessageListener; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; -import jodd.util.StringUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeansException; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; -import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.core.type.filter.AnnotationTypeFilter; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/AFLWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/AFLWorker.java index c307fc39..b2bdcdf1 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/AFLWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/AFLWorker.java @@ -3,28 +3,15 @@ package cd.casic.ci.process.engine.worker; import cd.casic.ci.common.pipeline.annotation.Plugin; import cd.casic.ci.process.engine.constant.AFLConstant; import cd.casic.ci.process.engine.constant.DIYImageExecuteCommandConstant; -import cd.casic.ci.process.engine.constant.EngineRuntimeConstant; -import cd.casic.ci.process.engine.runContext.BaseRunContext; -import cd.casic.ci.process.engine.runContext.PipelineRunContext; import cd.casic.ci.process.engine.runContext.TaskRunContext; -import cd.casic.ci.process.process.dataObject.base.PipBaseElement; -import cd.casic.ci.process.process.dataObject.log.PipTaskLog; +import cd.casic.ci.process.engine.worker.base.SshWorker; import cd.casic.ci.process.process.dataObject.machine.MachineInfo; import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; -import cd.casic.ci.process.process.dataObject.target.TargetVersion; import cd.casic.ci.process.process.dataObject.task.PipTask; -import cd.casic.ci.process.process.service.target.TargetVersionService; import cd.casic.ci.process.util.CryptogramUtil; -import cd.casic.framework.commons.exception.ServiceException; -import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; -import com.jcraft.jsch.*; -import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; import java.util.Map; @Plugin(taskType = "AFL") diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ApplicationWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ApplicationWorker.java index dee49cfc..0e6a43cc 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ApplicationWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ApplicationWorker.java @@ -4,8 +4,8 @@ import cd.casic.ci.common.pipeline.annotation.Plugin; import cd.casic.ci.process.engine.constant.EngineRuntimeConstant; import cd.casic.ci.process.engine.context.ConstantContextHolder; import cd.casic.ci.process.engine.runContext.BaseRunContext; -import cd.casic.ci.process.engine.runContext.PipelineRunContext; import cd.casic.ci.process.engine.runContext.TaskRunContext; +import cd.casic.ci.process.engine.worker.base.HttpWorker; import cd.casic.ci.process.process.dataObject.base.PipBaseElement; import cd.casic.ci.process.process.dataObject.log.PipTaskLog; import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; @@ -41,8 +41,8 @@ import java.util.*; * @Description: */ @Slf4j -@Plugin(taskType = "application") -public class ApplicationWorker extends HttpWorker{ +@Plugin(taskType = "APPLICATION") +public class ApplicationWorker extends HttpWorker { private static final int POLLING_INTERVAL = 5000; // 轮询间隔,单位:毫秒 private static final int MAX_POLLING_TIMES = 100; // 最大退出次数 diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/CodingWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/CodingWorker.java index 93284780..cc8f1630 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/CodingWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/CodingWorker.java @@ -4,6 +4,7 @@ import cd.casic.ci.common.pipeline.annotation.Plugin; import cd.casic.ci.process.engine.constant.EngineRuntimeConstant; import cd.casic.ci.process.engine.context.ConstantContextHolder; import cd.casic.ci.process.engine.runContext.TaskRunContext; +import cd.casic.ci.process.engine.worker.base.HttpWorker; import cd.casic.ci.process.process.dataObject.base.PipBaseElement; import cd.casic.ci.process.process.dataObject.log.PipTaskLog; import cd.casic.ci.process.process.dataObject.task.PipTask; @@ -29,8 +30,8 @@ import java.util.*; * @Description: */ @Slf4j -@Plugin(taskType = "coding") -public class CodingWorker extends HttpWorker{ +@Plugin(taskType = "CODING") +public class CodingWorker extends HttpWorker { private static final int POLLING_INTERVAL = 5000; // 轮询间隔,单位:毫秒 private static final int MAX_POLLING_TIMES = 100; // 最大退出次数 diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/CustomCompilerWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/CustomCompilerWorker.java new file mode 100644 index 00000000..fb7e75d2 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/CustomCompilerWorker.java @@ -0,0 +1,25 @@ +package cd.casic.ci.process.engine.worker; + +import cd.casic.ci.common.pipeline.annotation.Plugin; +import cd.casic.ci.process.engine.runContext.TaskRunContext; +import cd.casic.ci.process.engine.worker.base.BaseWorker; +import cd.casic.ci.process.process.dataObject.base.PipBaseElement; +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; + +/** + * 自定义编译 + * */ +@Slf4j +@Plugin(taskType = "CUSTOM_COMPILE") +public class CustomCompilerWorker extends BaseWorker { + + + @Override + public void execute(TaskRunContext context) { + PipBaseElement contextDef = context.getContextDef(); + String id = contextDef.getId(); + log.info("==============触发worker执行========"); + log.info("==========运行context:{}===========", JSON.toJSONString(context)); + } +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/DBFuzzTestingWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/DBFuzzTestingWorker.java new file mode 100644 index 00000000..ff893345 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/DBFuzzTestingWorker.java @@ -0,0 +1,25 @@ +package cd.casic.ci.process.engine.worker; + +import cd.casic.ci.common.pipeline.annotation.Plugin; +import cd.casic.ci.process.engine.runContext.TaskRunContext; +import cd.casic.ci.process.engine.worker.base.BaseWorker; +import cd.casic.ci.process.process.dataObject.base.PipBaseElement; +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; + +/** + * 数据库模糊测试 + * */ +@Slf4j +@Plugin(taskType = "DB_FUZZ_TESTING") +public class DBFuzzTestingWorker extends BaseWorker { + + + @Override + public void execute(TaskRunContext context) { + PipBaseElement contextDef = context.getContextDef(); + String id = contextDef.getId(); + log.info("==============触发worker执行========"); + log.info("==========运行context:{}===========", JSON.toJSONString(context)); + } +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/DIYImageExecuteCommandWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/DIYImageExecuteCommandWorker.java index 4eaac601..028c9aec 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/DIYImageExecuteCommandWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/DIYImageExecuteCommandWorker.java @@ -4,19 +4,14 @@ import cd.casic.ci.common.pipeline.annotation.Plugin; import cd.casic.ci.process.engine.constant.DIYImageExecuteCommandConstant; import cd.casic.ci.process.engine.constant.EngineRuntimeConstant; import cd.casic.ci.process.engine.runContext.TaskRunContext; -import cd.casic.ci.process.process.dataObject.base.PipBaseElement; +import cd.casic.ci.process.engine.worker.base.SshWorker; import cd.casic.ci.process.process.dataObject.log.PipTaskLog; import cd.casic.ci.process.process.dataObject.machine.MachineInfo; import cd.casic.ci.process.process.dataObject.task.PipTask; -import cd.casic.framework.commons.exception.ServiceException; -import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; -import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; import java.util.Map; -import java.util.concurrent.atomic.AtomicInteger; /** * 自定义镜像执行命令 diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/SastWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/SastWorker.java new file mode 100644 index 00000000..d0e799fe --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/SastWorker.java @@ -0,0 +1,25 @@ +package cd.casic.ci.process.engine.worker; + +import cd.casic.ci.common.pipeline.annotation.Plugin; +import cd.casic.ci.process.engine.runContext.TaskRunContext; +import cd.casic.ci.process.engine.worker.base.BaseWorker; +import cd.casic.ci.process.process.dataObject.base.PipBaseElement; +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; + +/** + * sast + * */ +@Slf4j +@Plugin(taskType = "SAST") +public class SastWorker extends BaseWorker { + + + @Override + public void execute(TaskRunContext context) { + PipBaseElement contextDef = context.getContextDef(); + String id = contextDef.getId(); + log.info("==============触发worker执行========"); + log.info("==========运行context:{}===========", JSON.toJSONString(context)); + } +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ScaBinaryWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ScaBinaryWorker.java index f7034088..b8056353 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ScaBinaryWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ScaBinaryWorker.java @@ -4,6 +4,7 @@ import cd.casic.ci.common.pipeline.annotation.Plugin; import cd.casic.ci.process.engine.context.ConstantContextHolder; import cd.casic.ci.process.engine.runContext.BaseRunContext; import cd.casic.ci.process.engine.runContext.TaskRunContext; +import cd.casic.ci.process.engine.worker.base.HttpWorker; import cd.casic.ci.process.process.dataObject.base.PipBaseElement; import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; import cd.casic.ci.process.process.dataObject.target.TargetVersion; @@ -38,8 +39,8 @@ import java.util.*; * @Description: */ @Slf4j -@Plugin(taskType = "binary") -public class ScaBinaryWorker extends HttpWorker{ +@Plugin(taskType = "BINARY") +public class ScaBinaryWorker extends HttpWorker { private static final int POLLING_INTERVAL = 5000; // 轮询间隔,单位:毫秒 private static final int MAX_POLLING_TIMES = 100; // 最大退出次数 diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ScaMirrorWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ScaMirrorWorker.java index 9cb14eea..e5f9e898 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ScaMirrorWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ScaMirrorWorker.java @@ -1,12 +1,11 @@ package cd.casic.ci.process.engine.worker; import cd.casic.ci.common.pipeline.annotation.Plugin; -import cd.casic.ci.process.engine.constant.EngineRuntimeConstant; import cd.casic.ci.process.engine.context.ConstantContextHolder; import cd.casic.ci.process.engine.runContext.BaseRunContext; import cd.casic.ci.process.engine.runContext.TaskRunContext; +import cd.casic.ci.process.engine.worker.base.HttpWorker; import cd.casic.ci.process.process.dataObject.base.PipBaseElement; -import cd.casic.ci.process.process.dataObject.log.PipTaskLog; import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; import cd.casic.ci.process.process.dataObject.target.TargetVersion; import cd.casic.ci.process.process.dataObject.task.PipTask; @@ -41,8 +40,8 @@ import java.util.*; * @Description: */ @Slf4j -@Plugin(taskType = "mirror") -public class ScaMirrorWorker extends HttpWorker{ +@Plugin(taskType = "MIRROR") +public class ScaMirrorWorker extends HttpWorker { private static final int POLLING_INTERVAL = 5000; // 轮询间隔,单位:毫秒 private static final int MAX_POLLING_TIMES = 100; // 最大退出次数 diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ScaSbomWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ScaSbomWorker.java index 994a104d..a69ddf49 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ScaSbomWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ScaSbomWorker.java @@ -5,6 +5,7 @@ import cd.casic.ci.process.engine.constant.EngineRuntimeConstant; import cd.casic.ci.process.engine.context.ConstantContextHolder; import cd.casic.ci.process.engine.runContext.BaseRunContext; import cd.casic.ci.process.engine.runContext.TaskRunContext; +import cd.casic.ci.process.engine.worker.base.HttpWorker; import cd.casic.ci.process.process.dataObject.base.PipBaseElement; import cd.casic.ci.process.process.dataObject.log.PipTaskLog; import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; @@ -41,7 +42,7 @@ import java.util.*; */ @Slf4j @Plugin(taskType = "SCA_S_BOM") -public class ScaSbomWorker extends HttpWorker{ +public class ScaSbomWorker extends HttpWorker { private static final int POLLING_INTERVAL = 5000; // 轮询间隔,单位:毫秒 private static final int MAX_POLLING_TIMES = 100; // 最大退出次数 diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/TargetHandleWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/TargetHandleWorker.java index 6a13207d..0b0992b2 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/TargetHandleWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/TargetHandleWorker.java @@ -2,6 +2,7 @@ package cd.casic.ci.process.engine.worker; import cd.casic.ci.common.pipeline.annotation.Plugin; import cd.casic.ci.process.engine.runContext.TaskRunContext; +import cd.casic.ci.process.engine.worker.base.BaseWorker; import cd.casic.ci.process.process.dataObject.base.PipBaseElement; import cd.casic.ci.process.process.dataObject.machine.MachineInfo; import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; @@ -13,7 +14,6 @@ import cd.casic.ci.process.util.CryptogramUtil; import cd.casic.ci.process.util.SftpUploadUtil; import cd.casic.framework.commons.exception.ServiceException; import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; -import com.alibaba.fastjson.JSON; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -27,7 +27,7 @@ import java.util.Map; * */ @Slf4j @Plugin(taskType = "code") -public class TargetHandleWorker extends BaseWorker{ +public class TargetHandleWorker extends BaseWorker { @Resource private TargetVersionService targetVersionService; @Resource diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/TestCaseGenerationWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/TestCaseGenerationWorker.java index be2d1b70..5926e290 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/TestCaseGenerationWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/TestCaseGenerationWorker.java @@ -1,10 +1,10 @@ package cd.casic.ci.process.engine.worker; import cd.casic.ci.common.pipeline.annotation.Plugin; -import cd.casic.ci.process.engine.constant.AFLConstant; import cd.casic.ci.process.engine.constant.DIYImageExecuteCommandConstant; import cd.casic.ci.process.engine.constant.TestCaseGenerationConstant; import cd.casic.ci.process.engine.runContext.TaskRunContext; +import cd.casic.ci.process.engine.worker.base.SshWorker; import cd.casic.ci.process.process.dataObject.machine.MachineInfo; import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; import cd.casic.ci.process.process.dataObject.task.PipTask; @@ -16,7 +16,7 @@ import java.util.Map; @Plugin(taskType = "TEST_CASE_GENERATION") @Slf4j -public class TestCaseGenerationWorker extends SshWorker{ +public class TestCaseGenerationWorker extends SshWorker { @Override public void execute(TaskRunContext context) { int statusCode = -1; diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/TestGitWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/TestGitWorker.java index a7573325..01730756 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/TestGitWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/TestGitWorker.java @@ -2,6 +2,7 @@ package cd.casic.ci.process.engine.worker; import cd.casic.ci.common.pipeline.annotation.Plugin; import cd.casic.ci.process.engine.runContext.TaskRunContext; +import cd.casic.ci.process.engine.worker.base.BaseWorker; import cd.casic.ci.process.process.dataObject.base.PipBaseElement; import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; @@ -9,7 +10,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j @Plugin(taskType = "Github") -public class TestGitWorker extends BaseWorker{ +public class TestGitWorker extends BaseWorker { @Override diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/TestWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/TestWorker.java index df9f1ba2..844a97d8 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/TestWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/TestWorker.java @@ -1,7 +1,7 @@ package cd.casic.ci.process.engine.worker; -import cd.casic.ci.common.pipeline.annotation.Plugin; import cd.casic.ci.process.engine.runContext.TaskRunContext; +import cd.casic.ci.process.engine.worker.base.BaseWorker; import cd.casic.ci.process.process.dataObject.base.PipBaseElement; import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; @@ -9,7 +9,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j //@Plugin(taskType = "test") -public class TestWorker extends BaseWorker{ +public class TestWorker extends BaseWorker { @Override diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/UnitTestingWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/UnitTestingWorker.java new file mode 100644 index 00000000..8cc93a66 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/UnitTestingWorker.java @@ -0,0 +1,25 @@ +package cd.casic.ci.process.engine.worker; + +import cd.casic.ci.common.pipeline.annotation.Plugin; +import cd.casic.ci.process.engine.runContext.TaskRunContext; +import cd.casic.ci.process.engine.worker.base.BaseWorker; +import cd.casic.ci.process.process.dataObject.base.PipBaseElement; +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; + +/** + * 单元测试 + * */ +@Slf4j +@Plugin(taskType = "UNIT_TESTING") +public class UnitTestingWorker extends BaseWorker { + + + @Override + public void execute(TaskRunContext context) { + PipBaseElement contextDef = context.getContextDef(); + String id = contextDef.getId(); + log.info("==============触发worker执行========"); + log.info("==========运行context:{}===========", JSON.toJSONString(context)); + } +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/BaseWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/BaseWorker.java similarity index 86% rename from modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/BaseWorker.java rename to modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/BaseWorker.java index 7baa4dfa..be64100f 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/BaseWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/BaseWorker.java @@ -1,4 +1,4 @@ -package cd.casic.ci.process.engine.worker; +package cd.casic.ci.process.engine.worker.base; import cd.casic.ci.process.constant.CommandConstant; @@ -58,12 +58,12 @@ public abstract class BaseWorker implements Runnable{ if (context instanceof TaskRunContext taskRunContext){ try { taskRunContext.changeContextState(ContextStateEnum.READY); - taskRunContext.changeContextState(ContextStateEnum.RUNNING); - PipBaseElement contextDef = taskRunContext.getContextDef(); - PipTaskLog pipTaskLog = new PipTaskLog(); - pipTaskLog.setId(contextDef.getId()); - pipTaskLog.setContent(""); - taskRunContext.getLocalVariables().put(EngineRuntimeConstant.LOG_KEY,pipTaskLog); + if (this instanceof PassableWorker passableWorker) { + taskRunContext.changeContextState(ContextStateEnum.SUSPEND); + passableWorker.waitForPermission(); + } else { + taskRunContext.changeContextState(ContextStateEnum.RUNNING); + } execute(taskRunContext); } catch (Exception e) { log.error("================worker执行报错:",e); diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/HttpWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/HttpWorker.java similarity index 94% rename from modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/HttpWorker.java rename to modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/HttpWorker.java index d7fac015..3b0dadf1 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/HttpWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/HttpWorker.java @@ -1,6 +1,7 @@ -package cd.casic.ci.process.engine.worker; +package cd.casic.ci.process.engine.worker.base; +import cd.casic.ci.process.engine.worker.base.BaseWorker; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder; @@ -15,7 +16,6 @@ import javax.net.ssl.SSLContext; import java.security.KeyManagementException; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; -import java.security.cert.X509Certificate; /** * @author HopeLi @@ -24,7 +24,7 @@ import java.security.cert.X509Certificate; * @Date: 2025/5/21 20:13 * @Description: */ -public abstract class HttpWorker extends BaseWorker{ +public abstract class HttpWorker extends BaseWorker { public static RestTemplate getRestTemplateWithoutSANCheck() throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, KeyStoreException { // 创建信任所有证书的SSL上下文 SSLContext sslContext = SSLContextBuilder.create() diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/PassableWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/PassableWorker.java new file mode 100644 index 00000000..95db7e4a --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/PassableWorker.java @@ -0,0 +1,10 @@ +package cd.casic.ci.process.engine.worker.base; + +import cd.casic.ci.process.engine.enums.ContextStateEnum; + +public abstract class PassableWorker extends BaseWorker{ + /** + * 这个方法用于阻塞 + * */ + public abstract void waitForPermission(); +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/SshWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/SshWorker.java similarity index 95% rename from modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/SshWorker.java rename to modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/SshWorker.java index 01786f8f..f3372981 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/SshWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/SshWorker.java @@ -1,9 +1,9 @@ -package cd.casic.ci.process.engine.worker; +package cd.casic.ci.process.engine.worker.base; import cd.casic.ci.process.constant.CommandConstant; import cd.casic.ci.process.engine.runContext.BaseRunContext; +import cd.casic.ci.process.engine.worker.base.BaseWorker; import cd.casic.ci.process.enums.MachineSystemEnum; -import cd.casic.ci.process.process.dataObject.log.PipTaskLog; import cd.casic.ci.process.process.dataObject.machine.MachineInfo; import cd.casic.ci.process.ssh.SshClient; import cd.casic.ci.process.ssh.SshClientFactory; @@ -16,7 +16,7 @@ import java.util.List; * 使用ssh的worker的基类 * */ @Slf4j -public abstract class SshWorker extends BaseWorker{ +public abstract class SshWorker extends BaseWorker { /** * 执行shell命令 * @param machineInfo 机器 diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/impl/PipelineServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/impl/PipelineServiceImpl.java index cee50782..a5da099f 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/impl/PipelineServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/impl/PipelineServiceImpl.java @@ -141,7 +141,7 @@ public class PipelineServiceImpl extends ServiceImpl i PipTask childTask11 = new PipTask(); childTask11.setCreateTime(LocalDateTime.now()); childTask11.setCreator(String.valueOf(WebFrameworkUtils.getLoginUserId())); - childTask11.setTaskName("串行任务-1-1"); + childTask11.setTaskName("目标"); childTask11.setPipelineId(pipeline.getId()); childTask11.setTaskType("code"); childTask11.setTaskSort(1);