Compare commits
No commits in common. "dc4ca13ef055a12400c9c990e986c3d74170fe73" and "66293fe5b66aa635ae09b882cd1548cf787829ca" have entirely different histories.
dc4ca13ef0
...
66293fe5b6
@ -17,8 +17,6 @@ import cd.casic.ci.process.process.service.machine.MachineInfoService;
|
|||||||
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;
|
||||||
import cd.casic.framework.commons.exception.ServiceException;
|
|
||||||
import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
|
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -61,7 +59,6 @@ public abstract class BaseWorker implements Runnable{
|
|||||||
taskRunContext.getLocalVariables().put(EngineRuntimeConstant.LOG_KEY,pipTaskLog);
|
taskRunContext.getLocalVariables().put(EngineRuntimeConstant.LOG_KEY,pipTaskLog);
|
||||||
execute(taskRunContext);
|
execute(taskRunContext);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("================worker执行报错:",e);
|
|
||||||
taskRunContext.changeContextState(ContextStateEnum.BAD_ENDING);
|
taskRunContext.changeContextState(ContextStateEnum.BAD_ENDING);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -70,7 +67,5 @@ public abstract class BaseWorker implements Runnable{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
public abstract void execute(TaskRunContext context);
|
public abstract void execute(TaskRunContext context);
|
||||||
public void toBadEnding(){
|
|
||||||
throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -2,10 +2,8 @@ package cd.casic.ci.process.engine.worker;
|
|||||||
|
|
||||||
import cd.casic.ci.common.pipeline.annotation.Plugin;
|
import cd.casic.ci.common.pipeline.annotation.Plugin;
|
||||||
import cd.casic.ci.process.engine.constant.DIYImageExecuteCommandConstant;
|
import cd.casic.ci.process.engine.constant.DIYImageExecuteCommandConstant;
|
||||||
import cd.casic.ci.process.engine.constant.EngineRuntimeConstant;
|
|
||||||
import cd.casic.ci.process.engine.runContext.TaskRunContext;
|
import cd.casic.ci.process.engine.runContext.TaskRunContext;
|
||||||
import cd.casic.ci.process.process.dataObject.base.PipBaseElement;
|
import cd.casic.ci.process.process.dataObject.base.PipBaseElement;
|
||||||
import cd.casic.ci.process.process.dataObject.log.PipTaskLog;
|
|
||||||
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.task.PipTask;
|
import cd.casic.ci.process.process.dataObject.task.PipTask;
|
||||||
import cd.casic.framework.commons.exception.ServiceException;
|
import cd.casic.framework.commons.exception.ServiceException;
|
||||||
@ -25,15 +23,15 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
* @date 2022-11-08 9:59
|
* @date 2022-11-08 9:59
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
//@Plugin(taskType = "CUSTOM_IMAGE_EXECUTION_COMMAND")
|
@Plugin(taskType = "CUSTOM_IMAGE_EXECUTION_COMMAND")
|
||||||
//@Plugin(taskType = "test")
|
|
||||||
public class DIYImageExecuteCommandWorker extends SshWorker {
|
public class DIYImageExecuteCommandWorker extends SshWorker {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(TaskRunContext context) {
|
public void execute(TaskRunContext context) {
|
||||||
int statusCode = -1;
|
int statusCode = -1;
|
||||||
Map<String, Object> localVariables = context.getLocalVariables();
|
AtomicInteger state = context.getState();
|
||||||
PipTaskLog taskLog = (PipTaskLog) localVariables.get(EngineRuntimeConstant.LOG_KEY);
|
|
||||||
if (context.getContextDef() instanceof PipTask taskDef) {
|
if (context.getContextDef() instanceof PipTask taskDef) {
|
||||||
log.info(taskDef.getTaskName());
|
log.info(taskDef.getTaskName());
|
||||||
Map<String, Object> taskProperties = taskDef.getTaskProperties();
|
Map<String, Object> taskProperties = taskDef.getTaskProperties();
|
||||||
@ -45,11 +43,9 @@ public class DIYImageExecuteCommandWorker extends SshWorker {
|
|||||||
machineId=Long.valueOf(String.valueOf(machineIdObj));
|
machineId=Long.valueOf(String.valueOf(machineIdObj));
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
log.error("缺少参数:{}",DIYImageExecuteCommandConstant.MACHINE_ID);
|
log.error("缺少参数:{}",DIYImageExecuteCommandConstant.MACHINE_ID);
|
||||||
toBadEnding();
|
|
||||||
}
|
}
|
||||||
if (StringUtils.isEmpty(commandScript) ||machineIdObj == null) {
|
if (StringUtils.isEmpty(commandScript) ||machineIdObj == null) {
|
||||||
// 缺少参数
|
throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"缺少参数");
|
||||||
toBadEnding();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -60,22 +56,21 @@ public class DIYImageExecuteCommandWorker extends SshWorker {
|
|||||||
|
|
||||||
//获取机器
|
//获取机器
|
||||||
MachineInfo machineInfoDO = this.getMachineInfoService().getById(machineId);
|
MachineInfo machineInfoDO = this.getMachineInfoService().getById(machineId);
|
||||||
statusCode = shell(machineInfoDO,taskLog,
|
statusCode = shell(machineInfoDO,
|
||||||
"echo \"自定义镜像执行命令\"",
|
"echo \"自定义镜像执行命令\"",
|
||||||
commandScript
|
commandScript
|
||||||
);
|
);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
String errorMessage = "该节点配置信息为空,请先配置该节点信息" + "\r\n";
|
String errorMessage = "该节点配置信息为空,请先配置该节点信息" + "\r\n";
|
||||||
log.error("执行ssh失败:",e);
|
log.error("执行ssh失败:",e);
|
||||||
taskLog.append(errorMessage);
|
// errorHandle(e, errorMessage);
|
||||||
toBadEnding();
|
|
||||||
}
|
}
|
||||||
if (statusCode == 0) {
|
if (statusCode == 0) {
|
||||||
log.info("节点执行完成");
|
// log.info("{}节点执行完成", getName());
|
||||||
} else {
|
} else {
|
||||||
log.error("节点执行失败");
|
// log.error("{}节点执行失败", getName());
|
||||||
}
|
}
|
||||||
localVariables.put(DIYImageExecuteCommandConstant.STATUS_CODE,statusCode);
|
context.getLocalVariables().put(DIYImageExecuteCommandConstant.STATUS_CODE,statusCode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ import java.util.*;
|
|||||||
* @Description:
|
* @Description:
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Plugin(taskType = "test")
|
@Plugin(taskType = "scaSbom")
|
||||||
public class ScaSbomWorker extends HttpWorker{
|
public class ScaSbomWorker extends HttpWorker{
|
||||||
|
|
||||||
private static final int POLLING_INTERVAL = 5000; // 轮询间隔,单位:毫秒
|
private static final int POLLING_INTERVAL = 5000; // 轮询间隔,单位:毫秒
|
||||||
@ -98,7 +98,6 @@ public class ScaSbomWorker extends HttpWorker{
|
|||||||
pipTaskLog.append("==================SCA-SBOM节点执行失败=================");
|
pipTaskLog.append("==================SCA-SBOM节点执行失败=================");
|
||||||
pipTaskLog.append("SCA-SBOM节点执行失败失败,请检查当前节点配置!");
|
pipTaskLog.append("SCA-SBOM节点执行失败失败,请检查当前节点配置!");
|
||||||
pipTaskLog.append(e.getMessage());
|
pipTaskLog.append(e.getMessage());
|
||||||
log.error("==================SCA-SBOM节点执行失败=================",e);
|
|
||||||
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"SCA-SBOM节点执行失败");
|
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"SCA-SBOM节点执行失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -136,7 +135,6 @@ public class ScaSbomWorker extends HttpWorker{
|
|||||||
pollTaskStatus(restTemplate, oldScaTaskId);
|
pollTaskStatus(restTemplate, oldScaTaskId);
|
||||||
} else {
|
} else {
|
||||||
pipTaskLog.append("==================SCA接口异常,调用失败=================");
|
pipTaskLog.append("==================SCA接口异常,调用失败=================");
|
||||||
log.error(message);
|
|
||||||
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"SCA-SBOM节点执行失败");
|
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"SCA-SBOM节点执行失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ package cd.casic.ci.process.engine.worker;
|
|||||||
|
|
||||||
import cd.casic.ci.process.constant.CommandConstant;
|
import cd.casic.ci.process.constant.CommandConstant;
|
||||||
import cd.casic.ci.process.enums.MachineSystemEnum;
|
import cd.casic.ci.process.enums.MachineSystemEnum;
|
||||||
import cd.casic.ci.process.process.dataObject.log.PipTaskLog;
|
|
||||||
import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
|
import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
|
||||||
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;
|
||||||
@ -11,9 +10,6 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
/**
|
|
||||||
* 使用ssh的worker的基类
|
|
||||||
* */
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public abstract class SshWorker extends BaseWorker{
|
public abstract class SshWorker extends BaseWorker{
|
||||||
/**
|
/**
|
||||||
@ -22,7 +18,7 @@ public abstract class SshWorker extends BaseWorker{
|
|||||||
* @param commands 命令
|
* @param commands 命令
|
||||||
* @return 0 成功;其他值 失败
|
* @return 0 成功;其他值 失败
|
||||||
*/
|
*/
|
||||||
public int shell(MachineInfo machineInfo, PipTaskLog taskLog, String... commands) {
|
public int shell(MachineInfo machineInfo, String... commands) {
|
||||||
List<String> commandList = Arrays.asList(commands);
|
List<String> commandList = Arrays.asList(commands);
|
||||||
if(MachineSystemEnum.WINDOWS.getSystem().equals(machineInfo.getOsSystem())){
|
if(MachineSystemEnum.WINDOWS.getSystem().equals(machineInfo.getOsSystem())){
|
||||||
return powerShell(machineInfo, commandList);
|
return powerShell(machineInfo, commandList);
|
||||||
@ -36,16 +32,17 @@ public abstract class SshWorker extends BaseWorker{
|
|||||||
try {
|
try {
|
||||||
ssh = SshClientFactory.createSsh(machineInfo);
|
ssh = SshClientFactory.createSsh(machineInfo);
|
||||||
//执行命令,并且把命令的执行回传到前端
|
//执行命令,并且把命令的执行回传到前端
|
||||||
// TODO 记录日志
|
statusCode = ssh.execNew(commandList, var -> {
|
||||||
// loggerService.sendMessage(key, var);
|
// TODO 记录日志
|
||||||
statusCode = ssh.execNew(commandList, taskLog::append);
|
// loggerService.sendMessage(key, var);
|
||||||
|
// nodeLogger.append(var);
|
||||||
|
});
|
||||||
log.info("exit-status: " + statusCode);
|
log.info("exit-status: " + statusCode);
|
||||||
//主动释放当前socket连接
|
//主动释放当前socket连接
|
||||||
// loggerService.close(key);
|
// loggerService.close(key);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
String errorMessage = "与机器建立SSH连接出错" + CommandConstant.ENTER;
|
String errorMessage = "与机器建立SSH连接出错" + CommandConstant.ENTER;
|
||||||
// errorHandle(e, errorMessage);
|
// errorHandle(e, errorMessage);
|
||||||
taskLog.append(errorMessage);
|
|
||||||
} finally {
|
} finally {
|
||||||
if(ssh!=null) {
|
if(ssh!=null) {
|
||||||
ssh.disconnect();
|
ssh.disconnect();
|
||||||
|
@ -8,7 +8,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
//@Plugin(taskType = "test")
|
@Plugin(taskType = "test")
|
||||||
public class TestWorker extends BaseWorker{
|
public class TestWorker extends BaseWorker{
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@ import cd.casic.ci.common.pipeline.req.pipeline.PipelineQueryReq;
|
|||||||
import cd.casic.ci.common.pipeline.req.pipeline.PipelineReq;
|
import cd.casic.ci.common.pipeline.req.pipeline.PipelineReq;
|
||||||
import cd.casic.ci.common.pipeline.req.pipeline.PipelineUpdateReq;
|
import cd.casic.ci.common.pipeline.req.pipeline.PipelineUpdateReq;
|
||||||
import cd.casic.ci.common.pipeline.resp.context.SingletonRunContextResp;
|
import cd.casic.ci.common.pipeline.resp.context.SingletonRunContextResp;
|
||||||
import cd.casic.ci.common.pipeline.resp.context.TreeRunContextResp;
|
|
||||||
import cd.casic.ci.common.pipeline.resp.pipeline.PipelineFindResp;
|
import cd.casic.ci.common.pipeline.resp.pipeline.PipelineFindResp;
|
||||||
import cd.casic.ci.common.pipeline.utils.PageResult;
|
import cd.casic.ci.common.pipeline.utils.PageResult;
|
||||||
import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline;
|
import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline;
|
||||||
@ -37,5 +36,5 @@ public interface PipelineService extends IService<PipPipeline> {
|
|||||||
|
|
||||||
PipelineFindResp findPipelineById(@Valid PipelineQueryReq pipelineQueryReq);
|
PipelineFindResp findPipelineById(@Valid PipelineQueryReq pipelineQueryReq);
|
||||||
|
|
||||||
TreeRunContextResp getPipelineRunState(String pipelineId);
|
Map<String, SingletonRunContextResp> getPipelineRunState(String pipelineId);
|
||||||
}
|
}
|
||||||
|
@ -526,7 +526,7 @@ public class PipelineServiceImpl extends ServiceImpl<PipelineDao, PipPipeline> i
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TreeRunContextResp getPipelineRunState(String pipelineId) {
|
public Map<String, SingletonRunContextResp> getPipelineRunState(String pipelineId) {
|
||||||
BaseRunContext context = contextManager.getContext(pipelineId);
|
BaseRunContext context = contextManager.getContext(pipelineId);
|
||||||
if (context instanceof PipelineRunContext pipelineRunContext) {
|
if (context instanceof PipelineRunContext pipelineRunContext) {
|
||||||
TreeRunContextResp pipeline = new TreeRunContextResp();
|
TreeRunContextResp pipeline = new TreeRunContextResp();
|
||||||
@ -554,9 +554,8 @@ public class PipelineServiceImpl extends ServiceImpl<PipelineDao, PipPipeline> i
|
|||||||
taskStateMap.put(taskId,taskState);
|
taskStateMap.put(taskId,taskState);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return pipeline;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return new TreeRunContextResp();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,6 @@ import cd.casic.ci.common.pipeline.req.pipeline.PipelineQueryReq;
|
|||||||
import cd.casic.ci.common.pipeline.req.pipeline.PipelineReq;
|
import cd.casic.ci.common.pipeline.req.pipeline.PipelineReq;
|
||||||
import cd.casic.ci.common.pipeline.req.pipeline.PipelineUpdateReq;
|
import cd.casic.ci.common.pipeline.req.pipeline.PipelineUpdateReq;
|
||||||
import cd.casic.ci.common.pipeline.resp.context.SingletonRunContextResp;
|
import cd.casic.ci.common.pipeline.resp.context.SingletonRunContextResp;
|
||||||
import cd.casic.ci.common.pipeline.resp.context.TreeRunContextResp;
|
|
||||||
import cd.casic.ci.common.pipeline.resp.pipeline.PipelineFindResp;
|
import cd.casic.ci.common.pipeline.resp.pipeline.PipelineFindResp;
|
||||||
import cd.casic.ci.common.pipeline.utils.PageResult;
|
import cd.casic.ci.common.pipeline.utils.PageResult;
|
||||||
import cd.casic.ci.process.engine.executor.PipelineExecutor;
|
import cd.casic.ci.process.engine.executor.PipelineExecutor;
|
||||||
@ -106,7 +105,7 @@ public class PipelineController {
|
|||||||
return CommonResult.success(execute);
|
return CommonResult.success(execute);
|
||||||
}
|
}
|
||||||
@PostMapping("/getStageRunState/{pipelineId}")
|
@PostMapping("/getStageRunState/{pipelineId}")
|
||||||
public CommonResult<TreeRunContextResp> getPipelineRunState(@PathVariable String pipelineId){
|
public CommonResult<Map<String, SingletonRunContextResp>> getPipelineRunState(@PathVariable String pipelineId){
|
||||||
return CommonResult.success(pipelineService.getPipelineRunState(pipelineId));
|
return CommonResult.success(pipelineService.getPipelineRunState(pipelineId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,6 @@ public class TasksController {
|
|||||||
}
|
}
|
||||||
@PostMapping("/getLogContentByTaskId/{taskId}")
|
@PostMapping("/getLogContentByTaskId/{taskId}")
|
||||||
public CommonResult<PipTaskLog> getLogContentByTaskId(@PathVariable String taskId){
|
public CommonResult<PipTaskLog> getLogContentByTaskId(@PathVariable String taskId){
|
||||||
return taskService.getLogContentByTaskId(taskId);
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,32 +0,0 @@
|
|||||||
package cd.casic.server;
|
|
||||||
|
|
||||||
import cd.casic.ci.process.engine.manager.RunContextManager;
|
|
||||||
import cd.casic.ci.process.engine.message.TaskRunMessage;
|
|
||||||
import cd.casic.ci.process.engine.runContext.PipelineRunContext;
|
|
||||||
import cd.casic.ci.process.engine.runContext.SecondStageRunContext;
|
|
||||||
import cd.casic.ci.process.engine.runContext.TaskRunContext;
|
|
||||||
import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline;
|
|
||||||
import cd.casic.ci.process.process.dataObject.stage.PipStage;
|
|
||||||
import cd.casic.ci.process.process.dataObject.task.PipTask;
|
|
||||||
import cd.casic.ci.process.util.CryptogramUtil;
|
|
||||||
import cd.casic.framework.mq.redis.core.RedisMQTemplate;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
|
||||||
import org.springframework.test.context.ActiveProfiles;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
|
|
||||||
@SpringBootTest(classes = {OpsServerApplication.class})
|
|
||||||
@ActiveProfiles("local")
|
|
||||||
public class MachineTest {
|
|
||||||
@Test
|
|
||||||
public void test01(){
|
|
||||||
System.out.println("h w !");
|
|
||||||
String password = "Hnidc@0626cn!@#zyx";
|
|
||||||
String encrypt = CryptogramUtil.doEncrypt(password);
|
|
||||||
System.out.println(encrypt);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user