diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/SastController.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/SastController.java index 6709ba64..831f2fee 100644 --- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/SastController.java +++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/SastController.java @@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.util.List; @@ -28,10 +29,20 @@ public class SastController { } @PostMapping("/uploadFile") public CommonResult uploadFile(MultipartFile multipartFile){ + File tempFile = null; try { - return CommonResult.success(sastService.uploadFile(multipartFile.getResource().getFile())); + byte[] bytes = multipartFile.getBytes(); + String[] split = multipartFile.getOriginalFilename().split("\\."); + tempFile = File.createTempFile(split[0], "."+split[1]); + FileOutputStream fos = new FileOutputStream(tempFile); + fos.write(bytes); + return CommonResult.success(sastService.uploadFile(tempFile)); } catch (IOException e) { return CommonResult.error(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR); + }finally { + if (tempFile!=null) { + tempFile.deleteOnExit(); + } } } @PostMapping("/createIdentifiedLanguageTask") 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 index da64cb0e..64e4884a 100644 --- 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 @@ -2,25 +2,49 @@ package cd.casic.ci.process.engine.worker; import cd.casic.ci.process.common.WorkAtom; +import cd.casic.ci.process.dto.req.sast.SastApplicationCreateReq; +import cd.casic.ci.process.dto.resp.sast.SastApplicationCreateResp; +import cd.casic.ci.process.dto.resp.sast.SastApplicationEchoResp; import cd.casic.ci.process.engine.runContext.TaskRunContext; import cd.casic.ci.process.engine.worker.base.BaseWorker; +import cd.casic.ci.process.process.converter.SastConverter; import cd.casic.ci.process.process.dataObject.base.PipBaseElement; +import cd.casic.ci.process.process.dataObject.task.PipTask; +import cd.casic.ci.process.process.service.sast.SastService; import com.alibaba.fastjson.JSON; +import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import java.util.List; + /** * sast * */ @Slf4j @WorkAtom(taskType = "SAST") public class SastWorker extends BaseWorker { - - + @Resource + private SastService sastService; + @Resource + private SastConverter converter; @Override public void execute(TaskRunContext context) { PipBaseElement contextDef = context.getContextDef(); String id = contextDef.getId(); log.info("==============触发worker执行========"); log.info("==========运行context:{}===========", JSON.toJSONString(context)); + if (contextDef instanceof PipTask task) { + String applicationId = (String)task.getTaskProperties().get("applicationId"); + SastApplicationEchoResp applicationEcho = sastService.getApplicationEcho(applicationId); + append(context,"获取到sast任务配置"+JSON.toJSONString(applicationEcho)); + SastApplicationCreateReq sastApplicationCreateReq = converter.converter(applicationEcho); + List list = applicationEcho.getLodeFiles().stream().map(SastApplicationEchoResp.LodeFile::getFileId).toList(); + sastApplicationCreateReq.setFileId(list); + append(context,"开始启动SAST任务,检测文件信息:{}"+JSON.toJSONString(applicationEcho.getLodeFiles())); + log.info("SAST启动任务入参:{}",JSON.toJSONString(sastApplicationCreateReq)); + SastApplicationCreateResp sastApplicationCreateResp = sastService.applicationCreate(sastApplicationCreateReq); + log.info("SAST启动任务返回值:{}",JSON.toJSONString(sastApplicationCreateResp)); + append(context,"启动任务完毕"); + } } } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/sast/impl/SastServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/sast/impl/SastServiceImpl.java index ad4b9ab0..aa5dc8ae 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/sast/impl/SastServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/sast/impl/SastServiceImpl.java @@ -163,7 +163,9 @@ public class SastServiceImpl implements SastService { String uriString = UriComponentsBuilder.fromHttpUrl(baseUrl + getApplicationEcho).queryParam("applicationId", applicationId).toUriString(); System.out.println(uriString); ResponseEntity exchange = restTemplate.exchange(uriString, HttpMethod.GET,entity,SastApplicationEchoResp.class,new HashMap<>()); - return exchange.getBody(); + SastApplicationEchoResp body = exchange.getBody(); + body.setApplicationId(applicationId); + return body; } private HttpHeaders getHeaders(){ diff --git a/ops-server/src/test/java/cd/casic/server/SastTest.java b/ops-server/src/test/java/cd/casic/server/SastTest.java index 3426232c..43dd9154 100644 --- a/ops-server/src/test/java/cd/casic/server/SastTest.java +++ b/ops-server/src/test/java/cd/casic/server/SastTest.java @@ -35,6 +35,8 @@ public class SastTest { ThreadPoolTaskExecutor workerExecutor; @Resource RedisTemplateUtils redisTemplateUtils; + @Resource + private SastConverter converter; @Test public void properties(){ System.out.println(JSON.toJSONString(sastProperties)); @@ -117,8 +119,7 @@ public class SastTest { public void applicationEcho(){ System.out.println(sastService.getApplicationEcho("98776c27-0f8b-4884-abed-26b384008968")); } - @Resource - private SastConverter converter; + @Test public void applicationCreate(){ SastApplicationEchoResp applicationEcho = sastService.getApplicationEcho("98776c27-0f8b-4884-abed-26b384008968");