水木接口添加

This commit is contained in:
even 2025-07-07 18:06:40 +08:00
parent 19e4bd819a
commit 5949b36c75
8 changed files with 84 additions and 10 deletions

View File

@ -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<List<ShuiMuTestProblemResp>> problemsOfTest(@RequestBody ShuiMuTestProblemReq req){
return CommonResult.success(shuiMuService.problemsOfTest(req));
}
@GetMapping("/getProjectReport")
public CommonResult<ShuiMuProjectReportResp> getProjectReport(@RequestParam String projectId){
return CommonResult.success(shuiMuService.getProjectReport(projectId));
}
}

View File

@ -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";
}

View File

@ -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;
}

View File

@ -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);
}
}
}

View File

@ -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(){
}
}

View File

@ -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() {

View File

@ -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<ShuiMuTestProblemResp> problemsOfTest(ShuiMuTestProblemReq req);
ShuiMuProjectReportResp getProjectReport(String projectId);
}

View File

@ -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<String> 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<String> 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<ShuiMuProjectReportResp> list = JSON.parseArray(data, ShuiMuProjectReportResp.class);
if (CollectionUtils.isEmpty(list)) {
return null;
}
return list.get(0);
}
private HttpHeaders getHeaders(){
HttpHeaders httpHeaders = new HttpHeaders();