代码提交(测试通过)
This commit is contained in:
parent
76d2a49da9
commit
5c0196c868
@ -84,5 +84,7 @@ public class PipelineCreateReq {
|
||||
|
||||
private String executeStatus;
|
||||
|
||||
private String resourceId;
|
||||
|
||||
private ResourceReq resourceReq;
|
||||
}
|
||||
|
@ -2,12 +2,15 @@ package cd.casic.ci.process.engine.worker;
|
||||
|
||||
|
||||
import cd.casic.ci.process.common.WorkAtom;
|
||||
import cd.casic.ci.process.dal.resp.resource.ResourceFindResp;
|
||||
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.worker.base.SshWorker;
|
||||
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.pipeline.PipPipeline;
|
||||
import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
|
||||
import cd.casic.ci.process.process.dataObject.task.PipTask;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@ -54,9 +57,12 @@ public class DIYImageExecuteCommandWorker extends SshWorker {
|
||||
//如果machineId为0,则说明该节点没有配置机器,则使用开始节点的机器
|
||||
|
||||
//获取机器
|
||||
MachineInfo machineInfoDO = this.getMachineInfoService().getById(machineId);
|
||||
PipPipeline pipeline = (PipPipeline) getContextManager().getContext(taskDef.getPipelineId()).getContextDef();
|
||||
String resourceId = pipeline.getResourceId();
|
||||
ResourceFindResp resourceById = getResourceManagerService().findResourceById(resourceId);
|
||||
PipResourceMachine resourceMachine = resourceById.getResourceMachine();
|
||||
//TODO 得改一下
|
||||
statusCode = shell(machineInfoDO, null,context,
|
||||
statusCode = shell(resourceMachine, null,context,
|
||||
"echo \"自定义镜像执行命令\"",
|
||||
commandScript
|
||||
);
|
||||
|
@ -2,12 +2,14 @@ package cd.casic.ci.process.engine.worker;
|
||||
|
||||
|
||||
import cd.casic.ci.process.common.WorkAtom;
|
||||
import cd.casic.ci.process.dal.resp.resource.ResourceFindResp;
|
||||
import cd.casic.ci.process.engine.constant.DIYImageExecuteCommandConstant;
|
||||
import cd.casic.ci.process.engine.constant.TestCaseGenerationConstant;
|
||||
import cd.casic.ci.process.engine.runContext.TaskRunContext;
|
||||
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.pipeline.PipPipeline;
|
||||
import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
|
||||
import cd.casic.ci.process.process.dataObject.task.PipTask;
|
||||
import cd.casic.ci.process.util.CryptogramUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -39,12 +41,12 @@ public class TestCaseGenerationWorker extends SshWorker {
|
||||
try {
|
||||
//将节点的配置信息反编译成对象
|
||||
log.info("构建脚本" + commandScript);
|
||||
|
||||
String resourceId = pipeline.getResourceId();
|
||||
//如果machineId为0,则说明该节点没有配置机器,则使用开始节点的机器
|
||||
|
||||
ResourceFindResp resourceById = getResourceManagerService().findResourceById(resourceId);
|
||||
PipResourceMachine resourceMachine = resourceById.getResourceMachine();
|
||||
//获取机器
|
||||
MachineInfo machineInfoDO = this.getMachineInfoService().getById(machineId);
|
||||
statusCode = shell(machineInfoDO, CryptogramUtil.doDecrypt(machineInfoDO.getPassword()), context,
|
||||
statusCode = shell(resourceMachine, CryptogramUtil.doDecrypt(resourceMachine.getPassword()), context,
|
||||
"echo \"自定义镜像执行命令\"",
|
||||
commandScript
|
||||
);
|
||||
|
@ -2,6 +2,8 @@ package cd.casic.ci.process.engine.worker.base;
|
||||
|
||||
|
||||
import cd.casic.ci.process.engine.runContext.BaseRunContext;
|
||||
import cd.casic.framework.commons.exception.ServiceException;
|
||||
import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
|
||||
import cd.casic.module.execute.docker.dataobject.dto.DockerEndpointDo;
|
||||
import cd.casic.module.execute.docker.dataobject.model.DockerEndpoint;
|
||||
import com.github.dockerjava.api.DockerClient;
|
||||
@ -47,7 +49,7 @@ public abstract class DockerWorker extends BaseWorker{
|
||||
if (StringUtils.isEmpty(dockerRunCommand)) {
|
||||
log.error("未找到有效指令");
|
||||
append(context,"未找到有效指令");
|
||||
return;
|
||||
throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"");
|
||||
}
|
||||
DockerExecHandler handler = null;
|
||||
try {
|
||||
@ -75,7 +77,7 @@ public abstract class DockerWorker extends BaseWorker{
|
||||
commandList[1]="-c";
|
||||
commandList[2]=allCommand;
|
||||
log.info("容器内执行命令:{}",commandList);
|
||||
append(context,"容器创建失败");
|
||||
// append(context,"容器创建失败");
|
||||
// 创建命令
|
||||
ExecCreateCmdResponse exec = client.execCreateCmd(containerId)
|
||||
.withAttachStdin(true)
|
||||
|
@ -5,6 +5,7 @@ import cd.casic.ci.process.engine.runContext.BaseRunContext;
|
||||
import cd.casic.ci.process.engine.worker.base.BaseWorker;
|
||||
import cd.casic.ci.process.enums.MachineSystemEnum;
|
||||
import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
|
||||
import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
|
||||
import cd.casic.ci.process.ssh.SshClient;
|
||||
import cd.casic.ci.process.ssh.SshClientFactory;
|
||||
import cd.casic.ci.process.ssh.WinRMHelper;
|
||||
@ -23,7 +24,7 @@ public abstract class SshWorker extends BaseWorker {
|
||||
* @param commands 命令
|
||||
* @return 0 成功;其他值 失败
|
||||
*/
|
||||
public int shell(MachineInfo machineInfo, String sudoPassword, BaseRunContext context, String... commands) {
|
||||
public int shell(PipResourceMachine machineInfo, String sudoPassword, BaseRunContext context, String... commands) {
|
||||
List<String> commandList = Arrays.asList(commands);
|
||||
if(MachineSystemEnum.WINDOWS.getSystem().equals(machineInfo.getOsSystem())){
|
||||
return powerShell(machineInfo, commandList);
|
||||
@ -60,7 +61,7 @@ public abstract class SshWorker extends BaseWorker {
|
||||
* @param commandList 命令
|
||||
* @return 0 成功;其他值 失败
|
||||
*/
|
||||
public int powerShell(MachineInfo machineInfo, List<String> commandList) {
|
||||
public int powerShell(PipResourceMachine machineInfo, List<String> commandList) {
|
||||
int statusCode = -1;
|
||||
//loggerUuid得转换成String类型,才能生成key,然后才能通过websocket实时推送节点执行日志
|
||||
|
||||
|
@ -102,7 +102,6 @@ public class PipelineServiceImpl extends ServiceImpl<PipelineDao, PipPipeline> i
|
||||
pipeline.setColor(randomNumber);
|
||||
|
||||
pipeline.setState(1);
|
||||
pipeline.setMachineId("1");
|
||||
|
||||
this.save(pipeline);
|
||||
|
||||
|
@ -2,6 +2,7 @@ package cd.casic.ci.process.ssh;
|
||||
|
||||
|
||||
import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
|
||||
import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
|
||||
import com.jcraft.jsch.JSchException;
|
||||
|
||||
/**
|
||||
@ -35,7 +36,7 @@ public class SshClientFactory {
|
||||
* 主要包含 用户名 密码 私钥 主机ip 端口 认证类型
|
||||
*
|
||||
* */
|
||||
public static SshClient createSsh(MachineInfo properties) throws Exception {
|
||||
public static SshClient createSsh(PipResourceMachine properties) throws Exception {
|
||||
try {
|
||||
return new SshCommand(properties);
|
||||
} catch (JSchException e) {
|
||||
|
@ -3,6 +3,7 @@ package cd.casic.ci.process.ssh;
|
||||
|
||||
import cd.casic.ci.process.constant.CommandConstant;
|
||||
import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
|
||||
import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
|
||||
import cd.casic.ci.process.util.ChannelShellUtil;
|
||||
import cd.casic.ci.process.util.CryptogramUtil;
|
||||
import cn.hutool.extra.ssh.JschUtil;
|
||||
@ -57,10 +58,10 @@ public class SshCommand implements SshClient {
|
||||
*
|
||||
* @throws JSchException
|
||||
*/
|
||||
public SshCommand(MachineInfo machine) throws JSchException {
|
||||
public SshCommand(PipResourceMachine machine) throws JSchException {
|
||||
// 根据用户名,主机ip,端口获取一个Session对象
|
||||
String decrypt = CryptogramUtil.doDecrypt(machine.getPassword());
|
||||
this.session = JschUtil.createSession(machine.getMachineHost(), machine.getSshPort(), machine.getUsername(), decrypt);
|
||||
this.session = JschUtil.createSession(machine.getMachineHost(), Integer.parseInt(machine.getSshPort()), machine.getUsername(), decrypt);
|
||||
this.session.setConfig("PreferredAuthentications", "password");
|
||||
this.session.setConfig("StrictHostKeyChecking", "no");
|
||||
// 通过Session建立链接
|
||||
|
@ -1,6 +1,7 @@
|
||||
package cd.casic.ci.process.ssh;
|
||||
|
||||
import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
|
||||
import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
|
||||
import cd.casic.ci.process.util.CryptogramUtil;
|
||||
import io.cloudsoft.winrm4j.client.WinRmClientContext;
|
||||
import io.cloudsoft.winrm4j.winrm.WinRmTool;
|
||||
@ -32,7 +33,7 @@ public class WinRMHelper {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public WinRMHelper(MachineInfo machineInfo) {
|
||||
public WinRMHelper(PipResourceMachine machineInfo) {
|
||||
this.ip = machineInfo.getMachineHost();
|
||||
this.username = machineInfo.getUsername();
|
||||
this.password = CryptogramUtil.doDecrypt(machineInfo.getPassword());
|
||||
|
Loading…
x
Reference in New Issue
Block a user