Compare commits
6 Commits
103fcf9930
...
9cc1dcbefe
Author | SHA1 | Date | |
---|---|---|---|
![]() |
9cc1dcbefe | ||
![]() |
c8559503cf | ||
![]() |
14fbff2dc0 | ||
![]() |
b10b83b078 | ||
![]() |
9118a68c7b | ||
![]() |
fca1dabb41 |
@ -8,6 +8,10 @@ import cd.casic.ci.process.dto.resp.sast.*;
|
||||
import cd.casic.ci.process.process.service.sast.SastService;
|
||||
import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
|
||||
import cd.casic.framework.commons.pojo.CommonResult;
|
||||
import cd.casic.framework.commons.pojo.PageParam;
|
||||
import cd.casic.framework.commons.pojo.PageResult;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.Negative;
|
||||
@ -24,11 +28,17 @@ import java.util.List;
|
||||
public class SastController {
|
||||
@Resource
|
||||
private SastService sastService;
|
||||
/**
|
||||
* sast判断应用名称是否存在
|
||||
* */
|
||||
@GetMapping("/applicationExist")
|
||||
public CommonResult<Boolean> applicationExist(@RequestParam String applicationName){
|
||||
Boolean b = sastService.applicationExist(applicationName);
|
||||
return CommonResult.success(b);
|
||||
}
|
||||
/**
|
||||
* sast上传检测文件
|
||||
* */
|
||||
@PostMapping("/uploadFile")
|
||||
public CommonResult<SastFileUploadResp> uploadFile(MultipartFile multipartFile){
|
||||
File tempFile = null;
|
||||
@ -47,42 +57,85 @@ public class SastController {
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* sast创建语言检测任务
|
||||
* */
|
||||
@PostMapping("/createIdentifiedLanguageTask")
|
||||
public CommonResult<SastIdentifiedLanguageTaskResp> createIdentifiedLanguageTask(@RequestBody SastIdentifiedLanguageTaskReq req){
|
||||
SastIdentifiedLanguageTaskResp identifiedLanguageTask = sastService.createIdentifiedLanguageTask(req);
|
||||
return CommonResult.success(identifiedLanguageTask);
|
||||
}
|
||||
/**
|
||||
* sast 获取检测任务状态
|
||||
* */
|
||||
@GetMapping("/getIdentifiedLanguageTaskStatus/{taskId}")
|
||||
public CommonResult<SastIdentifiedLanguageTaskResp> getIdentifiedLanguageTaskStatus(@PathVariable String taskId){
|
||||
SastIdentifiedLanguageTaskResp identifiedLanguageTaskStatus = sastService.getIdentifiedLanguageTaskStatus(taskId);
|
||||
return CommonResult.success(identifiedLanguageTaskStatus);
|
||||
}
|
||||
/**
|
||||
* sast 获取引擎配置
|
||||
* */
|
||||
@PostMapping("/engineConfig")
|
||||
public CommonResult<List<SastEngineConfigResp>> engineConfig(@RequestBody SastEngineConfigReq req){
|
||||
return CommonResult.success(sastService.engineConfig(req.getLanguageIdList()));
|
||||
}
|
||||
/**
|
||||
* sast 获取语言模板等信息
|
||||
* */
|
||||
@GetMapping("/detectionConfig/{languageId}")
|
||||
public CommonResult<SastDetectionConfigResp> detectionConfig(@PathVariable String languageId){
|
||||
SastDetectionConfigResp sastDetectionConfigResp = sastService.detectionConfig(languageId);
|
||||
return CommonResult.success(sastDetectionConfigResp);
|
||||
}
|
||||
/**
|
||||
* sast上传 应用创建或者更新
|
||||
* */
|
||||
@PostMapping("/applicationCreateOrUpdate")
|
||||
public CommonResult<SastApplicationCreateResp> applicationCreateOrUpdate(@RequestBody SastApplicationCreateReq req){
|
||||
SastApplicationCreateResp sastApplicationCreateResp = sastService.applicationCreate(req);
|
||||
return CommonResult.success(sastApplicationCreateResp);
|
||||
}
|
||||
/**
|
||||
* sast 应用信息回显
|
||||
* */
|
||||
@GetMapping("/getApplicationEcho/{applicationId}")
|
||||
public CommonResult<SastApplicationEchoResp> getApplicationEcho(@PathVariable String applicationId){
|
||||
SastApplicationEchoResp applicationEcho = sastService.getApplicationEcho(applicationId);
|
||||
return CommonResult.success(applicationEcho);
|
||||
}
|
||||
/**
|
||||
* sast 导出报告
|
||||
* */
|
||||
@PostMapping("/reportIndex")
|
||||
public CommonResult<String> reportIndex(@RequestBody SastReportCreateReq req){
|
||||
String reportId = sastService.reportIndex(req);
|
||||
return CommonResult.success(reportId);
|
||||
}
|
||||
/**
|
||||
* sast 下载报告
|
||||
* */
|
||||
@GetMapping("/reportDownload")
|
||||
public CommonResult<String> reportDownLoad(String reportId){
|
||||
public CommonResult<String> reportDownLoad(@RequestParam String reportId){
|
||||
return CommonResult.success(sastService.reportDownload(reportId));
|
||||
}
|
||||
/**
|
||||
* sast 获取全部语言信息
|
||||
* */
|
||||
@GetMapping("/language")
|
||||
public CommonResult<List<SastLanguageResp>> language(){
|
||||
return CommonResult.success(sastService.language());
|
||||
}
|
||||
/**
|
||||
* sast报告列表
|
||||
* */
|
||||
@PostMapping("/reportList")
|
||||
public CommonResult<PageResult<SastReportResp>> reportList(@RequestBody PageParam pageParam){
|
||||
return CommonResult.success(sastService.reportList(pageParam));
|
||||
}
|
||||
@DeleteMapping("/reportDelete")
|
||||
public CommonResult<Void> reportDelete(@RequestParam String reportId){
|
||||
sastService.reportDelete(reportId);
|
||||
return CommonResult.success();
|
||||
}
|
||||
}
|
||||
|
@ -13,4 +13,7 @@ public class SastUrlConstant {
|
||||
public static final String getApplicationEcho = "/invoke/application/getApplicationEcho";
|
||||
public static final String reportIndex = "/api/report/index";
|
||||
public static final String reportDownload = "/api/report/index/download";
|
||||
public static final String language = "/invoke/language";
|
||||
public static final String reportList = "/api/report/index/pageList";
|
||||
public static final String reportDelete = "/api/report/index";
|
||||
}
|
||||
|
@ -0,0 +1,16 @@
|
||||
package cd.casic.ci.process.dto.resp.sast;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
@Data
|
||||
public class SastLanguageResp {
|
||||
private String type;
|
||||
private List<SastLanguageResp> languageInfos;
|
||||
@Data
|
||||
public static class SastLanguageInfoResp{
|
||||
private String id;
|
||||
private String language;
|
||||
private Boolean compileFlag;
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package cd.casic.ci.process.dto.resp.sast;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SastReportResp {
|
||||
private String id;
|
||||
private String createdTime;
|
||||
private String createdBy;
|
||||
private String updatedTime;
|
||||
private String updatedBy;
|
||||
private String name;
|
||||
private String projectId;
|
||||
private String type;
|
||||
private String applicationScope;
|
||||
private String mode;
|
||||
private String status;
|
||||
private String format;
|
||||
}
|
@ -8,11 +8,18 @@ import cd.casic.ci.process.engine.runContext.TaskRunContext;
|
||||
import cd.casic.ci.process.engine.worker.base.SshWorker;
|
||||
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.service.target.TargetVersionService;
|
||||
import cd.casic.ci.process.util.CryptogramUtil;
|
||||
import cd.casic.ci.process.util.SftpUploadUtil;
|
||||
import cd.casic.framework.commons.exception.ServiceException;
|
||||
import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@ -21,7 +28,8 @@ import java.util.Map;
|
||||
@Slf4j
|
||||
@WorkAtom(taskType = "CUSTOM_COMPILE")
|
||||
public class CustomCompilerWorker extends SshWorker {
|
||||
|
||||
@Resource
|
||||
private TargetVersionService targetVersionService;
|
||||
|
||||
@Override
|
||||
public void execute(TaskRunContext context) {
|
||||
@ -56,9 +64,29 @@ public class CustomCompilerWorker extends SshWorker {
|
||||
String resourceId = pipeline.getResourceId();
|
||||
ResourceFindResp resourceById = getResourceManagerService().findResourceById(resourceId);
|
||||
PipResourceMachine resourceMachine = resourceById.getResourceMachine();
|
||||
//根据目标id查询目标信息
|
||||
if (StringUtils.isEmpty(pipeline.getTargetVersionId())){
|
||||
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"目标文件不存在");
|
||||
}
|
||||
|
||||
TargetVersion targetVersion = targetVersionService.getById(pipeline.getTargetVersionId());
|
||||
String filePath = targetVersion.getFilePath();
|
||||
File file = new File(filePath);
|
||||
if (!file.exists() || !file.canRead()) {
|
||||
log.error("目标文件不存在或不可读");
|
||||
localVariables.put("statusCode", "-1");
|
||||
append(context,"目标文件不存在或不可读");
|
||||
toBadEnding();
|
||||
}
|
||||
append(context,"上传文件"+targetVersion.getFileName()+"到目标服务器IP:"+resourceMachine.getMachineHost());
|
||||
append(context,"上传路径:"+"/home/casic/706/ai_test_527");
|
||||
// 上传目标 到目标服务器
|
||||
SftpUploadUtil.uploadFileViaSftp(resourceMachine.getMachineHost(),Integer.valueOf(resourceMachine.getSshPort()),resourceMachine.getUsername(), CryptogramUtil.doDecrypt(resourceMachine.getPassword()),null,file.getAbsolutePath(),"/home/casic/706/ai_test_527",file.getName());
|
||||
|
||||
//TODO 得改一下
|
||||
statusCode = shell(resourceMachine, CryptogramUtil.doDecrypt(resourceMachine.getPassword()),context,
|
||||
statusCode = shell(resourceMachine, null,context,
|
||||
"echo \"编译命令执行\"",
|
||||
"cd /home/casic/706/ai_test_527",
|
||||
commandScript
|
||||
);
|
||||
} catch (Exception e) {
|
||||
|
@ -11,6 +11,7 @@ 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.excel.util.StringUtils;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -35,6 +36,10 @@ public class SastWorker extends BaseWorker {
|
||||
log.info("==========运行context:{}===========", JSON.toJSONString(context));
|
||||
if (contextDef instanceof PipTask task) {
|
||||
String applicationId = (String)task.getTaskProperties().get("applicationId");
|
||||
if (StringUtils.isEmpty(applicationId)) {
|
||||
append(context,"未获取到sast信息");
|
||||
toBadEnding();
|
||||
}
|
||||
SastApplicationEchoResp applicationEcho = sastService.getApplicationEcho(applicationId);
|
||||
append(context,"获取到sast任务配置"+JSON.toJSONString(applicationEcho));
|
||||
SastApplicationCreateReq sastApplicationCreateReq = converter.converter(applicationEcho);
|
||||
|
@ -4,6 +4,10 @@ import cd.casic.ci.process.dto.req.sast.SastApplicationCreateReq;
|
||||
import cd.casic.ci.process.dto.req.sast.SastIdentifiedLanguageTaskReq;
|
||||
import cd.casic.ci.process.dto.req.sast.SastReportCreateReq;
|
||||
import cd.casic.ci.process.dto.resp.sast.*;
|
||||
import cd.casic.framework.commons.pojo.PageParam;
|
||||
import cd.casic.framework.commons.pojo.PageResult;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
import java.io.File;
|
||||
@ -21,4 +25,8 @@ public interface SastService {
|
||||
SastApplicationEchoResp getApplicationEcho(String applicationId);
|
||||
String reportIndex(SastReportCreateReq req);
|
||||
public String reportDownload(String reportId);
|
||||
public List<SastLanguageResp> language();
|
||||
public PageResult<SastReportResp> reportList(PageParam pageParam);
|
||||
|
||||
public void reportDelete(String reportId);
|
||||
}
|
||||
|
@ -3,9 +3,12 @@ package cd.casic.ci.process.process.service.sast.impl;
|
||||
import cd.casic.ci.process.dto.req.sast.SastApplicationCreateReq;
|
||||
import cd.casic.ci.process.dto.req.sast.SastIdentifiedLanguageTaskReq;
|
||||
import cd.casic.ci.process.dto.req.sast.SastReportCreateReq;
|
||||
import cd.casic.ci.process.dto.resp.report.ReportResp;
|
||||
import cd.casic.ci.process.dto.resp.sast.*;
|
||||
import cd.casic.ci.process.process.service.sast.SastService;
|
||||
import cd.casic.ci.process.properties.SastProperties;
|
||||
import cd.casic.framework.commons.pojo.PageParam;
|
||||
import cd.casic.framework.commons.pojo.PageResult;
|
||||
import cd.casic.framework.redis.core.RedisTemplateUtils;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
@ -73,7 +76,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()*10);
|
||||
redisTemplateUtils.set(REDIS_SAST_TOKEN_KEY,accessToken,tokenRemote.getExpiresIn());
|
||||
token = accessToken;
|
||||
}
|
||||
}
|
||||
@ -191,6 +194,44 @@ public class SastServiceImpl implements SastService {
|
||||
ResponseEntity<String> exchange = restTemplate.exchange(uriString, HttpMethod.GET,entity, String.class,new HashMap<>());
|
||||
return exchange.getBody().replaceAll("\"","");
|
||||
}
|
||||
@Override
|
||||
public List<SastLanguageResp> language(){
|
||||
HttpHeaders httpHeaders = getHeaders();
|
||||
Map<String, String> entityMap = new HashMap<>();
|
||||
HttpEntity<Map<String, String>> entity = new HttpEntity<>(entityMap,httpHeaders);
|
||||
String uriString = UriComponentsBuilder.fromHttpUrl(sastProperties.getBaseUrl() + language).queryParam("codeSourceFrom", "CODE").toUriString();
|
||||
System.out.println(uriString);
|
||||
ResponseEntity<String> exchange = restTemplate.exchange(uriString, HttpMethod.GET,entity, String.class,new HashMap<>());
|
||||
return JSON.parseArray(exchange.getBody(),SastLanguageResp.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<SastReportResp> reportList(PageParam pageParam) {
|
||||
HttpHeaders httpHeaders = getHeaders();
|
||||
Map<String, String> entityMap = new HashMap<>();
|
||||
HttpEntity<Map<String, String>> entity = new HttpEntity<>(entityMap,httpHeaders);
|
||||
String uriString = UriComponentsBuilder.fromHttpUrl(sastProperties.getBaseUrl() + reportList)
|
||||
.queryParam("page", pageParam.getPageNo())
|
||||
.queryParam("size", pageParam.getPageSize())
|
||||
.toUriString();
|
||||
System.out.println(uriString);
|
||||
ResponseEntity<String> exchange = restTemplate.exchange(uriString, HttpMethod.GET,entity, String.class,new HashMap<>());
|
||||
JSONObject jsonObject = JSON.parseObject(exchange.getBody());
|
||||
List<SastReportResp> respList = JSONArray.parseArray(jsonObject.getString("content"), SastReportResp.class);
|
||||
|
||||
PageResult<SastReportResp> pageResult = new PageResult<SastReportResp>(respList,jsonObject.getLong("totalElements"),Long.valueOf(String.valueOf(pageParam.getPageNo())),Long.valueOf(String.valueOf(pageParam.getPageSize())));
|
||||
return pageResult;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportDelete(String reportId){
|
||||
HttpHeaders httpHeaders = getHeaders();
|
||||
Map<String, String> entityMap = new HashMap<>();
|
||||
HttpEntity<Map<String, String>> entity = new HttpEntity<>(entityMap,httpHeaders);
|
||||
String uriString = UriComponentsBuilder.fromHttpUrl(sastProperties.getBaseUrl() + reportDelete).queryParam("id", reportId).toUriString();
|
||||
System.out.println(uriString);
|
||||
ResponseEntity<Void> exchange = restTemplate.exchange(uriString, HttpMethod.DELETE,entity, Void.class,new HashMap<>());
|
||||
}
|
||||
|
||||
private HttpHeaders getHeaders(){
|
||||
HttpHeaders httpHeaders = new HttpHeaders();
|
||||
|
@ -133,4 +133,8 @@ public class SastTest {
|
||||
SastApplicationCreateResp sastApplicationCreateResp = sastService.applicationCreate(sastApplicationCreateReq);
|
||||
System.out.println(JSON.toJSONString(sastApplicationCreateResp));
|
||||
}
|
||||
@Test
|
||||
public void reportDelete(){
|
||||
sastService.reportDelete("4af3380a-de08-476b-b1bc-b86f8d2e1339");
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user