From 5949b36c752f44ca17dff0cc96122258b1a5339a Mon Sep 17 00:00:00 2001 From: even <827656971@qq.com> Date: Mon, 7 Jul 2025 18:06:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B0=B4=E6=9C=A8=E6=8E=A5=E5=8F=A3=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cd/casic/ci/api/ShuiMuController.java | 5 ++++ .../process/constant/ShuiMuUrlConstant.java | 1 + .../resp/shuimu/ShuiMuProjectReportResp.java | 22 +++++++++++++++++ .../impl/DefaultRunContextManager.java | 7 ++++-- .../process/engine/worker/afl/AFLWorker.java | 24 ++++++++++++++++--- .../engine/worker/base/BaseWorker.java | 4 +++- .../process/service/shuimu/ShuiMuService.java | 8 +++---- .../shuimu/impl/ShuiMuServiceImpl.java | 23 ++++++++++++++++++ 8 files changed, 84 insertions(+), 10 deletions(-) create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/shuimu/ShuiMuProjectReportResp.java diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/ShuiMuController.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/ShuiMuController.java index b1660c3e..20b7b396 100644 --- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/ShuiMuController.java +++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/ShuiMuController.java @@ -5,6 +5,7 @@ import cd.casic.ci.process.dto.req.shuimu.ShuiMuProjectCreateReq; import cd.casic.ci.process.dto.req.shuimu.ShuiMuTestProblemReq; import cd.casic.ci.process.dto.req.shuimu.ShuiMuUpdateWFuzzJsonReq; import cd.casic.ci.process.dto.resp.shuimu.ShuiMuProjectInfoResp; +import cd.casic.ci.process.dto.resp.shuimu.ShuiMuProjectReportResp; import cd.casic.ci.process.dto.resp.shuimu.ShuiMuProjectVersionResp; import cd.casic.ci.process.dto.resp.shuimu.ShuiMuTestProblemResp; import cd.casic.ci.process.process.service.shuimu.ShuiMuService; @@ -69,4 +70,8 @@ public class ShuiMuController { public CommonResult> problemsOfTest(@RequestBody ShuiMuTestProblemReq req){ return CommonResult.success(shuiMuService.problemsOfTest(req)); } + @GetMapping("/getProjectReport") + public CommonResult getProjectReport(@RequestParam String projectId){ + return CommonResult.success(shuiMuService.getProjectReport(projectId)); + } } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/constant/ShuiMuUrlConstant.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/constant/ShuiMuUrlConstant.java index 64f371e5..793dfbeb 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/constant/ShuiMuUrlConstant.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/constant/ShuiMuUrlConstant.java @@ -18,4 +18,5 @@ public class ShuiMuUrlConstant { public static final String executeAllEntrypointsTest ="/api/driverGeneration/executeAllEntrypointsTest"; public static final String problemsOfTest = "/api/test/problemsOfTest"; + public static final String getProjectReport = "/api/project"; } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/shuimu/ShuiMuProjectReportResp.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/shuimu/ShuiMuProjectReportResp.java new file mode 100644 index 00000000..c4b60b3a --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/shuimu/ShuiMuProjectReportResp.java @@ -0,0 +1,22 @@ +package cd.casic.ci.process.dto.resp.shuimu; + +import lombok.Data; + +@Data +public class ShuiMuProjectReportResp { + private String id; + private String name; + private String language; + private String description; + private String product; + private String ownerId; + private String createBy; + private String createAt; + private String updateAt; + private String deleteAt; + private String projectRunning; + private String problemsCount; + private String fixedProblemsCount; + private String noFixedProblemsCount; + private String projectFlag; +} 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 421efbab..867e3e08 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 @@ -5,6 +5,7 @@ import cd.casic.ci.process.dto.resp.context.TreeRunContextResp; import cd.casic.ci.process.engine.constant.EngineRuntimeConstant; import cd.casic.ci.process.engine.enums.ContextStateEnum; import cd.casic.ci.process.engine.manager.LoggerManager; +import cd.casic.ci.process.engine.manager.PostHandlerManager; import cd.casic.ci.process.engine.manager.RunContextManager; import cd.casic.ci.process.engine.runContext.BaseRunContext; import cd.casic.ci.process.engine.runContext.PipelineRunContext; @@ -46,11 +47,11 @@ public class DefaultRunContextManager implements RunContextManager { @Resource private LoggerManager loggerManager; @Resource - private PipTaskDao taskDao; - @Resource private PipPipelineHisInstanceDao hisInstanceDao; @Resource private PipelineService pipelineService; + @Resource + private PostHandlerManager postHandlerManager; @Override public Boolean stopPipeline(String pipelineId) { @@ -194,6 +195,8 @@ public class DefaultRunContextManager implements RunContextManager { pipPipelineHisInstance.setTargetVersionName(""); pipPipelineHisInstance.setTargetVersionId(pipeline.getTargetVersionId()); hisInstanceDao.insert(pipPipelineHisInstance); + // 执行后置处理逻辑 + postHandlerManager.executePostHandler(pipPipelineHisInstance); } } } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLWorker.java index 86b163d9..b6febbc5 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLWorker.java @@ -1,6 +1,7 @@ package cd.casic.ci.process.engine.worker.afl; import cd.casic.ci.process.common.WorkAtom; +import cd.casic.ci.process.dto.req.aflManager.AflManagerReq; import cd.casic.ci.process.dto.req.resource.ResourceQueryReq; import cd.casic.ci.process.dto.resp.resource.ResourceFindResp; import cd.casic.ci.process.dto.resp.taskResource.TaskResourceFindResp; @@ -13,6 +14,9 @@ import cd.casic.ci.process.engine.worker.base.DockerWorker; 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.aflManager.AflInfoService; +import cd.casic.ci.process.process.service.aflManager.AflPlotInfoService; +import cd.casic.ci.process.process.service.aflManager.AflSeedInfoService; import cd.casic.ci.process.process.service.target.TargetVersionService; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; @@ -49,6 +53,7 @@ public class AFLWorker extends DockerWorker { String commandEnd = taskProperties.get(COMMAND_END) instanceof String ? ((String) taskProperties.get(COMMAND_END)) : null; String imageName = getVariableNearby(context,IMAGE_NAME) instanceof String ? ((String) getVariableNearby(context,IMAGE_NAME)) : null; String executableName = taskProperties.get(EXECUTABLE_NAME) instanceof String ? ((String) taskProperties.get(EXECUTABLE_NAME)) : null; + putGlobalVariable(context, EXECUTABLE_NAME_KEY,imageName); // 代码编译目录 String workDir = (String)getGlobalVariable(context,AFL_DOCKER_WORK_DIR_KEY); // 入参目录 @@ -102,20 +107,33 @@ public class AFLWorker extends DockerWorker { toBadEnding(); } localVariables.put(DIYImageExecuteCommandConstant.STATUS_CODE, statusCode); - putGlobalVariable(context, EXECUTABLE_NAME_KEY,imageName); + } } - public String cdSourceName(String fileName){ + private String cdSourceName(String fileName){ int dotIndex = fileName.lastIndexOf("."); if (dotIndex!=-1) { return "cd "+fileName.substring(0, dotIndex)+"\n"; } return ""; } - public Long getRunningTime(Double runningTimeHours){ + private Long getRunningTime(Double runningTimeHours){ if (runningTimeHours!=null && runningTimeHours >0) { return (long)(runningTimeHours*60*60*1000); } return null; } + @Resource + private AflInfoService aflInfoService; + @Resource + private AflSeedInfoService aflSeedInfoService; + @Resource + private AflPlotInfoService aflPlotInfoService; + private void afterTaskExecute(){ + AflManagerReq aflManagerReq = new AflManagerReq(); + aflInfoService.saveAflInfo(); + } + private void afterPipelineExecute(){ + + } } 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 7c7feea4..18486107 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 @@ -7,6 +7,7 @@ import cd.casic.ci.process.engine.constant.PipelineBehaviorConstant; import cd.casic.ci.process.engine.context.ConstantContext; import cd.casic.ci.process.engine.enums.ContextStateEnum; import cd.casic.ci.process.engine.manager.LoggerManager; +import cd.casic.ci.process.engine.manager.PostHandlerManager; import cd.casic.ci.process.engine.manager.RunContextManager; import cd.casic.ci.process.engine.runContext.BaseRunContext; @@ -50,7 +51,8 @@ public abstract class BaseWorker implements Runnable{ protected LoggerManager loggerManager; @Resource protected ResourceManagerService resourceManagerService; - + @Resource + protected PostHandlerManager postHandlerManager; @Override public void run() { diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/shuimu/ShuiMuService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/shuimu/ShuiMuService.java index 2685b6bb..469ce6fc 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/shuimu/ShuiMuService.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/shuimu/ShuiMuService.java @@ -4,10 +4,7 @@ import cd.casic.ci.process.dto.req.shuimu.ShuiMuBuildAndSaveReq; import cd.casic.ci.process.dto.req.shuimu.ShuiMuProjectCreateReq; import cd.casic.ci.process.dto.req.shuimu.ShuiMuTestProblemReq; import cd.casic.ci.process.dto.req.shuimu.ShuiMuUpdateWFuzzJsonReq; -import cd.casic.ci.process.dto.resp.shuimu.ShuiMuProjectInfoResp; -import cd.casic.ci.process.dto.resp.shuimu.ShuiMuProjectResourceResp; -import cd.casic.ci.process.dto.resp.shuimu.ShuiMuProjectVersionResp; -import cd.casic.ci.process.dto.resp.shuimu.ShuiMuTestProblemResp; +import cd.casic.ci.process.dto.resp.shuimu.*; import cd.casic.framework.commons.pojo.CommonResult; import org.springframework.web.bind.annotation.RequestBody; @@ -38,4 +35,7 @@ public interface ShuiMuService { ShuiMuProjectResourceResp getProjectResource(String projectId); List problemsOfTest(ShuiMuTestProblemReq req); + + ShuiMuProjectReportResp getProjectReport(String projectId); + } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/shuimu/impl/ShuiMuServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/shuimu/impl/ShuiMuServiceImpl.java index 93a9be22..75456b7f 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/shuimu/impl/ShuiMuServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/shuimu/impl/ShuiMuServiceImpl.java @@ -24,6 +24,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.core.io.FileSystemResource; import org.springframework.http.*; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; @@ -296,6 +297,28 @@ public class ShuiMuServiceImpl implements ShuiMuService { String data = jsonObject.getString("data"); return JSONArray.parseArray(data, ShuiMuTestProblemResp.class); } + @Override + public ShuiMuProjectReportResp getProjectReport(String projectId) { + HttpEntity entity = new HttpEntity<>(null,getHeaders()); + String uriString = UriComponentsBuilder.fromUriString(shuiMuProperties.getBaseUrl() + getProjectReport ) + .queryParam("skip",0) + .queryParam("limit",1) + .queryParam("product","code") + .queryParam("projectId",projectId) + .queryParam("showMine",0) + .toUriString(); + ResponseEntity exchange = restTemplate.exchange(uriString, HttpMethod.GET, entity, String.class, new HashMap<>()); + if (exchange.getStatusCode().isError()) { + throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"保存并且构建失败"); + } + String data = JSON.parseObject(exchange.getBody()).getString("data"); + + List list = JSON.parseArray(data, ShuiMuProjectReportResp.class); + if (CollectionUtils.isEmpty(list)) { + return null; + } + return list.get(0); + } private HttpHeaders getHeaders(){ HttpHeaders httpHeaders = new HttpHeaders();