Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
430086cfa8
@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
}
|
@ -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);
|
||||||
|
@ -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 {
|
||||||
|
@ -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) {
|
||||||
|
@ -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{
|
||||||
|
@ -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));
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user