From 046c03ec68769a471d9ecbd1bb7e7f39283bc4d4 Mon Sep 17 00:00:00 2001 From: even <827656971@qq.com> Date: Tue, 1 Jul 2025 11:15:34 +0800 Subject: [PATCH] =?UTF-8?q?AFL=E7=BC=96=E8=AF=91=E8=8A=82=E7=82=B9?= =?UTF-8?q?=EF=BC=8C=E5=8F=98=E9=87=8F=E6=94=BE=E5=85=A5=E4=B8=8A=E4=B8=8B?= =?UTF-8?q?=E6=96=87=E8=A7=84=E5=88=99=E5=8F=98=E6=9B=B4=20sasttokenredis?= =?UTF-8?q?=E8=BF=87=E6=9C=9F=E6=97=B6=E9=97=B4=E5=86=99=E6=AD=BB=E4=B8=BA?= =?UTF-8?q?1=E5=A4=A9=20sast=E9=A1=B9=E7=9B=AEid=E6=9B=B4=E6=8D=A2=20?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B=E7=94=9F=E6=88=90worker=20?= =?UTF-8?q?=E4=BA=8C=E8=BF=9B=E5=88=B6=E6=96=87=E4=BB=B6=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=8B=BC=E6=8E=A5=E9=A1=B9=E7=9B=AE=E6=96=87=E4=BB=B6=E5=A4=B9?= =?UTF-8?q?=E5=89=8D=E7=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cd/casic/ci/api/PipHistoryController.java | 2 +- .../worker/afl/AFLSlotCompileWorker.java | 16 ++++++------- .../worker/afl/TestCaseGenerationWorker.java | 23 +++++++++++++++---- .../engine/worker/sast/SastWorker.java | 4 +++- .../service/sast/impl/SastServiceImpl.java | 2 +- .../src/main/resources/application-local.yaml | 8 +++---- .../test/java/cd/casic/server/SftpTest.java | 2 +- 7 files changed, 37 insertions(+), 20 deletions(-) diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/PipHistoryController.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/PipHistoryController.java index 74166120..84de8693 100644 --- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/PipHistoryController.java +++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/PipHistoryController.java @@ -18,7 +18,7 @@ public class PipHistoryController { @Resource PipelineHistoryService pipelineHistoryService; @GetMapping("/getLogById") - public CommonResult getLogById(String id){ + public CommonResult getLogById(@RequestParam String id){ PipTaskLog byId = taskLogService.getById(id); return CommonResult.success(byId); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLSlotCompileWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLSlotCompileWorker.java index d159b896..1d1c5f75 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLSlotCompileWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLSlotCompileWorker.java @@ -104,23 +104,23 @@ public class AFLSlotCompileWorker extends DockerWorker { globalVariables.put(AFL_DOCKER_WORK_DIR_KEY,workDir); // 获取编译结果并存放 List compileResult = getCompileResult(context, realPath + File.separator + getSourceName(fileName), machineInfo); - if (Objects.isNull(getGlobalVariable(context, COMPILE_RESULT_KEY))) { +// if (Objects.isNull(getGlobalVariable(context, COMPILE_RESULT_KEY))) { // 如果全局变量不存在则放入全局变量中 putGlobalVariable(context,COMPILE_RESULT_KEY,compileResult);; - } +// } // 放入最近一级作用域 putSecondStageVariable(context,COMPILE_RESULT_KEY,compileResult); // 放入 所选资源供测试用例生成,AFL模糊测试节点使用 - if (Objects.isNull(getGlobalVariable(context, AFL_RESOURCE_MANAGER_ID_KEY))) { +// if (Objects.isNull(getGlobalVariable(context, AFL_RESOURCE_MANAGER_ID_KEY))) { // 如果全局变量不存在则放入全局变量中 putGlobalVariable(context, AFL_RESOURCE_MANAGER_ID_KEY,managerId);; - } +// } putSecondStageVariable(context,AFL_RESOURCE_MANAGER_ID_KEY,managerId); // 放入镜像名称 - if (Objects.isNull(getGlobalVariable(context, IMAGE_NAME))) { - // 如果全局变量不存在则放入全局变量中 - putGlobalVariable(context, IMAGE_NAME,imageName);; - } +// if (Objects.isNull(getGlobalVariable(context, IMAGE_NAME))) { +// // 如果全局变量不存在则放入全局变量中 + putGlobalVariable(context, IMAGE_NAME,imageName); +// } putSecondStageVariable(context,IMAGE_NAME,imageName); } private String handleZipFile(String fileName){ diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/TestCaseGenerationWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/TestCaseGenerationWorker.java index 53cf34e7..b298e285 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/TestCaseGenerationWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/TestCaseGenerationWorker.java @@ -5,13 +5,14 @@ import cd.casic.ci.process.common.WorkAtom; 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; -import cd.casic.ci.process.engine.constant.PipelineVariableConstant; -import cd.casic.ci.process.engine.constant.TestCaseGenerationConstant; import cd.casic.ci.process.engine.runContext.TaskRunContext; 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.resource.PipResourceMachine; +import cd.casic.ci.process.process.dataObject.target.TargetVersion; import cd.casic.ci.process.process.dataObject.task.PipTask; import cd.casic.ci.process.process.dataObject.testCase.TestCaseInfo; +import cd.casic.ci.process.process.service.target.TargetVersionService; import cd.casic.ci.process.process.service.testCase.TestCaseInfoService; import cd.casic.ci.process.util.CryptogramUtil; import cd.casic.ci.process.util.SftpUploadUtil; @@ -34,6 +35,8 @@ import static cd.casic.ci.process.engine.constant.TestCaseGenerationConstant.*; public class TestCaseGenerationWorker extends DockerWorker { @Resource private TestCaseInfoService testCaseInfoService; + @Resource + private TargetVersionService targetVersionService; @Override public void execute(TaskRunContext context) { int statusCode = -1; @@ -62,16 +65,21 @@ public class TestCaseGenerationWorker extends DockerWorker { TaskResourceFindResp dockerQuery = resourceManagerService.findResourceListByType(req); PipResourceMachine machineInfo = machineQuery.getResourceMachineList().get(0); DockerEndpointDo dockerInfo = dockerQuery.getDockerEndpointList().get(0); + PipPipeline pipeline = (PipPipeline) getContextManager().getContext(taskDef.getPipelineId()).getContextDef(); + TargetVersion targetVersion = targetVersionService.getById(pipeline.getTargetVersionId()); + String fileName = targetVersion.getFileName(); + String imageName = getVariableNearby(context,IMAGE_NAME) instanceof String ? ((String) getVariableNearby(context,IMAGE_NAME)) : null; //如果machineId为0,则说明该节点没有配置机器,则使用开始节点的机器 if (CASE_TYPE_AI.equals(caseType)) { // 容器内部test 目录, 获取编译后的文件 - String runScript = "docker run -v "+ AFL_VOLUME_WORK_DIR_PREFIX +":"+ AFL_DOCKER_BASE_DIR+" -it aflplusplus bash\n" // 目前测试用例ai生成只有这个路径能跑 + String runScript = "docker run -v "+ AFL_VOLUME_WORK_DIR_PREFIX +":"+ AFL_DOCKER_BASE_DIR+" -it "+imageName+" bash\n" // 目前测试用例ai生成只有这个路径能跑 + "cd "+ AFL_DOCKER_BASE_DIR+"\n" + "mkdir -p "+seedPath +"\n"+ "cd "+seedPath +"\n"+ - "PYTHONPATH=CaseGenerator/src python3 CaseGenerator/src/CaseGenerator/main.py --work-dir "+workDir+" --binary "+workDir+File.separator+binaryName+" --output-dir "+seedPath+" --count 100"; + "PYTHONPATH="+AFL_DOCKER_BASE_DIR+File.separator+"CaseGenerator/src python3 "+AFL_DOCKER_BASE_DIR+File.separator+"CaseGenerator/src/CaseGenerator/main.py --work-dir "+workDir+" --binary "+workDir+File.separator+getSourceName(fileName)+File.separator+binaryName+" --output-dir "+seedPath+" --count 100"; //将节点的配置信息反编译成对象 log.info("测试用例生成-AI生成,实际执行命令:{}" , runScript); + append(context,"测试用例生成-AI生成,实际执行命令:"+runScript); //获取机器 dockerRun(runScript,dockerInfo,context); } else if (CASE_TYPE_FILE.equals(caseType)){ @@ -123,4 +131,11 @@ public class TestCaseGenerationWorker extends DockerWorker { globalVariables.put(AFL_DOCKER_SEED_PATH_KEY,seedPath); } } + public String getSourceName(String fileName){ + int dotIndex = fileName.lastIndexOf("."); + if (dotIndex!=-1) { + return fileName.substring(0, dotIndex); + } + return ""; + } } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/sast/SastWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/sast/SastWorker.java index 7168400e..0d6bbf83 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/sast/SastWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/sast/SastWorker.java @@ -102,9 +102,10 @@ public class SastWorker extends BaseWorker { } } private JSONObject getReportJSON(String applicationId,String model,TaskRunContext context){ - String reqJSON = "{\"mode\":\"DETAILS\",\"contacts\":\"admin@clouditera.com\",\"reportType\":\"APPLICATION\",\"format\":\"JSON\",\"projectId\":\"8a863857-bab3-40d9-a79a-2cb6617a9dd3\",\"applicationIds\":[\"9e3e55d6-6d28-4fd1-adc2-15b6cf0702db\"],\"bugLevels\":[\"DEADLY\",\"SEVERITY\",\"POOR_RISK\",\"LOW_RISK\"],\"audRiskLevels\":[\"WAITING\",\"IGNORE\",\"HIGH\",\"MEDIUM\",\"LOW\",\"NONE\"],\"applicationScope\":\"ALL\"}"; + String reqJSON = "{\"mode\":\"DETAILS\",\"contacts\":\"admin@clouditera.com\",\"reportType\":\"APPLICATION\",\"format\":\"JSON\",\"projectId\":\"9e57b627-2297-4bbf-a08a-92ff7d6b719d\",\"applicationIds\":[\"9e3e55d6-6d28-4fd1-adc2-15b6cf0702db\"],\"bugLevels\":[\"DEADLY\",\"SEVERITY\",\"POOR_RISK\",\"LOW_RISK\"],\"audRiskLevels\":[\"WAITING\",\"IGNORE\",\"HIGH\",\"MEDIUM\",\"LOW\",\"NONE\"],\"applicationScope\":\"ALL\"}"; SastReportCreateReq sastReportCreateReq = JSON.parseObject(reqJSON, SastReportCreateReq.class); sastReportCreateReq.setMode(model); + sastReportCreateReq.setProjectId("8a863857-bab3-40d9-a79a-2cb6617a9dd3"); sastReportCreateReq.setFormat(SastConstant.REPORT_FORMAT_JSON); sastReportCreateReq.setApplicationIds(Collections.singletonList(applicationId)); log.info("获取JSON报告请求参数{}",JSON.toJSONString(sastReportCreateReq)); @@ -136,6 +137,7 @@ public class SastWorker extends BaseWorker { String reqJSON = "{\"mode\":\"DETAILS\",\"contacts\":\"admin@clouditera.com\",\"reportType\":\"APPLICATION\",\"format\":\"JSON\",\"projectId\":\"8a863857-bab3-40d9-a79a-2cb6617a9dd3\",\"applicationIds\":[\"9e3e55d6-6d28-4fd1-adc2-15b6cf0702db\"],\"bugLevels\":[\"DEADLY\",\"SEVERITY\",\"POOR_RISK\",\"LOW_RISK\"],\"audRiskLevels\":[\"WAITING\",\"IGNORE\",\"HIGH\",\"MEDIUM\",\"LOW\",\"NONE\"],\"applicationScope\":\"ALL\"}"; SastReportCreateReq sastReportCreateReq = JSON.parseObject(reqJSON, SastReportCreateReq.class); sastReportCreateReq.setMode(model); + sastReportCreateReq.setProjectId("8a863857-bab3-40d9-a79a-2cb6617a9dd3"); sastReportCreateReq.setFormat(SastConstant.REPORT_FORMAT_PDF); sastReportCreateReq.setApplicationIds(Collections.singletonList(applicationId)); log.info("获取报告请求参数{}",JSON.toJSONString(sastReportCreateReq)); 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 a2553775..2ffe84f8 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 @@ -78,7 +78,7 @@ public class SastServiceImpl implements SastService { if (StringUtils.isEmpty(token)) { SastTokenResp tokenRemote = getTokenRemote(); String accessToken = tokenRemote.getAccessToken(); - redisTemplateUtils.set(REDIS_SAST_TOKEN_KEY,accessToken,tokenRemote.getExpiresIn()); + redisTemplateUtils.set(REDIS_SAST_TOKEN_KEY,accessToken,12*60*60); token = accessToken; } } diff --git a/ops-server/src/main/resources/application-local.yaml b/ops-server/src/main/resources/application-local.yaml index 4750a0b0..8a6a726c 100644 --- a/ops-server/src/main/resources/application-local.yaml +++ b/ops-server/src/main/resources/application-local.yaml @@ -70,10 +70,10 @@ spring: # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 data: redis: -# host: 127.0.0.1 # 地址 -# port: 16379 # 端口 - host: 192.168.1.120 # 地址 - port: 6379 # 端口 + host: 127.0.0.1 # 地址 + port: 16379 # 端口 +# host: 192.168.1.120 # 地址 +# port: 6379 # 端口 database: 0 # 数据库索引 # password: dev # 密码,建议生产环境开启 diff --git a/ops-server/src/test/java/cd/casic/server/SftpTest.java b/ops-server/src/test/java/cd/casic/server/SftpTest.java index 48d37999..bfd0e7f9 100644 --- a/ops-server/src/test/java/cd/casic/server/SftpTest.java +++ b/ops-server/src/test/java/cd/casic/server/SftpTest.java @@ -33,7 +33,7 @@ public class SftpTest { } @Test public void test03(){ - System.out.println(CryptogramUtil.doEncrypt("hnidc0327cn!@#xhh")); + System.out.println(CryptogramUtil.doEncrypt("hnidc0628cn!@#lld")); } @Test public void ssh(){