From ac2ed854740c65979e90ddb34c8bfd626af167a5 Mon Sep 17 00:00:00 2001 From: even <827656971@qq.com> Date: Wed, 4 Jun 2025 10:19:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E6=B0=B4=E7=BA=BF=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=8Cbug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cd/casic/ci/api/TestController.java | 19 +++++++++++++++++++ .../dispatcher/impl/ParallelDispatcher.java | 8 ++------ .../engine/enums/ContextStateEnum.java | 4 +++- .../impl/DefaultRunContextManager.java | 4 +++- .../engine/runContext/BaseRunContext.java | 6 +----- .../engine/worker/TargetHandleWorker.java | 1 + .../engine/worker/base/BaseWorker.java | 1 + 7 files changed, 30 insertions(+), 13 deletions(-) create mode 100644 modules/module-ci-process-api/src/main/java/cd/casic/ci/api/TestController.java diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/TestController.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/TestController.java new file mode 100644 index 00000000..f4f35055 --- /dev/null +++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/TestController.java @@ -0,0 +1,19 @@ +package cd.casic.ci.api; + +import cd.casic.ci.process.util.CryptogramUtil; +import cd.casic.ci.process.util.SftpUploadUtil; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController("/test") +public class TestController { + @PostMapping("/upload") + public void uploadTest(){ + + try { + SftpUploadUtil.uploadFileViaSftp("175.6.27.228",22,"hnidc", CryptogramUtil.doDecrypt("cb2ee50ff663312808773f1698b801d2f9d6073f9684473e090767edbc2dba93"),null,"/ops/ops-pro/ops-server.jar","/home/casic/706/ai_test_527","ops-server.jar"); + } catch (SftpUploadUtil.SftpUploadException e) { + throw new RuntimeException(e); + } + } +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/dispatcher/impl/ParallelDispatcher.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/dispatcher/impl/ParallelDispatcher.java index 7f20abeb..1c0250e9 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/dispatcher/impl/ParallelDispatcher.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/dispatcher/impl/ParallelDispatcher.java @@ -53,16 +53,12 @@ public class ParallelDispatcher implements BaseDispatcher{ } // 等待当前阶段执行 latch.await(); + // TODO 检查是否全部执行成功 ,目前没有逻辑就是忽略错误 + // 当前执行失败 if (pipelineRunContext.getState().get()== ContextStateEnum.BAD_ENDING.getCode()) { log.error("并行执行停止"); break; } - // TODO 检查是否全部执行成功 ,目前没有逻辑就是忽略错误 - // 当前执行失败 -// while (pipelineRunContext.getState().get() != ContextStateEnum.RUNNING.getCode()) { -// // 想办法借助工具类 或者直接wait -// pipelineRunContext.pause(); -// } } } @Override diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/enums/ContextStateEnum.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/enums/ContextStateEnum.java index b37c2852..1f11e00b 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/enums/ContextStateEnum.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/enums/ContextStateEnum.java @@ -12,7 +12,8 @@ public enum ContextStateEnum { SUSPEND(3,"挂起"), STOP(-1,"停止"), HAPPY_ENDING(4,"执行成功"), - BAD_ENDING(5,"执行失败") + BAD_ENDING(5,"执行失败"), + SKIP_TO(6,"跳过") ; private Integer code; @@ -25,6 +26,7 @@ public enum ContextStateEnum { TRANSITIONS.put(RUNNING, Set.of(RUNNING,SUSPEND, HAPPY_ENDING, BAD_ENDING, STOP)); TRANSITIONS.put(SUSPEND, Set.of(SUSPEND,INIT, READY, BAD_ENDING, RUNNING,STOP)); //...初始化其他状态转移关系 + TRANSITIONS.put(SKIP_TO,Collections.emptySet()); } ContextStateEnum(Integer code, String msg) { diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultRunContextManager.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultRunContextManager.java index 8c18f510..9db52659 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultRunContextManager.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultRunContextManager.java @@ -12,6 +12,7 @@ import cd.casic.ci.process.process.dataObject.base.PipBaseElement; 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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import jakarta.annotation.Resource; import org.springframework.stereotype.Component; @@ -65,7 +66,8 @@ public class DefaultRunContextManager implements RunContextManager { if (contextMap.containsKey(id)) { PipelineRunContext oldPipeline = contextMap.get(id); oldPipeline.changeContextStateAndChild(ContextStateEnum.BAD_ENDING); - List taskList = taskDao.selectList("pipelineId", id); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + List taskList = taskDao.selectList(wrapper); List taskIdList = taskList.stream().map(PipTask::getId).toList(); // 清空上一次的日志 loggerManager.flushMemory(taskIdList); diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/BaseRunContext.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/BaseRunContext.java index 3aa552b9..2411debb 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/BaseRunContext.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/BaseRunContext.java @@ -30,7 +30,7 @@ public abstract class BaseRunContext { /** * 运行状态 * */ - private AtomicInteger state; + private final AtomicInteger state; /** * 启动时间 * */ @@ -90,10 +90,6 @@ public abstract class BaseRunContext { } } } - // 保证一直都操作同一个引用的值 - private void setState(AtomicInteger state) { - this.state = state; - } /** * 获取当前或者子上下文 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 a81c2577..6020087f 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 @@ -6,6 +6,7 @@ import cd.casic.ci.process.engine.runContext.TaskRunContext; import cd.casic.ci.process.engine.worker.base.BaseWorker; import cd.casic.ci.process.process.service.machine.MachineInfoService; import cd.casic.ci.process.process.service.target.TargetVersionService; +import cd.casic.ci.process.util.SftpUploadUtil; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/BaseWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/BaseWorker.java index 0d630482..b988063d 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/BaseWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/BaseWorker.java @@ -67,6 +67,7 @@ public abstract class BaseWorker implements Runnable{ execute(taskRunContext); } catch (Exception e) { log.error("================worker执行报错:",e); + // todo 根据配置决定失败是跳过还是直接失败,如果直接跳过,状态改为跳过,如果直接失败状态就改为失败 taskRunContext.changeContextState(ContextStateEnum.BAD_ENDING); append(context,e.getMessage()); return;