Merge remote-tracking branch 'origin/master'

This commit is contained in:
HopeLi 2025-06-05 19:49:32 +08:00
commit 430086cfa8
11 changed files with 55 additions and 35 deletions

View File

@ -1,14 +1,14 @@
package cd.casic.ci.api; package cd.casic.ci.api;
import cd.casic.ci.process.dal.req.history.PipelineHistoryQueryReq;
import cd.casic.ci.process.process.dataObject.history.PipPipelineHisInstance; import cd.casic.ci.process.process.dataObject.history.PipPipelineHisInstance;
import cd.casic.ci.process.process.dataObject.log.PipTaskLog; import cd.casic.ci.process.process.dataObject.log.PipTaskLog;
import cd.casic.ci.process.process.service.history.PipelineHistoryService; import cd.casic.ci.process.process.service.history.PipelineHistoryService;
import cd.casic.ci.process.process.service.taskLog.TaskLogService; import cd.casic.ci.process.process.service.taskLog.TaskLogService;
import cd.casic.framework.commons.pojo.CommonResult; import cd.casic.framework.commons.pojo.CommonResult;
import cd.casic.framework.commons.pojo.PageResult;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
@ -24,9 +24,8 @@ public class PipHistoryController {
PipTaskLog byId = taskLogService.getById(id); PipTaskLog byId = taskLogService.getById(id);
return CommonResult.success(byId); return CommonResult.success(byId);
} }
@GetMapping("/list") @PostMapping("/list")
public CommonResult<List<PipPipelineHisInstance>> list(String pipelineId){ public CommonResult<PageResult<PipPipelineHisInstance>> list(@RequestBody PipelineHistoryQueryReq req){
List<PipPipelineHisInstance> list = pipelineHistoryService.list(); return CommonResult.success(pipelineHistoryService.getPageByPipelineId(req));
return CommonResult.success(list);
} }
} }

View File

@ -10,10 +10,10 @@ public class TestController {
@PostMapping("/upload") @PostMapping("/upload")
public void uploadTest(){ public void uploadTest(){
try { // try {
SftpUploadUtil.uploadFileViaSftp("175.6.27.228",22,"hnidc", CryptogramUtil.doDecrypt("cb2ee50ff663312808773f1698b801d2f9d6073f9684473e090767edbc2dba93"),null,"/ops/ops-pro/ops-server.jar","/home/casic/706/ai_test_527","ops-server.jar"); //// SftpUploadUtil.uploadFileViaSftp("175.6.27.228",22,"hnidc", CryptogramUtil.doDecrypt("cb2ee50ff663312808773f1698b801d2f9d6073f9684473e090767edbc2dba93"),null,"/ops/ops-pro/ops-server.jar","/home/casic/706/ai_test_527","ops-server.jar");
} catch (SftpUploadUtil.SftpUploadException e) { // } catch (SftpUploadUtil.SftpUploadException e) {
throw new RuntimeException(e); // throw new RuntimeException(e);
} // }
} }
} }

View File

@ -0,0 +1,10 @@
package cd.casic.ci.process.dal.req.history;
import cd.casic.framework.commons.pojo.PageParam;
import lombok.Data;
@Data
public class PipelineHistoryQueryReq {
private String pipelineId;
private PageParam pageParam;
}

View File

@ -21,6 +21,7 @@ import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
import cd.casic.framework.commons.util.util.WebFrameworkUtils; import cd.casic.framework.commons.util.util.WebFrameworkUtils;
import cd.casic.framework.security.core.LoginUser; import cd.casic.framework.security.core.LoginUser;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -173,11 +174,11 @@ public class DefaultRunContextManager implements RunContextManager {
pipPipelineHisInstance.setEndTime(pipelineRunContext.getEndTime()); pipPipelineHisInstance.setEndTime(pipelineRunContext.getEndTime());
PiplineTriggerModeEnum triggerMode = pipelineRunContext.getTriggerMode(); PiplineTriggerModeEnum triggerMode = pipelineRunContext.getTriggerMode();
pipPipelineHisInstance.setTriggerMode(triggerMode.getCode()); pipPipelineHisInstance.setTriggerMode(triggerMode.getCode());
pipPipelineHisInstance.setContextTree(JSON.toJSONString(pipelineRunContext)); pipPipelineHisInstance.setContextTree(JSON.toJSONString(pipelineRunContext,SerializerFeature.DisableCircularReferenceDetect));
PipelineQueryReq pipelineQueryReq = new PipelineQueryReq(); PipelineQueryReq pipelineQueryReq = new PipelineQueryReq();
pipelineQueryReq.setId(pipelineId); pipelineQueryReq.setId(pipelineId);
pipPipelineHisInstance.setDefTree(JSON.toJSONString(pipelineService.findPipelineById(pipelineQueryReq))); pipPipelineHisInstance.setDefTree(JSON.toJSONString(pipelineService.findPipelineById(pipelineQueryReq), SerializerFeature.DisableCircularReferenceDetect));
pipPipelineHisInstance.setStateTree(JSON.toJSONString(pipelineService.getPipelineRunState(pipelineId))); pipPipelineHisInstance.setStateTree(JSON.toJSONString(pipelineService.getPipelineRunState(pipelineId),SerializerFeature.DisableCircularReferenceDetect));
pipPipelineHisInstance.setTargetVersionName(""); pipPipelineHisInstance.setTargetVersionName("");
pipPipelineHisInstance.setTargetVersionId(pipeline.getTargetVersionId()); pipPipelineHisInstance.setTargetVersionId(pipeline.getTargetVersionId());
hisInstanceDao.insert(pipPipelineHisInstance); hisInstanceDao.insert(pipPipelineHisInstance);

View File

@ -80,10 +80,6 @@ public abstract class BaseRunContext {
||ContextStateEnum.BAD_ENDING.equals(stateEnum) ||ContextStateEnum.BAD_ENDING.equals(stateEnum)
||ContextStateEnum.SKIP_TO.equals(stateEnum)) { ||ContextStateEnum.SKIP_TO.equals(stateEnum)) {
this.endTime=LocalDateTime.now(); this.endTime=LocalDateTime.now();
if(this instanceof PipelineRunContext pipelineRunContext){
// 流水线执行结束 进行入库
}
} }
callParentChange(stateEnum); callParentChange(stateEnum);
} else { } else {

View File

@ -1,6 +1,7 @@
package cd.casic.ci.process.engine.worker; package cd.casic.ci.process.engine.worker;
import cd.casic.ci.process.common.WorkAtom; import cd.casic.ci.process.common.WorkAtom;
import cd.casic.ci.process.dal.resp.resource.ResourceFindResp;
import cd.casic.ci.process.engine.constant.AFLConstant; import cd.casic.ci.process.engine.constant.AFLConstant;
import cd.casic.ci.process.engine.constant.DIYImageExecuteCommandConstant; import cd.casic.ci.process.engine.constant.DIYImageExecuteCommandConstant;
import cd.casic.ci.process.engine.runContext.TaskRunContext; import cd.casic.ci.process.engine.runContext.TaskRunContext;
@ -9,6 +10,7 @@ import cd.casic.ci.process.engine.worker.base.SshWorker;
import cd.casic.ci.process.process.dataObject.machine.MachineInfo; import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline;
import cd.casic.ci.process.process.dataObject.task.PipTask; import cd.casic.ci.process.process.dataObject.task.PipTask;
import cd.casic.module.execute.docker.dataobject.dto.DockerEndpointDo;
import cd.casic.module.execute.docker.dataobject.model.DockerEndpoint; import cd.casic.module.execute.docker.dataobject.model.DockerEndpoint;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -19,6 +21,7 @@ import java.util.Map;
@Slf4j @Slf4j
public class AFLWorker extends DockerWorker { public class AFLWorker extends DockerWorker {
@Override @Override
public void execute(TaskRunContext context) { public void execute(TaskRunContext context) {
int statusCode = -1; int statusCode = -1;
@ -31,12 +34,17 @@ public class AFLWorker extends DockerWorker {
String commandScript = commandScriptObj instanceof String ? ((String) commandScriptObj) : null; String commandScript = commandScriptObj instanceof String ? ((String) commandScriptObj) : null;
PipPipeline pipeline = (PipPipeline) getContextManager().getContext(taskDef.getPipelineId()).getContextDef(); PipPipeline pipeline = (PipPipeline) getContextManager().getContext(taskDef.getPipelineId()).getContextDef();
String machineId = pipeline.getMachineId(); String resourceId = pipeline.getResourceId();
if (StringUtils.isEmpty(commandScript)||StringUtils.isEmpty(machineId)) { if (StringUtils.isEmpty(commandScript)||StringUtils.isEmpty(resourceId)) {
// 缺少参数 // 缺少参数
toBadEnding(); toBadEnding();
} }
ResourceFindResp resourceById = getResourceManagerService().findResourceById(resourceId);
DockerEndpointDo dockerEndpoint = resourceById.getDockerEndpoint();
if (dockerEndpoint==null) {
append(context,"当前机器不支持docker");
return;
}
try { try {
//将节点的配置信息反编译成对象 //将节点的配置信息反编译成对象
log.info("构建脚本" + commandScript); log.info("构建脚本" + commandScript);
@ -46,10 +54,6 @@ public class AFLWorker extends DockerWorker {
//获取机器 //获取机器
// MachineInfo machineInfoDO = this.getMachineInfoService().getById(machineId); // MachineInfo machineInfoDO = this.getMachineInfoService().getById(machineId);
// 获取docker 暂时先写固定值 // 获取docker 暂时先写固定值
DockerEndpoint dockerEndpoint = new DockerEndpoint();
dockerEndpoint.setHost("175.6.27.228");
dockerEndpoint.setPort(22375);
dockerEndpoint.setType(DockerEndpoint.DockerEndpointTypeEnum.REMOTE);
// TODO dockerEndpoint替换为查询 // TODO dockerEndpoint替换为查询
dockerRun(commandScript,dockerEndpoint,context); dockerRun(commandScript,dockerEndpoint,context);
} catch (Exception e) { } catch (Exception e) {

View File

@ -17,6 +17,7 @@ import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
import cd.casic.ci.process.process.dataObject.task.PipTask; import cd.casic.ci.process.process.dataObject.task.PipTask;
import cd.casic.ci.process.process.service.machine.MachineInfoService; import cd.casic.ci.process.process.service.machine.MachineInfoService;
import cd.casic.ci.process.process.service.resource.ResourceManagerService;
import cd.casic.ci.process.ssh.SshClient; import cd.casic.ci.process.ssh.SshClient;
import cd.casic.ci.process.ssh.SshClientFactory; import cd.casic.ci.process.ssh.SshClientFactory;
import cd.casic.ci.process.ssh.WinRMHelper; import cd.casic.ci.process.ssh.WinRMHelper;
@ -45,6 +46,8 @@ public abstract class BaseWorker implements Runnable{
private MachineInfoService machineInfoService; private MachineInfoService machineInfoService;
@Resource @Resource
private LoggerManager loggerManager; private LoggerManager loggerManager;
@Resource
private ResourceManagerService resourceManagerService;
@Override @Override
@ -82,7 +85,7 @@ public abstract class BaseWorker implements Runnable{
if (contextDef instanceof PipTask task) { if (contextDef instanceof PipTask task) {
Map<String, Object> taskProperties = task.getTaskProperties(); Map<String, Object> taskProperties = task.getTaskProperties();
Object taskSkip = taskProperties.get(PipelineBehaviorConstant.TASK_SKIP_KEY); Object taskSkip = taskProperties.get(PipelineBehaviorConstant.TASK_SKIP_KEY);
if (Boolean.TRUE.equals(taskSkip)) { if (Integer.valueOf("1").equals(taskSkip)) {
taskRunContext.changeContextState(ContextStateEnum.SKIP_TO); taskRunContext.changeContextState(ContextStateEnum.SKIP_TO);
append(context,e.getMessage()); append(context,e.getMessage());
} else{ } else{

View File

@ -2,6 +2,7 @@ package cd.casic.ci.process.engine.worker.base;
import cd.casic.ci.process.engine.runContext.BaseRunContext; import cd.casic.ci.process.engine.runContext.BaseRunContext;
import cd.casic.module.execute.docker.dataobject.dto.DockerEndpointDo;
import cd.casic.module.execute.docker.dataobject.model.DockerEndpoint; import cd.casic.module.execute.docker.dataobject.model.DockerEndpoint;
import com.github.dockerjava.api.DockerClient; import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.async.ResultCallbackTemplate; import com.github.dockerjava.api.async.ResultCallbackTemplate;
@ -33,7 +34,7 @@ import java.util.concurrent.TimeUnit;
import static java.lang.String.format; import static java.lang.String.format;
@Slf4j @Slf4j
public abstract class DockerWorker extends BaseWorker{ public abstract class DockerWorker extends BaseWorker{
public void dockerRun(String command, DockerEndpoint dockerEndpoint, BaseRunContext context){ public void dockerRun(String command, DockerEndpointDo dockerEndpoint, BaseRunContext context){
// 第一行必须是docker run 命令 option 支持 -it -v // 第一行必须是docker run 命令 option 支持 -it -v
String[] split = command.split("\n"); String[] split = command.split("\n");
List<String> commandLine = new ArrayList<>(Arrays.stream(split).filter(StringUtils::isNotBlank).toList()); List<String> commandLine = new ArrayList<>(Arrays.stream(split).filter(StringUtils::isNotBlank).toList());
@ -148,7 +149,7 @@ public abstract class DockerWorker extends BaseWorker{
} }
} }
public DockerExecHandler loadRunCommand(String runCommand, DockerEndpoint dockerEndpoint){ public DockerExecHandler loadRunCommand(String runCommand, DockerEndpointDo dockerEndpoint){
String[] split = runCommand.split("\\s+"); String[] split = runCommand.split("\\s+");
List<String> keywords = new ArrayList<>(split.length); List<String> keywords = new ArrayList<>(split.length);
keywords.addAll(Lists.list(split)); keywords.addAll(Lists.list(split));

View File

@ -1,11 +1,13 @@
package cd.casic.ci.process.process.service.history; package cd.casic.ci.process.process.service.history;
import cd.casic.ci.process.dal.req.history.PipelineHistoryQueryReq;
import cd.casic.ci.process.process.dataObject.history.PipPipelineHisInstance; import cd.casic.ci.process.process.dataObject.history.PipPipelineHisInstance;
import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline;
import cd.casic.framework.commons.pojo.PageResult;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List; import java.util.List;
public interface PipelineHistoryService extends IService<PipPipelineHisInstance> { public interface PipelineHistoryService extends IService<PipPipelineHisInstance> {
List<PipPipelineHisInstance> getListByPipelineId(String pipelineId); PageResult<PipPipelineHisInstance> getPageByPipelineId(PipelineHistoryQueryReq req);
} }

View File

@ -1,12 +1,16 @@
package cd.casic.ci.process.process.service.history.impl; package cd.casic.ci.process.process.service.history.impl;
import cd.casic.ci.process.dal.req.history.PipelineHistoryQueryReq;
import cd.casic.ci.process.dal.resp.pipeline.PipelineFindResp;
import cd.casic.ci.process.process.dal.history.PipPipelineHisInstanceDao; import cd.casic.ci.process.process.dal.history.PipPipelineHisInstanceDao;
import cd.casic.ci.process.process.dal.pipeline.PipelineDao; import cd.casic.ci.process.process.dal.pipeline.PipelineDao;
import cd.casic.ci.process.process.dataObject.history.PipPipelineHisInstance; import cd.casic.ci.process.process.dataObject.history.PipPipelineHisInstance;
import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline;
import cd.casic.ci.process.process.service.history.PipelineHistoryService; import cd.casic.ci.process.process.service.history.PipelineHistoryService;
import cd.casic.ci.process.process.service.pipeline.PipelineService; import cd.casic.ci.process.process.service.pipeline.PipelineService;
import cd.casic.framework.commons.pojo.PageResult;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -18,10 +22,10 @@ public class PipelineHistoryServiceImpl extends ServiceImpl<PipPipelineHisInstan
@Resource @Resource
private PipPipelineHisInstanceDao pipelineHisInstanceDao; private PipPipelineHisInstanceDao pipelineHisInstanceDao;
@Override @Override
public List<PipPipelineHisInstance> getListByPipelineId(String pipelineId) { public PageResult<PipPipelineHisInstance> getPageByPipelineId(PipelineHistoryQueryReq req) {
LambdaQueryWrapper<PipPipelineHisInstance> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PipPipelineHisInstance> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PipPipelineHisInstance::getPipelineId,pipelineId); wrapper.eq(PipPipelineHisInstance::getPipelineId,req.getPipelineId());
return pipelineHisInstanceDao.selectList(wrapper); Page<PipPipelineHisInstance> page = pipelineHisInstanceDao.selectPage(new Page<PipPipelineHisInstance>(), wrapper);
return new PageResult<PipPipelineHisInstance>(page.getRecords(), page.getTotal(), page.getCurrent(), page.getSize());
} }
} }

View File

@ -31,6 +31,6 @@ public class SftpTest {
} }
@Test @Test
public void test03(){ public void test03(){
System.out.println(CryptogramUtil.doEncrypt("Hnidc@0626cn!@#zyx")); System.out.println(CryptogramUtil.doEncrypt("hnidc0327cn!@#xhh"));
} }
} }