feat: 流水线模块初始化

This commit is contained in:
2025-06-29 08:54:59 +08:00
parent 883dac55b9
commit d59a69c372
31 changed files with 999 additions and 227 deletions
@@ -20,4 +20,5 @@ public interface PipelineConst {
String INSTANCE_NODE_CODE_KEY = "pipelineInstanceNodeCode";
String INSTANCE_NODE_NAME_KEY = "pipelineInstanceNodeName";
String INSTANCE_NODE_TEMPLATE_ARGS_KEY = "pipelineInstanceNodeTemplateArgs";
String INSTANCE_RETRY_NODE_INDEX_KEY = "pipelineInstanceRetryNodeIndex";
}
@@ -26,6 +26,11 @@ public interface PipelineNodeBizCodeConst {
*/
String DEPLOY_APPROVE = PipelineConst.EXECUTOR_PREFIX + "node_deploy_approve";
/**
* 合并确认
*/
String MERGE_CONFIRM = PipelineConst.EXECUTOR_PREFIX + "node_merge_confirm";
/**
* 合并到Master
*/
@@ -0,0 +1,34 @@
package cn.odboy.devops.constant.pipeline;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 流水线类型
*/
@Getter
@AllArgsConstructor
public enum PipelineTypeEnum {
BACKEND("backend", "后端"),
FRONT("front", "前端"),
MOBILE("mobile", "移动端"),
ANDROID("pc", "PC端"),
UN_SUPPORT("un_support", "不支持的类型");
/**
* 类型编码
*/
private final String code;
/**
* 描述
*/
private final String desc;
public static PipelineTypeEnum getByCode(String code) {
for (PipelineTypeEnum value : PipelineTypeEnum.values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return UN_SUPPORT;
}
}
@@ -1,7 +1,9 @@
package cn.odboy.devops.dal.dataobject.pipeline;
import cn.odboy.base.CsObject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -23,7 +25,13 @@ import java.util.Date;
@TableName("pipeline_instance_node_detail")
@ApiModel(value = "PipelineInstanceNodeDetail对象", description = "流水线实例节点明细")
public class PipelineInstanceNodeDetailTb extends CsObject {
/**
* id
*/
@ApiModelProperty("id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 流水线实例id
*/
@@ -38,45 +46,36 @@ public class PipelineInstanceNodeDetailTb extends CsObject {
@TableField("start_time")
private Date startTime;
/**
* 结束时间
*/
@ApiModelProperty("结束时间")
@TableField("finish_time")
private Date finishTime;
/**
* 节点状态
*/
@TableField("`status`")
@ApiModelProperty("节点状态")
private String status;
/**
* 节点索引
*/
@ApiModelProperty("节点索引")
@TableField("node_index")
private Integer nodeIndex;
/**
* 节点编码
*/
@TableField("node_code")
@ApiModelProperty("节点编码")
@TableField("node_code")
private String nodeCode;
/**
* 步骤描述
*/
@TableField("step_name")
@ApiModelProperty("步骤描述")
private String stepName;
/**
* 节点描述
* 步骤状态
*/
@ApiModelProperty("节点描述")
@TableField("node_description")
private String nodeDescription;
@ApiModelProperty("步骤状态")
@TableField("step_status")
private String stepStatus;
/**
* 输入参数
* 异常明细
*/
@TableField("`context`")
@ApiModelProperty("输入参数")
private String context;
@ApiModelProperty("异常明细")
@TableField("step_msg")
private String stepMsg;
}
@@ -22,7 +22,7 @@ import java.util.Date;
@Setter
@TableName("pipeline_instance")
@ApiModel(value = "PipelineInstance对象", description = "流水线实例")
public class PipelineInstanceTb extends CsObject{
public class PipelineInstanceTb extends CsObject {
/**
* 流水线模板id
@@ -43,7 +43,7 @@ public class PipelineInstanceTb extends CsObject{
*/
@ApiModelProperty("流水线实例id")
@TableField("pipeline_instance_id")
private String pipelineInstanceId;
private Long pipelineInstanceId;
/**
* 创建时间
@@ -3,6 +3,7 @@ package cn.odboy.devops.dal.mysql.pipeline;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
@@ -14,5 +15,7 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface PipelineInstanceMapper extends BaseMapper<PipelineInstanceTb> {
void updateStatusByInstanceId(@Param("status") String status, @Param("pipelineInstanceId") long pipelineInstanceId);
void updateCurrentNodeByInstanceId(@Param("code") String code, @Param("status") String status, @Param("pipelineInstanceId") long pipelineInstanceId);
}
@@ -1,70 +0,0 @@
package cn.odboy.devops.framework.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst;
import cn.odboy.framework.context.SpringBeanHolder;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeTemplateVo;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import cn.odboy.devops.service.pipeline.PipelineInstanceNodeDetailService;
import cn.odboy.devops.service.pipeline.PipelineInstanceService;
import cn.odboy.util.CsJsonUtil;
import com.alibaba.fastjson2.JSON;
import lombok.extern.slf4j.Slf4j;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.scheduling.quartz.QuartzJobBean;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Future;
@Slf4j
public class PipelineJobBean extends QuartzJobBean {
private final ThreadPoolTaskExecutor executor = SpringBeanHolder.getBean("pipelineAsync");
@Override
public void executeInternal(JobExecutionContext context) {
JobDataMap mergedJobDataMap = context.getMergedJobDataMap();
// 实例、节点明细
PipelineInstanceService pipelineInstanceService = SpringBeanHolder.getBean(PipelineInstanceService.class);
PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService = SpringBeanHolder.getBean(PipelineInstanceNodeDetailService.class);
// 获取流水线实例
String pipelineInstanceId = mergedJobDataMap.getString(PipelineConst.INSTANCE_ID_KEY);
PipelineInstanceTb pipelineInstance = pipelineInstanceService.getPipelineInstance(pipelineInstanceId);
if (pipelineInstance == null) {
log.info("流水线实例不存在, instanceId={}", pipelineInstanceId);
return;
}
String pipelineTemplate = pipelineInstance.getPipelineTemplate();
// 流水线节点模板
List<PipelineNodeTemplateVo> pipelineNodeTemplateVos = JSON.parseArray(pipelineTemplate, PipelineNodeTemplateVo.class);
// 流水线上下文参数
Map<String, Object> contextArgs = CsJsonUtil.toMap(pipelineInstance.getContext(), String.class, Object.class);
// 放置额外的参数
contextArgs.put(PipelineConst.INSTANCE_KEY, pipelineInstance);
// 执行节点任务
for (int i = 0; i < pipelineNodeTemplateVos.size(); i++) {
PipelineNodeTemplateVo pipelineNodeTemplateVo = pipelineNodeTemplateVos.get(i);
String code = pipelineNodeTemplateVo.getCode();
contextArgs.put(PipelineConst.INSTANCE_NODE_INDEX_KEY, i);
contextArgs.put(PipelineConst.INSTANCE_NODE_CODE_KEY, code);
contextArgs.put(PipelineConst.INSTANCE_NODE_NAME_KEY, pipelineNodeTemplateVo.getName());
contextArgs.put(PipelineConst.INSTANCE_NODE_TEMPLATE_ARGS_KEY, pipelineNodeTemplateVo.getParameters());
try {
List<String> allServiceBeanName = SpringBeanHolder.getAllServiceBeanName();
System.err.println(allServiceBeanName);
PipelineNodeJobRunnable pipelineNodeJobRunnable = new PipelineNodeJobRunnable(
PipelineConst.EXECUTOR_PREFIX + code,
contextArgs,
pipelineInstanceNodeDetailService
);
Future<?> future = executor.submit(pipelineNodeJobRunnable);
PipelineNodeJobExecuteResult executeResult = (PipelineNodeJobExecuteResult) future.get();
System.err.println(executeResult);
} catch (Exception e) {
log.error("流水线节点任务执行失败", e);
}
}
}
}
@@ -0,0 +1,19 @@
package cn.odboy.devops.framework.pipeline.core;
import cn.odboy.devops.service.pipeline.PipelineInstanceService;
import cn.odboy.framework.context.SpringBeanHolder;
import lombok.extern.slf4j.Slf4j;
import org.quartz.JobExecutionContext;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.scheduling.quartz.QuartzJobBean;
@Slf4j
public class PipelineJobBean extends QuartzJobBean {
private final ThreadPoolTaskExecutor executor = SpringBeanHolder.getBean("pipelineAsync");
private final PipelineInstanceService pipelineInstanceService = SpringBeanHolder.getBean(PipelineInstanceService.class);
@Override
public void executeInternal(JobExecutionContext context) {
pipelineInstanceService.startPipeline(executor, context);
}
}
@@ -1,8 +1,8 @@
package cn.odboy.devops.framework.pipeline;
package cn.odboy.devops.framework.pipeline.core;
import cn.odboy.devops.constant.pipeline.PipelineConst;
import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import cn.odboy.framework.exception.BadRequestException;
import lombok.extern.slf4j.Slf4j;
import org.quartz.*;
import org.springframework.stereotype.Component;
@@ -12,6 +12,7 @@ import javax.annotation.Resource;
@Slf4j
@Component
public class PipelineJobManage {
private static final String JOB_KEY = "PIPELINE_JOB_";
@Resource
private Scheduler scheduler;
@@ -23,11 +24,11 @@ public class PipelineJobManage {
// 构建 JobDetail
JobDetail jobDetail = JobBuilder
.newJob(PipelineJobBean.class)
.withIdentity(pipelineInstance.getPipelineInstanceId())
.withIdentity(JOB_KEY + pipelineInstance.getPipelineInstanceId())
.build();
// 构建Trigger
Trigger cronTrigger = TriggerBuilder.newTrigger()
.withIdentity(pipelineInstance.getPipelineInstanceId())
.withIdentity(JOB_KEY + pipelineInstance.getPipelineInstanceId())
.startNow()
.build();
// 添加流水线实例
@@ -48,7 +49,7 @@ public class PipelineJobManage {
*/
public void deleteJob(PipelineInstanceTb pipelineInstance) {
try {
JobKey jobKey = JobKey.jobKey(pipelineInstance.getPipelineInstanceId());
JobKey jobKey = JobKey.jobKey(JOB_KEY + pipelineInstance.getPipelineInstanceId());
scheduler.pauseJob(jobKey);
scheduler.deleteJob(jobKey);
} catch (Exception e) {
@@ -1,11 +1,10 @@
package cn.odboy.devops.framework.pipeline;
package cn.odboy.devops.framework.pipeline.core;
import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult;
import cn.odboy.devops.service.pipeline.PipelineInstanceNodeDetailService;
import cn.odboy.framework.exception.BadRequestException;
import java.util.Map;
public interface PipelineNodeJobExecutor {
PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs, PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService) throws BadRequestException;
PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs) throws BadRequestException;
}
@@ -1,7 +1,6 @@
package cn.odboy.devops.framework.pipeline;
package cn.odboy.devops.framework.pipeline.core;
import cn.odboy.framework.context.SpringBeanHolder;
import cn.odboy.devops.service.pipeline.PipelineInstanceNodeDetailService;
import java.util.HashMap;
import java.util.Map;
@@ -10,20 +9,18 @@ import java.util.concurrent.Callable;
public class PipelineNodeJobRunnable implements Callable<Object> {
private final PipelineNodeJobExecutor target;
private final Map<String, Object> params;
private final PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService;
public PipelineNodeJobRunnable(String beanName, Map<String, Object> params, PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService) {
public PipelineNodeJobRunnable(String beanName, Map<String, Object> params) {
this.target = SpringBeanHolder.getBean(beanName);
this.params = params;
this.pipelineInstanceNodeDetailService = pipelineInstanceNodeDetailService;
}
@Override
@SuppressWarnings({"unchecked", "all"})
public Object call() throws Exception {
if (this.params == null) {
return this.target.execute(new HashMap<>(1), this.pipelineInstanceNodeDetailService);
return this.target.execute(new HashMap<>(1));
}
return this.target.execute(this.params, this.pipelineInstanceNodeDetailService);
return this.target.execute(this.params);
}
}
@@ -18,10 +18,24 @@ public class PipelineNodeJobExecuteResult extends CsObject {
return result;
}
public static PipelineNodeJobExecuteResult success(String message) {
PipelineNodeJobExecuteResult result = new PipelineNodeJobExecuteResult();
result.setStatus(PipelineStatusEnum.SUCCESS);
result.setMessage(message);
return result;
}
public static PipelineNodeJobExecuteResult fail() {
PipelineNodeJobExecuteResult result = new PipelineNodeJobExecuteResult();
result.setStatus(PipelineStatusEnum.FAIL);
result.setMessage(PipelineStatusEnum.FAIL.getDesc());
return result;
}
public static PipelineNodeJobExecuteResult fail(String message) {
PipelineNodeJobExecuteResult result = new PipelineNodeJobExecuteResult();
result.setStatus(PipelineStatusEnum.FAIL);
result.setMessage(message);
return result;
}
}
@@ -4,6 +4,9 @@ import cn.odboy.base.CsObject;
import lombok.Getter;
import lombok.Setter;
import java.util.HashMap;
import java.util.Map;
/**
* 流水线节点控制按钮
*
@@ -21,19 +24,11 @@ public class PipelineNodeTemplateButtonVo extends CsObject {
*/
private String title;
/**
* 出现的条件,根据node节点的状态判断
*/
private String condition;
/**
* link: 按钮跳转的url
*/
private String linkUrl;
/**
* link: 是否新窗口打开
*/
private boolean isBlank = true;
/**
* service: 服务编码
* 按钮传递的参数
*/
private String code;
/**
* 按钮样式参数
*/
private Map<String, String> parameters = new HashMap<>();
}
@@ -21,6 +21,10 @@ public class PipelineNodeTemplateVo extends CsObject {
* 业务编码
*/
private String code;
/**
* 业务类型(service:系统内置服务 rpc:远程调用)
*/
private String type;
/**
* 业务名称
*/
@@ -28,15 +32,15 @@ public class PipelineNodeTemplateVo extends CsObject {
/**
* 是否可点击
*/
private Boolean click;
private Boolean click = false;
/**
* 是否可重试
*/
private Boolean retry;
private Boolean retry = false;
/**
* 是否可点击:点击展示详情,详情内容类型
*/
private String detailType;
private String detailType = "";
/**
* 默认参数
*/
@@ -1,19 +1,64 @@
package cn.odboy.devops.job;
import cn.odboy.devops.constant.pipeline.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineNodeBizCodeConst;
import cn.odboy.devops.framework.pipeline.PipelineNodeJobExecutor;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum;
import cn.odboy.devops.constant.pipeline.PipelineTypeEnum;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineTemplateTb;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult;
import cn.odboy.devops.service.pipeline.PipelineInstanceNodeDetailService;
import cn.odboy.devops.service.pipeline.PipelineInstanceService;
import cn.odboy.devops.service.pipeline.PipelineTemplateService;
import cn.odboy.framework.exception.BadRequestException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
@RequiredArgsConstructor
@Service(value = PipelineNodeBizCodeConst.INIT)
public class PipelineNodeInitJob implements PipelineNodeJobExecutor {
private final PipelineTemplateService pipelineTemplateService;
private final PipelineInstanceService pipelineInstanceService;
private final PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService;
@Override
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs, PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService) throws BadRequestException {
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs) throws BadRequestException {
String nodeName = (String) contextArgs.getOrDefault(PipelineConst.INSTANCE_NODE_NAME_KEY, "");
PipelineInstanceTb pipelineInstance = (PipelineInstanceTb) contextArgs.get(PipelineConst.INSTANCE_KEY);
PipelineNodeJobExecuteResult executeResult;
try {
PipelineTemplateTb pipelineTemplate = pipelineTemplateService.getPipelineTemplateById(pipelineInstance.getPipelineTemplateId());
PipelineTypeEnum pipelineType = PipelineTypeEnum.getByCode(pipelineInstance.getType());
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s开始", nodeName), PipelineStatusEnum.SUCCESS, "");
switch (pipelineType) {
case BACKEND:
executeResult = handleBackend(pipelineTemplate, pipelineInstance, contextArgs);
break;
default:
executeResult = PipelineNodeJobExecuteResult.success();
break;
}
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s成功", nodeName), PipelineStatusEnum.SUCCESS, "");
return executeResult;
} catch (Exception e) {
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s失败", nodeName), PipelineStatusEnum.FAIL, e.getMessage());
throw e;
}
}
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult handleBackend(PipelineTemplateTb pipelineTemplate, PipelineInstanceTb pipelineInstance, Map<String, Object> contextArgs) {
Long pipelineInstanceId = pipelineInstance.getPipelineInstanceId();
String language = pipelineTemplate.getLanguage();
String env = pipelineInstance.getEnv();
String appName = pipelineInstance.getAppName();
pipelineInstanceNodeDetailService.addLog(pipelineInstanceId, contextArgs, "release分支名称: xxxxxx", PipelineStatusEnum.SUCCESS, "");
pipelineInstanceNodeDetailService.addLog(pipelineInstanceId, contextArgs, "master分支合并到release分支成功: xxxxxx", PipelineStatusEnum.SUCCESS, "");
return PipelineNodeJobExecuteResult.success();
}
}
@@ -1,18 +1,62 @@
package cn.odboy.devops.job.app;
import cn.odboy.devops.constant.pipeline.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineNodeBizCodeConst;
import cn.odboy.devops.framework.pipeline.PipelineNodeJobExecutor;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum;
import cn.odboy.devops.constant.pipeline.PipelineTypeEnum;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineTemplateTb;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult;
import cn.odboy.devops.service.pipeline.PipelineInstanceNodeDetailService;
import cn.odboy.devops.service.pipeline.PipelineInstanceService;
import cn.odboy.devops.service.pipeline.PipelineTemplateService;
import cn.odboy.framework.exception.BadRequestException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
@RequiredArgsConstructor
@Service(value = PipelineNodeBizCodeConst.AppGo.BUILD)
public class PipelineNodeBuildGoJob implements PipelineNodeJobExecutor {
private final PipelineTemplateService pipelineTemplateService;
private final PipelineInstanceService pipelineInstanceService;
private final PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService;
@Override
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs, PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService) throws BadRequestException {
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs) throws BadRequestException {
String nodeName = (String) contextArgs.getOrDefault(PipelineConst.INSTANCE_NODE_NAME_KEY, "");
PipelineInstanceTb pipelineInstance = (PipelineInstanceTb) contextArgs.get(PipelineConst.INSTANCE_KEY);
PipelineNodeJobExecuteResult executeResult;
try {
PipelineTemplateTb pipelineTemplate = pipelineTemplateService.getPipelineTemplateById(pipelineInstance.getPipelineTemplateId());
PipelineTypeEnum pipelineType = PipelineTypeEnum.getByCode(pipelineInstance.getType());
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s开始", nodeName), PipelineStatusEnum.SUCCESS, "");
switch (pipelineType) {
case BACKEND:
executeResult = handleBackend(pipelineTemplate, pipelineInstance, contextArgs);
break;
default:
executeResult = PipelineNodeJobExecuteResult.success();
break;
}
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s成功", nodeName), PipelineStatusEnum.SUCCESS, "");
return executeResult;
} catch (Exception e) {
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s失败", nodeName), PipelineStatusEnum.FAIL, e.getMessage());
throw e;
}
}
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult handleBackend(PipelineTemplateTb pipelineTemplate, PipelineInstanceTb pipelineInstance, Map<String, Object> contextArgs) {
Long pipelineInstanceId = pipelineInstance.getPipelineInstanceId();
String language = pipelineTemplate.getLanguage();
String env = pipelineInstance.getEnv();
String appName = pipelineInstance.getAppName();
return PipelineNodeJobExecuteResult.success();
}
}
@@ -1,18 +1,62 @@
package cn.odboy.devops.job.app;
import cn.odboy.devops.constant.pipeline.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineNodeBizCodeConst;
import cn.odboy.devops.framework.pipeline.PipelineNodeJobExecutor;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum;
import cn.odboy.devops.constant.pipeline.PipelineTypeEnum;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineTemplateTb;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult;
import cn.odboy.devops.service.pipeline.PipelineInstanceNodeDetailService;
import cn.odboy.devops.service.pipeline.PipelineInstanceService;
import cn.odboy.devops.service.pipeline.PipelineTemplateService;
import cn.odboy.framework.exception.BadRequestException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
@RequiredArgsConstructor
@Service(value = PipelineNodeBizCodeConst.AppJava.BUILD)
public class PipelineNodeBuildJavaJob implements PipelineNodeJobExecutor {
private final PipelineTemplateService pipelineTemplateService;
private final PipelineInstanceService pipelineInstanceService;
private final PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService;
@Override
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs, PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService) throws BadRequestException {
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs) throws BadRequestException {
String nodeName = (String) contextArgs.getOrDefault(PipelineConst.INSTANCE_NODE_NAME_KEY, "");
PipelineInstanceTb pipelineInstance = (PipelineInstanceTb) contextArgs.get(PipelineConst.INSTANCE_KEY);
PipelineNodeJobExecuteResult executeResult;
try {
PipelineTemplateTb pipelineTemplate = pipelineTemplateService.getPipelineTemplateById(pipelineInstance.getPipelineTemplateId());
PipelineTypeEnum pipelineType = PipelineTypeEnum.getByCode(pipelineInstance.getType());
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s开始", nodeName), PipelineStatusEnum.SUCCESS, "");
switch (pipelineType) {
case BACKEND:
executeResult = handleBackend(pipelineTemplate, pipelineInstance, contextArgs);
break;
default:
executeResult = PipelineNodeJobExecuteResult.success();
break;
}
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s成功", nodeName), PipelineStatusEnum.SUCCESS, "");
return executeResult;
} catch (Exception e) {
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s失败", nodeName), PipelineStatusEnum.FAIL, e.getMessage());
throw e;
}
}
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult handleBackend(PipelineTemplateTb pipelineTemplate, PipelineInstanceTb pipelineInstance, Map<String, Object> contextArgs) {
Long pipelineInstanceId = pipelineInstance.getPipelineInstanceId();
String language = pipelineTemplate.getLanguage();
String env = pipelineInstance.getEnv();
String appName = pipelineInstance.getAppName();
return PipelineNodeJobExecuteResult.success();
}
}
@@ -1,18 +1,62 @@
package cn.odboy.devops.job.app;
import cn.odboy.devops.constant.pipeline.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineNodeBizCodeConst;
import cn.odboy.devops.framework.pipeline.PipelineNodeJobExecutor;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum;
import cn.odboy.devops.constant.pipeline.PipelineTypeEnum;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineTemplateTb;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult;
import cn.odboy.devops.service.pipeline.PipelineInstanceNodeDetailService;
import cn.odboy.devops.service.pipeline.PipelineInstanceService;
import cn.odboy.devops.service.pipeline.PipelineTemplateService;
import cn.odboy.framework.exception.BadRequestException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
@RequiredArgsConstructor
@Service(value = PipelineNodeBizCodeConst.AppPython.BUILD)
public class PipelineNodeBuildPythonJob implements PipelineNodeJobExecutor {
private final PipelineTemplateService pipelineTemplateService;
private final PipelineInstanceService pipelineInstanceService;
private final PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService;
@Override
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs, PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService) throws BadRequestException {
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs) throws BadRequestException {
String nodeName = (String) contextArgs.getOrDefault(PipelineConst.INSTANCE_NODE_NAME_KEY, "");
PipelineInstanceTb pipelineInstance = (PipelineInstanceTb) contextArgs.get(PipelineConst.INSTANCE_KEY);
PipelineNodeJobExecuteResult executeResult;
try {
PipelineTemplateTb pipelineTemplate = pipelineTemplateService.getPipelineTemplateById(pipelineInstance.getPipelineTemplateId());
PipelineTypeEnum pipelineType = PipelineTypeEnum.getByCode(pipelineInstance.getType());
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s开始", nodeName), PipelineStatusEnum.SUCCESS, "");
switch (pipelineType) {
case BACKEND:
executeResult = handleBackend(pipelineTemplate, pipelineInstance, contextArgs);
break;
default:
executeResult = PipelineNodeJobExecuteResult.success();
break;
}
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s成功", nodeName), PipelineStatusEnum.SUCCESS, "");
return executeResult;
} catch (Exception e) {
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s失败", nodeName), PipelineStatusEnum.FAIL, e.getMessage());
throw e;
}
}
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult handleBackend(PipelineTemplateTb pipelineTemplate, PipelineInstanceTb pipelineInstance, Map<String, Object> contextArgs) {
Long pipelineInstanceId = pipelineInstance.getPipelineInstanceId();
String language = pipelineTemplate.getLanguage();
String env = pipelineInstance.getEnv();
String appName = pipelineInstance.getAppName();
return PipelineNodeJobExecuteResult.success();
}
}
@@ -1,18 +1,62 @@
package cn.odboy.devops.job.app;
import cn.odboy.devops.constant.pipeline.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineNodeBizCodeConst;
import cn.odboy.devops.framework.pipeline.PipelineNodeJobExecutor;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum;
import cn.odboy.devops.constant.pipeline.PipelineTypeEnum;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineTemplateTb;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult;
import cn.odboy.devops.service.pipeline.PipelineInstanceNodeDetailService;
import cn.odboy.devops.service.pipeline.PipelineInstanceService;
import cn.odboy.devops.service.pipeline.PipelineTemplateService;
import cn.odboy.framework.exception.BadRequestException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
@RequiredArgsConstructor
@Service(value = PipelineNodeBizCodeConst.DEPLOY_APPROVE)
public class PipelineNodeDeployApproveJob implements PipelineNodeJobExecutor {
private final PipelineTemplateService pipelineTemplateService;
private final PipelineInstanceService pipelineInstanceService;
private final PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService;
@Override
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs, PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService) throws BadRequestException {
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs) throws BadRequestException {
String nodeName = (String) contextArgs.getOrDefault(PipelineConst.INSTANCE_NODE_NAME_KEY, "");
PipelineInstanceTb pipelineInstance = (PipelineInstanceTb) contextArgs.get(PipelineConst.INSTANCE_KEY);
PipelineNodeJobExecuteResult executeResult;
try {
PipelineTemplateTb pipelineTemplate = pipelineTemplateService.getPipelineTemplateById(pipelineInstance.getPipelineTemplateId());
PipelineTypeEnum pipelineType = PipelineTypeEnum.getByCode(pipelineInstance.getType());
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s开始", nodeName), PipelineStatusEnum.SUCCESS, "");
switch (pipelineType) {
case BACKEND:
executeResult = handleBackend(pipelineTemplate, pipelineInstance, contextArgs);
break;
default:
executeResult = PipelineNodeJobExecuteResult.success();
break;
}
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s成功", nodeName), PipelineStatusEnum.SUCCESS, "");
return executeResult;
} catch (Exception e) {
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s失败", nodeName), PipelineStatusEnum.FAIL, e.getMessage());
throw e;
}
}
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult handleBackend(PipelineTemplateTb pipelineTemplate, PipelineInstanceTb pipelineInstance, Map<String, Object> contextArgs) {
Long pipelineInstanceId = pipelineInstance.getPipelineInstanceId();
String language = pipelineTemplate.getLanguage();
String env = pipelineInstance.getEnv();
String appName = pipelineInstance.getAppName();
return PipelineNodeJobExecuteResult.success();
}
}
@@ -1,18 +1,62 @@
package cn.odboy.devops.job.app;
import cn.odboy.devops.constant.pipeline.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineNodeBizCodeConst;
import cn.odboy.devops.framework.pipeline.PipelineNodeJobExecutor;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum;
import cn.odboy.devops.constant.pipeline.PipelineTypeEnum;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineTemplateTb;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult;
import cn.odboy.devops.service.pipeline.PipelineInstanceNodeDetailService;
import cn.odboy.devops.service.pipeline.PipelineInstanceService;
import cn.odboy.devops.service.pipeline.PipelineTemplateService;
import cn.odboy.framework.exception.BadRequestException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
@RequiredArgsConstructor
@Service(value = PipelineNodeBizCodeConst.AppGo.DEPLOY)
public class PipelineNodeDeployGoJob implements PipelineNodeJobExecutor {
private final PipelineTemplateService pipelineTemplateService;
private final PipelineInstanceService pipelineInstanceService;
private final PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService;
@Override
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs, PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService) throws BadRequestException {
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs) throws BadRequestException {
String nodeName = (String) contextArgs.getOrDefault(PipelineConst.INSTANCE_NODE_NAME_KEY, "");
PipelineInstanceTb pipelineInstance = (PipelineInstanceTb) contextArgs.get(PipelineConst.INSTANCE_KEY);
PipelineNodeJobExecuteResult executeResult;
try {
PipelineTemplateTb pipelineTemplate = pipelineTemplateService.getPipelineTemplateById(pipelineInstance.getPipelineTemplateId());
PipelineTypeEnum pipelineType = PipelineTypeEnum.getByCode(pipelineInstance.getType());
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s开始", nodeName), PipelineStatusEnum.SUCCESS, "");
switch (pipelineType) {
case BACKEND:
executeResult = handleBackend(pipelineTemplate, pipelineInstance, contextArgs);
break;
default:
executeResult = PipelineNodeJobExecuteResult.success();
break;
}
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s成功", nodeName), PipelineStatusEnum.SUCCESS, "");
return executeResult;
} catch (Exception e) {
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s失败", nodeName), PipelineStatusEnum.FAIL, e.getMessage());
throw e;
}
}
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult handleBackend(PipelineTemplateTb pipelineTemplate, PipelineInstanceTb pipelineInstance, Map<String, Object> contextArgs) {
Long pipelineInstanceId = pipelineInstance.getPipelineInstanceId();
String language = pipelineTemplate.getLanguage();
String env = pipelineInstance.getEnv();
String appName = pipelineInstance.getAppName();
return PipelineNodeJobExecuteResult.success();
}
}
@@ -1,18 +1,62 @@
package cn.odboy.devops.job.app;
import cn.odboy.devops.constant.pipeline.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineNodeBizCodeConst;
import cn.odboy.devops.framework.pipeline.PipelineNodeJobExecutor;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum;
import cn.odboy.devops.constant.pipeline.PipelineTypeEnum;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineTemplateTb;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult;
import cn.odboy.devops.service.pipeline.PipelineInstanceNodeDetailService;
import cn.odboy.devops.service.pipeline.PipelineInstanceService;
import cn.odboy.devops.service.pipeline.PipelineTemplateService;
import cn.odboy.framework.exception.BadRequestException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
@RequiredArgsConstructor
@Service(value = PipelineNodeBizCodeConst.AppJava.DEPLOY)
public class PipelineNodeDeployJavaJob implements PipelineNodeJobExecutor {
private final PipelineTemplateService pipelineTemplateService;
private final PipelineInstanceService pipelineInstanceService;
private final PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService;
@Override
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs, PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService) throws BadRequestException {
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs) throws BadRequestException {
String nodeName = (String) contextArgs.getOrDefault(PipelineConst.INSTANCE_NODE_NAME_KEY, "");
PipelineInstanceTb pipelineInstance = (PipelineInstanceTb) contextArgs.get(PipelineConst.INSTANCE_KEY);
PipelineNodeJobExecuteResult executeResult;
try {
PipelineTemplateTb pipelineTemplate = pipelineTemplateService.getPipelineTemplateById(pipelineInstance.getPipelineTemplateId());
PipelineTypeEnum pipelineType = PipelineTypeEnum.getByCode(pipelineInstance.getType());
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s开始", nodeName), PipelineStatusEnum.SUCCESS, "");
switch (pipelineType) {
case BACKEND:
executeResult = handleBackend(pipelineTemplate, pipelineInstance, contextArgs);
break;
default:
executeResult = PipelineNodeJobExecuteResult.success();
break;
}
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s成功", nodeName), PipelineStatusEnum.SUCCESS, "");
return executeResult;
} catch (Exception e) {
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s失败", nodeName), PipelineStatusEnum.FAIL, e.getMessage());
throw e;
}
}
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult handleBackend(PipelineTemplateTb pipelineTemplate, PipelineInstanceTb pipelineInstance, Map<String, Object> contextArgs) {
Long pipelineInstanceId = pipelineInstance.getPipelineInstanceId();
String language = pipelineTemplate.getLanguage();
String env = pipelineInstance.getEnv();
String appName = pipelineInstance.getAppName();
return PipelineNodeJobExecuteResult.success();
}
}
@@ -1,18 +1,62 @@
package cn.odboy.devops.job.app;
import cn.odboy.devops.constant.pipeline.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineNodeBizCodeConst;
import cn.odboy.devops.framework.pipeline.PipelineNodeJobExecutor;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum;
import cn.odboy.devops.constant.pipeline.PipelineTypeEnum;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineTemplateTb;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult;
import cn.odboy.devops.service.pipeline.PipelineInstanceNodeDetailService;
import cn.odboy.devops.service.pipeline.PipelineInstanceService;
import cn.odboy.devops.service.pipeline.PipelineTemplateService;
import cn.odboy.framework.exception.BadRequestException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
@RequiredArgsConstructor
@Service(value = PipelineNodeBizCodeConst.AppPython.DEPLOY)
public class PipelineNodeDeployPythonJob implements PipelineNodeJobExecutor {
private final PipelineTemplateService pipelineTemplateService;
private final PipelineInstanceService pipelineInstanceService;
private final PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService;
@Override
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs, PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService) throws BadRequestException {
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs) throws BadRequestException {
String nodeName = (String) contextArgs.getOrDefault(PipelineConst.INSTANCE_NODE_NAME_KEY, "");
PipelineInstanceTb pipelineInstance = (PipelineInstanceTb) contextArgs.get(PipelineConst.INSTANCE_KEY);
PipelineNodeJobExecuteResult executeResult;
try {
PipelineTemplateTb pipelineTemplate = pipelineTemplateService.getPipelineTemplateById(pipelineInstance.getPipelineTemplateId());
PipelineTypeEnum pipelineType = PipelineTypeEnum.getByCode(pipelineInstance.getType());
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s开始", nodeName), PipelineStatusEnum.SUCCESS, "");
switch (pipelineType) {
case BACKEND:
executeResult = handleBackend(pipelineTemplate, pipelineInstance, contextArgs);
break;
default:
executeResult = PipelineNodeJobExecuteResult.success();
break;
}
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s成功", nodeName), PipelineStatusEnum.SUCCESS, "");
return executeResult;
} catch (Exception e) {
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s失败", nodeName), PipelineStatusEnum.FAIL, e.getMessage());
throw e;
}
}
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult handleBackend(PipelineTemplateTb pipelineTemplate, PipelineInstanceTb pipelineInstance, Map<String, Object> contextArgs) {
Long pipelineInstanceId = pipelineInstance.getPipelineInstanceId();
String language = pipelineTemplate.getLanguage();
String env = pipelineInstance.getEnv();
String appName = pipelineInstance.getAppName();
return PipelineNodeJobExecuteResult.success();
}
}
@@ -1,18 +1,62 @@
package cn.odboy.devops.job.app;
import cn.odboy.devops.constant.pipeline.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineNodeBizCodeConst;
import cn.odboy.devops.framework.pipeline.PipelineNodeJobExecutor;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum;
import cn.odboy.devops.constant.pipeline.PipelineTypeEnum;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineTemplateTb;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult;
import cn.odboy.devops.service.pipeline.PipelineInstanceNodeDetailService;
import cn.odboy.devops.service.pipeline.PipelineInstanceService;
import cn.odboy.devops.service.pipeline.PipelineTemplateService;
import cn.odboy.framework.exception.BadRequestException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
@RequiredArgsConstructor
@Service(value = PipelineNodeBizCodeConst.IMAGE_SCAN)
public class PipelineNodeImageScanJob implements PipelineNodeJobExecutor {
private final PipelineTemplateService pipelineTemplateService;
private final PipelineInstanceService pipelineInstanceService;
private final PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService;
@Override
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs, PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService) throws BadRequestException {
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs) throws BadRequestException {
String nodeName = (String) contextArgs.getOrDefault(PipelineConst.INSTANCE_NODE_NAME_KEY, "");
PipelineInstanceTb pipelineInstance = (PipelineInstanceTb) contextArgs.get(PipelineConst.INSTANCE_KEY);
PipelineNodeJobExecuteResult executeResult;
try {
PipelineTemplateTb pipelineTemplate = pipelineTemplateService.getPipelineTemplateById(pipelineInstance.getPipelineTemplateId());
PipelineTypeEnum pipelineType = PipelineTypeEnum.getByCode(pipelineInstance.getType());
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s开始", nodeName), PipelineStatusEnum.SUCCESS, "");
switch (pipelineType) {
case BACKEND:
executeResult = handleBackend(pipelineTemplate, pipelineInstance, contextArgs);
break;
default:
executeResult = PipelineNodeJobExecuteResult.success();
break;
}
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s成功", nodeName), PipelineStatusEnum.SUCCESS, "");
return executeResult;
} catch (Exception e) {
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s失败", nodeName), PipelineStatusEnum.FAIL, e.getMessage());
throw e;
}
}
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult handleBackend(PipelineTemplateTb pipelineTemplate, PipelineInstanceTb pipelineInstance, Map<String, Object> contextArgs) {
Long pipelineInstanceId = pipelineInstance.getPipelineInstanceId();
String language = pipelineTemplate.getLanguage();
String env = pipelineInstance.getEnv();
String appName = pipelineInstance.getAppName();
return PipelineNodeJobExecuteResult.success();
}
}
@@ -1,18 +1,63 @@
package cn.odboy.devops.job.app;
import cn.odboy.devops.constant.pipeline.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineNodeBizCodeConst;
import cn.odboy.devops.framework.pipeline.PipelineNodeJobExecutor;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum;
import cn.odboy.devops.constant.pipeline.PipelineTypeEnum;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineTemplateTb;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult;
import cn.odboy.devops.service.pipeline.PipelineInstanceNodeDetailService;
import cn.odboy.devops.service.pipeline.PipelineInstanceService;
import cn.odboy.devops.service.pipeline.PipelineTemplateService;
import cn.odboy.framework.exception.BadRequestException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
@RequiredArgsConstructor
@Service(value = PipelineNodeBizCodeConst.MERGE_BRANCH)
public class PipelineNodeMergeBranchJob implements PipelineNodeJobExecutor {
private final PipelineTemplateService pipelineTemplateService;
private final PipelineInstanceService pipelineInstanceService;
private final PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService;
@Override
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs, PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService) throws BadRequestException {
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs) throws BadRequestException {
String nodeName = (String) contextArgs.getOrDefault(PipelineConst.INSTANCE_NODE_NAME_KEY, "");
PipelineInstanceTb pipelineInstance = (PipelineInstanceTb) contextArgs.get(PipelineConst.INSTANCE_KEY);
PipelineNodeJobExecuteResult executeResult;
try {
PipelineTemplateTb pipelineTemplate = pipelineTemplateService.getPipelineTemplateById(pipelineInstance.getPipelineTemplateId());
PipelineTypeEnum pipelineType = PipelineTypeEnum.getByCode(pipelineInstance.getType());
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s开始", nodeName), PipelineStatusEnum.SUCCESS, "");
switch (pipelineType) {
case BACKEND:
executeResult = handleBackend(pipelineTemplate, pipelineInstance, contextArgs);
break;
default:
executeResult = PipelineNodeJobExecuteResult.success();
break;
}
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s成功", nodeName), PipelineStatusEnum.SUCCESS, "");
return executeResult;
} catch (Exception e) {
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s失败", nodeName), PipelineStatusEnum.FAIL, e.getMessage());
throw e;
}
}
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult handleBackend(PipelineTemplateTb pipelineTemplate, PipelineInstanceTb pipelineInstance, Map<String, Object> contextArgs) {
Long pipelineInstanceId = pipelineInstance.getPipelineInstanceId();
String language = pipelineTemplate.getLanguage();
String env = pipelineInstance.getEnv();
String appName = pipelineInstance.getAppName();
pipelineInstanceNodeDetailService.addLog(pipelineInstanceId, contextArgs, "集成区分支 xxxxxx 合并到release分支成功", PipelineStatusEnum.SUCCESS, "");
return PipelineNodeJobExecuteResult.success();
}
}
@@ -0,0 +1,45 @@
package cn.odboy.devops.job.app;
import cn.odboy.devops.constant.pipeline.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineNodeBizCodeConst;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum;
import cn.odboy.devops.constant.pipeline.PipelineTypeEnum;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineTemplateTb;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult;
import cn.odboy.devops.service.pipeline.PipelineInstanceNodeDetailService;
import cn.odboy.devops.service.pipeline.PipelineInstanceService;
import cn.odboy.devops.service.pipeline.PipelineTemplateService;
import cn.odboy.framework.exception.BadRequestException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
@RequiredArgsConstructor
@Service(value = PipelineNodeBizCodeConst.MERGE_CONFIRM)
public class PipelineNodeMergeConfirmJob implements PipelineNodeJobExecutor {
private final PipelineTemplateService pipelineTemplateService;
private final PipelineInstanceService pipelineInstanceService;
private final PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService;
@Override
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs) throws BadRequestException {
String nodeName = (String) contextArgs.getOrDefault(PipelineConst.INSTANCE_NODE_NAME_KEY, "");
PipelineInstanceTb pipelineInstance = (PipelineInstanceTb) contextArgs.get(PipelineConst.INSTANCE_KEY);
PipelineNodeJobExecuteResult executeResult = new PipelineNodeJobExecuteResult();
try {
PipelineTemplateTb pipelineTemplate = pipelineTemplateService.getPipelineTemplateById(pipelineInstance.getPipelineTemplateId());
PipelineTypeEnum pipelineType = PipelineTypeEnum.getByCode(pipelineInstance.getType());
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s开始", nodeName), PipelineStatusEnum.SUCCESS, "");
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s成功", nodeName), PipelineStatusEnum.SUCCESS, "");
return executeResult;
} catch (Exception e) {
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s失败", nodeName), PipelineStatusEnum.FAIL, e.getMessage());
throw e;
}
}
}
@@ -1,18 +1,62 @@
package cn.odboy.devops.job.app;
import cn.odboy.devops.constant.pipeline.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineNodeBizCodeConst;
import cn.odboy.devops.framework.pipeline.PipelineNodeJobExecutor;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum;
import cn.odboy.devops.constant.pipeline.PipelineTypeEnum;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineTemplateTb;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult;
import cn.odboy.devops.service.pipeline.PipelineInstanceNodeDetailService;
import cn.odboy.devops.service.pipeline.PipelineInstanceService;
import cn.odboy.devops.service.pipeline.PipelineTemplateService;
import cn.odboy.framework.exception.BadRequestException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
@RequiredArgsConstructor
@Service(value = PipelineNodeBizCodeConst.MERGE_MASTER)
public class PipelineNodeMergeMasterJob implements PipelineNodeJobExecutor {
private final PipelineTemplateService pipelineTemplateService;
private final PipelineInstanceService pipelineInstanceService;
private final PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService;
@Override
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs, PipelineInstanceNodeDetailService pipelineInstanceNodeDetailService) throws BadRequestException {
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult execute(Map<String, Object> contextArgs) throws BadRequestException {
String nodeName = (String) contextArgs.getOrDefault(PipelineConst.INSTANCE_NODE_NAME_KEY, "");
PipelineInstanceTb pipelineInstance = (PipelineInstanceTb) contextArgs.get(PipelineConst.INSTANCE_KEY);
PipelineNodeJobExecuteResult executeResult;
try {
PipelineTemplateTb pipelineTemplate = pipelineTemplateService.getPipelineTemplateById(pipelineInstance.getPipelineTemplateId());
PipelineTypeEnum pipelineType = PipelineTypeEnum.getByCode(pipelineInstance.getType());
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s开始", nodeName), PipelineStatusEnum.SUCCESS, "");
switch (pipelineType) {
case BACKEND:
executeResult = handleBackend(pipelineTemplate, pipelineInstance, contextArgs);
break;
default:
executeResult = PipelineNodeJobExecuteResult.success();
break;
}
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s成功", nodeName), PipelineStatusEnum.SUCCESS, "");
return executeResult;
} catch (Exception e) {
pipelineInstanceNodeDetailService.addLog(pipelineInstance.getPipelineInstanceId(), contextArgs, String.format("%s失败", nodeName), PipelineStatusEnum.FAIL, e.getMessage());
throw e;
}
}
@Transactional(rollbackFor = Exception.class)
public PipelineNodeJobExecuteResult handleBackend(PipelineTemplateTb pipelineTemplate, PipelineInstanceTb pipelineInstance, Map<String, Object> contextArgs) {
Long pipelineInstanceId = pipelineInstance.getPipelineInstanceId();
String language = pipelineTemplate.getLanguage();
String env = pipelineInstance.getEnv();
String appName = pipelineInstance.getAppName();
return PipelineNodeJobExecuteResult.success();
}
}
@@ -1,6 +1,17 @@
package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceNodeDetailTb;
import cn.odboy.devops.dal.mysql.pipeline.PipelineInstanceNodeDetailMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.Map;
/**
* <p>
@@ -11,6 +22,38 @@ import org.springframework.stereotype.Service;
* @since 2025-06-26
*/
@Service
@RequiredArgsConstructor
public class PipelineInstanceNodeDetailService {
private final PipelineInstanceNodeDetailMapper pipelineInstanceNodeDetailMapper;
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
public void addLog(Long pipelineInstanceId, Map<String, Object> contextArgs, String stepName, PipelineStatusEnum status, String stepMsg) {
Integer nodeIndex = (Integer) contextArgs.getOrDefault(PipelineConst.INSTANCE_NODE_INDEX_KEY, null);
String nodeCode = (String) contextArgs.getOrDefault(PipelineConst.INSTANCE_NODE_CODE_KEY, null);
PipelineInstanceNodeDetailTb record = getPipelineInstanceNodeDetailByArgs(pipelineInstanceId, nodeCode, stepName);
if (record == null) {
record = new PipelineInstanceNodeDetailTb();
record.setPipelineInstanceId(pipelineInstanceId);
record.setStartTime(new Date());
record.setNodeIndex(nodeIndex);
record.setNodeCode(nodeCode);
record.setStepName(stepName);
record.setStepStatus(status.getCode());
pipelineInstanceNodeDetailMapper.insert(record);
} else {
PipelineInstanceNodeDetailTb updRecord = new PipelineInstanceNodeDetailTb();
updRecord.setId(record.getId());
updRecord.setStepStatus(status.getCode());
pipelineInstanceNodeDetailMapper.updateById(updRecord);
}
}
private PipelineInstanceNodeDetailTb getPipelineInstanceNodeDetailByArgs(Long pipelineInstanceId, String nodeCode, String stepName) {
return pipelineInstanceNodeDetailMapper.selectOne(new LambdaQueryWrapper<PipelineInstanceNodeDetailTb>()
.eq(PipelineInstanceNodeDetailTb::getPipelineInstanceId, pipelineInstanceId)
.eq(PipelineInstanceNodeDetailTb::getNodeCode, nodeCode)
.eq(PipelineInstanceNodeDetailTb::getStepName, stepName)
);
}
}
@@ -1,10 +1,29 @@
package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import cn.odboy.devops.dal.mysql.pipeline.PipelineInstanceMapper;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobRunnable;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeTemplateVo;
import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.util.CsJsonUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Future;
/**
* <p>
@@ -14,17 +33,89 @@ import org.springframework.stereotype.Service;
* @author codegen
* @since 2025-06-26
*/
@Slf4j
@Service
@RequiredArgsConstructor
@RequiredArgsConstructor(onConstructor_ = @Lazy)
public class PipelineInstanceService {
private final PipelineInstanceMapper pipelineInstanceMapper;
public PipelineInstanceTb getPipelineInstance(String pipelineInstanceId) {
public PipelineInstanceTb getPipelineInstance(long pipelineInstanceId) {
return pipelineInstanceMapper.selectOne(new LambdaQueryWrapper<PipelineInstanceTb>()
.eq(PipelineInstanceTb::getPipelineInstanceId, pipelineInstanceId)
);
}
@Transactional(rollbackFor = Exception.class)
public void createPipelineInstance(PipelineInstanceTb pipelineInstanceTb) {
pipelineInstanceMapper.insert(pipelineInstanceTb);
}
/**
* 新事务中执行,就算抛出异常,也不会丢失执行状态
*/
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
public void updateStatusByInstanceId(PipelineStatusEnum status, long pipelineInstanceId) {
pipelineInstanceMapper.updateStatusByInstanceId(status.getCode(), pipelineInstanceId);
}
@Transactional(rollbackFor = Exception.class)
public void startPipeline(ThreadPoolTaskExecutor executor, JobExecutionContext context) {
JobDataMap mergedJobDataMap = context.getMergedJobDataMap();
// 获取流水线实例
long pipelineInstanceId = mergedJobDataMap.getLong(PipelineConst.INSTANCE_ID_KEY);
PipelineInstanceTb pipelineInstance = getPipelineInstance(pipelineInstanceId);
if (pipelineInstance == null) {
log.info("流水线实例不存在, instanceId={}", pipelineInstanceId);
return;
}
String pipelineTemplate = pipelineInstance.getPipelineTemplate();
// 流水线节点模板
List<PipelineNodeTemplateVo> pipelineNodeTemplateVos = JSON.parseArray(pipelineTemplate, PipelineNodeTemplateVo.class);
// 流水线上下文参数
Map<String, Object> contextArgs = CsJsonUtil.toMap(pipelineInstance.getContext(), String.class, Object.class);
// 放置额外的参数
contextArgs.put(PipelineConst.INSTANCE_KEY, pipelineInstance);
// 任务重试标记
Object retryNodeIndexObj = mergedJobDataMap.getOrDefault(PipelineConst.INSTANCE_RETRY_NODE_INDEX_KEY, null);
Integer retryNodeIndexValue = null;
if (retryNodeIndexObj != null) {
retryNodeIndexValue = (Integer) retryNodeIndexObj;
}
// 初始化节点明细
boolean isExecuteSuccess = true;
updateStatusByInstanceId(PipelineStatusEnum.RUNNING, pipelineInstanceId);
for (int i = 0; i < pipelineNodeTemplateVos.size(); i++) {
if (retryNodeIndexValue != null && i < retryNodeIndexValue) {
// 跳过非重试节点
continue;
}
try {
PipelineNodeTemplateVo pipelineNodeTemplateVo = pipelineNodeTemplateVos.get(i);
String code = pipelineNodeTemplateVo.getCode();
contextArgs.put(PipelineConst.INSTANCE_NODE_INDEX_KEY, i);
contextArgs.put(PipelineConst.INSTANCE_NODE_CODE_KEY, code);
contextArgs.put(PipelineConst.INSTANCE_NODE_NAME_KEY, pipelineNodeTemplateVo.getName());
contextArgs.put(PipelineConst.INSTANCE_NODE_TEMPLATE_ARGS_KEY, pipelineNodeTemplateVo.getParameters());
// 执行任务
PipelineNodeJobRunnable pipelineNodeJobRunnable = new PipelineNodeJobRunnable(PipelineConst.EXECUTOR_PREFIX + code, contextArgs);
Future<?> future = executor.submit(pipelineNodeJobRunnable);
PipelineNodeJobExecuteResult executeResult = (PipelineNodeJobExecuteResult) future.get();
updateCurrentNodeByInstanceId(code, executeResult.getStatus(), pipelineInstanceId);
if (!PipelineStatusEnum.SUCCESS.equals(executeResult.getStatus())) {
throw new BadRequestException(executeResult.getMessage());
}
} catch (Exception e) {
log.error("流水线节点任务执行失败", e);
isExecuteSuccess = false;
break;
}
}
// 任务执行结果
updateStatusByInstanceId(isExecuteSuccess ? PipelineStatusEnum.SUCCESS : PipelineStatusEnum.FAIL, pipelineInstanceId);
}
@Transactional(rollbackFor = Exception.class)
public void updateCurrentNodeByInstanceId(String code, PipelineStatusEnum status, long pipelineInstanceId) {
pipelineInstanceMapper.updateCurrentNodeByInstanceId(code, status.getCode(), pipelineInstanceId);
}
}
@@ -1,5 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.odboy.devops.dal.mysql.pipeline.PipelineInstanceMapper">
<update id="updateStatusByInstanceId">
UPDATE pipeline_instance
SET `status` = #{status}
WHERE pipeline_instance_id = #{pipelineInstanceId}
</update>
<update id="updateCurrentNodeByInstanceId">
UPDATE pipeline_instance
SET `current_node` = #{code},
current_node_status=#{status}
WHERE pipeline_instance_id = #{pipelineInstanceId}
</update>
</mapper>
@@ -5,7 +5,7 @@ import cn.hutool.core.util.IdUtil;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineInstanceTb;
import cn.odboy.devops.dal.dataobject.pipeline.PipelineTemplateTb;
import cn.odboy.devops.framework.pipeline.PipelineJobManage;
import cn.odboy.devops.framework.pipeline.core.PipelineJobManage;
import cn.odboy.devops.service.pipeline.PipelineInstanceService;
import cn.odboy.devops.service.pipeline.PipelineTemplateService;
import com.alibaba.fastjson2.JSON;
@@ -44,15 +44,13 @@ public class PipelineReleaseTests {
String envCode = "daily";
Map<String, Object> context = new HashMap<>();
context.put("createBy", createBy);
context.put("appName", appName);
context.put("envCode", envCode);
// 获取模板
PipelineTemplateTb pipelineTemplateTb = pipelineTemplateService.getPipelineTemplateById(1L);
PipelineTemplateTb pipelineTemplateTb = pipelineTemplateService.getPipelineTemplateById(4L);
// 创建流水线实例
PipelineInstanceTb pipelineInstanceTb = new PipelineInstanceTb();
pipelineInstanceTb.setPipelineTemplateId(pipelineTemplateTb.getId());
pipelineInstanceTb.setPipelineInstanceName("流水线测试");
pipelineInstanceTb.setPipelineInstanceId(IdUtil.nanoId());
pipelineInstanceTb.setPipelineInstanceId(IdUtil.getSnowflakeNextId());
pipelineInstanceTb.setCreateTime(nowTime);
pipelineInstanceTb.setCreateBy(createBy);
pipelineInstanceTb.setUpdateTime(nowTime);
@@ -68,5 +66,13 @@ public class PipelineReleaseTests {
pipelineJobManage.startJob(pipelineInstanceTb);
ThreadUtil.safeSleep(1000 * 60 * 60 * 24);
}
public static void main(String[] args) {
System.err.println("nanoId=" + IdUtil.nanoId());
System.err.println("objectId=" + IdUtil.objectId());
System.err.println("snowflakeNextId=" + IdUtil.getSnowflakeNextIdStr());
System.err.println("fastUUID=" + IdUtil.fastUUID());
System.err.println("fastSimpleUUID=" + IdUtil.fastSimpleUUID());
}
}
+159 -69
View File
@@ -11,51 +11,12 @@
Target Server Version : 80025 (8.0.25)
File Encoding : 65001
Date: 27/06/2025 00:47:59
Date: 27/06/2025 18:08:43
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for demo_logic_table
-- ----------------------------
DROP TABLE IF EXISTS `demo_logic_table`;
CREATE TABLE `demo_logic_table` (
`id` bigint NOT NULL COMMENT 'id',
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '创建人',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '修改人',
`update_time` datetime NOT NULL COMMENT '修改时间',
`available` tinyint(1) NOT NULL DEFAULT '1' COMMENT '数据有效性',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of demo_logic_table
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for demo_table
-- ----------------------------
DROP TABLE IF EXISTS `demo_table`;
CREATE TABLE `demo_table` (
`id` bigint NOT NULL COMMENT 'id',
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '创建人',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '修改人',
`update_time` datetime NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of demo_table
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for demo_time_table
-- ----------------------------
@@ -73,6 +34,102 @@ CREATE TABLE `demo_time_table` (
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for demo_user_time_logic_table
-- ----------------------------
DROP TABLE IF EXISTS `demo_user_time_logic_table`;
CREATE TABLE `demo_user_time_logic_table` (
`id` bigint NOT NULL COMMENT 'id',
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '创建人',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '修改人',
`update_time` datetime NOT NULL COMMENT '修改时间',
`available` tinyint(1) NOT NULL DEFAULT '1' COMMENT '数据有效性',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of demo_user_time_logic_table
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for demo_user_time_table
-- ----------------------------
DROP TABLE IF EXISTS `demo_user_time_table`;
CREATE TABLE `demo_user_time_table` (
`id` bigint NOT NULL COMMENT 'id',
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '创建人',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '修改人',
`update_time` datetime NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of demo_user_time_table
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for devops_ci_git_repo
-- ----------------------------
DROP TABLE IF EXISTS `devops_ci_git_repo`;
CREATE TABLE `devops_ci_git_repo` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '更新时间',
`app_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '应用名称',
`ssh_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'ssh地址',
`http_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'http地址',
`namespace` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '命名空间(组、用户)',
`project_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '项目名称',
`project_id` varchar(255) NOT NULL COMMENT '项目id',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_app` (`app_name`) USING BTREE,
KEY `uk_git` (`ssh_url`,`namespace`,`project_name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=825 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='devops git仓库';
-- ----------------------------
-- Records of devops_ci_git_repo
-- ----------------------------
BEGIN;
INSERT INTO `devops_ci_git_repo` (`id`, `create_time`, `update_time`, `app_name`, `ssh_url`, `http_url`, `namespace`, `project_name`, `project_id`) VALUES (1, '2021-03-12 00:00:00', '2021-03-12 00:00:00', 'cutejava', 'git@local.gitlab.cn.cn:root/cutejava.git', 'http://local.gitlab.cn/root/cutejava.git', 'root', 'cutejava', '1');
COMMIT;
-- ----------------------------
-- Table structure for devops_kubernetes_cluster_config
-- ----------------------------
DROP TABLE IF EXISTS `devops_kubernetes_cluster_config`;
CREATE TABLE `devops_kubernetes_cluster_config` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
`cluster_code` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '集群code',
`env` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '环境daily、stage、online',
`enabled` int DEFAULT '1' COMMENT '启用状态 1 启用 0 未启用',
`cluster_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '集群类型(cpaas\\edge\\自建)',
`cluster_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '集群名称',
`cluster_server_api` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '集群服务地址',
`cluster_config` blob COMMENT '集群服务SecretsConfig',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人',
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '修改人',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`available` tinyint(1) NOT NULL DEFAULT '1' COMMENT '数据有效性',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='devops kubernetes集群配置';
-- ----------------------------
-- Records of devops_kubernetes_cluster_config
-- ----------------------------
BEGIN;
INSERT INTO `devops_kubernetes_cluster_config` (`id`, `cluster_code`, `env`, `enabled`, `cluster_type`, `cluster_name`, `cluster_server_api`, `cluster_config`, `remark`, `create_by`, `update_by`, `create_time`, `update_time`, `available`) VALUES (1, 'daily', 'daily', 1, 'alicloud', '阿里云日常环境集群', 'https://192.168.1.105:6443', '', NULL, 'admin', 'admin', '2021-03-12 00:00:00', '2021-03-12 00:00:00', 1);
INSERT INTO `devops_kubernetes_cluster_config` (`id`, `cluster_code`, `env`, `enabled`, `cluster_type`, `cluster_name`, `cluster_server_api`, `cluster_config`, `remark`, `create_by`, `update_by`, `create_time`, `update_time`, `available`) VALUES (2, 'stage', 'stage', 1, 'alicloud', '阿里云预发环境集群', 'https://192.168.1.105:6443', '', NULL, 'admin', 'admin', '2021-03-12 00:00:00', '2021-03-12 00:00:00', 1);
INSERT INTO `devops_kubernetes_cluster_config` (`id`, `cluster_code`, `env`, `enabled`, `cluster_type`, `cluster_name`, `cluster_server_api`, `cluster_config`, `remark`, `create_by`, `update_by`, `create_time`, `update_time`, `available`) VALUES (3, 'online', 'online', 1, 'alicloud', '阿里云生产环境集群', 'https://192.168.1.105:6443', '', NULL, 'admin', 'admin', '2021-03-12 00:00:00', '2021-03-12 00:00:00', 1);
COMMIT;
-- ----------------------------
-- Table structure for pipeline_instance
-- ----------------------------
@@ -80,7 +137,7 @@ DROP TABLE IF EXISTS `pipeline_instance`;
CREATE TABLE `pipeline_instance` (
`pipeline_template_id` bigint NOT NULL COMMENT '流水线模板id',
`pipeline_instance_name` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '流水线实例名称',
`pipeline_instance_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '流水线实例id',
`pipeline_instance_id` bigint NOT NULL COMMENT '流水线实例id',
`create_time` datetime NOT NULL COMMENT '创建时间',
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '创建人',
`update_time` datetime NOT NULL COMMENT '更新时间',
@@ -99,26 +156,6 @@ CREATE TABLE `pipeline_instance` (
-- Records of pipeline_instance
-- ----------------------------
BEGIN;
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', '8omvZEM792bbH8GaFVgLF', '2025-06-27 00:05:12', 'admin', '2025-06-27 00:05:12', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'DWEVcCB0b1A43LjP2SCcV', '2025-06-26 23:47:57', 'admin', '2025-06-26 23:47:57', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'gl4EJWZCikyKuLeW0Gzrq', '2025-06-27 00:13:37', 'admin', '2025-06-27 00:13:37', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'gnZ3oYi_bfVkL0Me6QKwh', '2025-06-26 23:53:07', 'admin', '2025-06-26 23:53:07', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'gqmbUcLG7hgKE40EYkCZz', '2025-06-26 23:55:32', 'admin', '2025-06-26 23:55:32', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'HbIwazuQj6s24Ero08rIw', '2025-06-26 23:57:53', 'admin', '2025-06-26 23:57:53', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'jRq5unyzWhbSSwj6noGrk', '2025-06-26 23:32:04', 'admin', '2025-06-26 23:32:04', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'Kum4R4e_hby0P7DXtV3RV', '2025-06-27 00:03:47', 'admin', '2025-06-27 00:03:47', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'l35eX80-zuYS1h6OfLtIp', '2025-06-26 23:54:28', 'admin', '2025-06-26 23:54:28', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'nN_xqed_XmfENYFk5mrji', '2025-06-27 00:08:25', 'admin', '2025-06-27 00:08:25', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'OZEBc8wLvbGLk6ZtrWx4c', '2025-06-26 23:29:54', 'admin', '2025-06-26 23:29:54', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'piC4lv7Xw7AaAluvqDzUw', '2025-06-26 23:37:44', 'admin', '2025-06-26 23:37:44', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'qBOPGj9lCnWsxdGmvLaiu', '2025-06-27 00:16:59', 'admin', '2025-06-27 00:16:59', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'r9x4rGQskuOXckyKX7exz', '2025-06-27 00:45:08', 'admin', '2025-06-27 00:45:08', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'sGgYbHzvBOBl_bAZ-rigz', '2025-06-26 23:25:54', 'admin', '2025-06-26 23:25:54', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'SMamFqVOtkfbFuBz-rFjd', '2025-06-26 23:28:48', 'admin', '2025-06-26 23:28:48', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'U8lhSSIBvHZYxikX2J9vM', '2025-06-26 23:41:47', 'admin', '2025-06-26 23:41:47', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'XWh1Cfh2Ipe0_KCmicWd2', '2025-06-26 23:28:11', 'admin', '2025-06-26 23:28:11', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'YrrVkKiLVHAFf9WWKkAwm', '2025-06-27 00:00:39', 'admin', '2025-06-27 00:00:39', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_instance` (`pipeline_template_id`, `pipeline_instance_name`, `pipeline_instance_id`, `create_time`, `create_by`, `update_time`, `type`, `app_name`, `env`, `status`, `current_node`, `current_node_status`, `context`, `pipeline_template`) VALUES (1, '流水线测试', 'ZPHF6zTcCfZIwoG23aKu5', '2025-06-26 23:44:32', 'admin', '2025-06-26 23:44:32', 'app_backend', 'test', 'daily', 'wait', '', '', '{\"createBy\":\"admin\",\"envCode\":\"daily\",\"appName\":\"test\"}', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
COMMIT;
-- ----------------------------
@@ -126,14 +163,15 @@ COMMIT;
-- ----------------------------
DROP TABLE IF EXISTS `pipeline_instance_node_detail`;
CREATE TABLE `pipeline_instance_node_detail` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`pipeline_instance_id` bigint NOT NULL COMMENT '流水线实例id',
`start_time` datetime NOT NULL COMMENT '开始时间',
`finish_time` datetime NOT NULL COMMENT '结束时间',
`status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '节点状态',
`node_index` int NOT NULL COMMENT '节点索引',
`node_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '节点编码',
`node_description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '节点描述',
`context` varchar(255) NOT NULL COMMENT '输入参数'
`step_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '步骤说明',
`step_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '步骤状态',
`step_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT '异常明细',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='流水线实例节点明细';
-- ----------------------------
@@ -153,21 +191,73 @@ CREATE TABLE `pipeline_template` (
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '修改人',
`update_time` datetime NOT NULL COMMENT '修改时间',
`available` tinyint(1) NOT NULL DEFAULT '1' COMMENT '数据有效性',
`type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '流水线类型',
`language` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '语言',
`type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '模板类型(应用发布流程等)',
`env` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '环境编码',
`language` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '语言',
`code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '流水线编码',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '流水线名称',
`description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '流水线描述',
`template` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '流水线模板内容',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='流水线模板';
) ENGINE=InnoDB AUTO_INCREMENT=128 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='流水线模板,类型和环境确定可以使用的范围';
-- ----------------------------
-- Records of pipeline_template
-- ----------------------------
BEGIN;
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `language`, `env`, `code`, `name`, `description`, `template`) VALUES (1, 'admin', '2025-06-19 18:50:18', 'admin', '2025-06-19 18:50:26', 1, 'app_backend', 'java', 'daily', 'dailyBackendJavaApp', '日常环境流水线', '日常环境流水线(JAVA)', '[{\n \"code\": \"node_init\",\n \"name\": \"初始化\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_merge_branch\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": []\n },\n {\n \"code\": \"node_build_java\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"backend-pipeline\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"condition\": \"success|fail\",\n \"isBlank\": \"true\"\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (1, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'front', 'daily', 'javascript', 'daily_front_javascript', '前端日常流水线', '前端日常流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-front-test\",\n \"npm\": \"npm\",\n \"nodeVersion\": \"v14.21.3\",\n \"mirrors\": \"https://registry.npmmirror.com\"\n }\n },\n {\n \"code\": \"node_deploy_api\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"部署成功,查看详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (2, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'front', 'stage', 'javascript', 'stage_front_javascript', '前端预发流水线', '前端预发流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-front-test\",\n \"npm\": \"npm\",\n \"nodeVersion\": \"v14.21.3\",\n \"mirrors\": \"https://registry.npmmirror.com\"\n }\n },\n {\n \"code\": \"node_deploy_api\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"部署成功,查看详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (3, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'front', 'online', 'javascript', 'online_front_javascript', '前端生产流水线', '前端生产流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-front-test\",\n \"npm\": \"npm\",\n \"nodeVersion\": \"v14.21.3\",\n \"mirrors\": \"https://registry.npmmirror.com\"\n }\n },\n {\n \"code\": \"node_approve_deploy\",\n \"type\": \"service\",\n \"name\": \"部署审批\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"同意\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n },\n {\n \"type\": \"execute\",\n \"title\": \"拒绝\",\n \"code\": \"refuse\",\n \"parameters\": {\n\n }\n }\n ]\n },\n {\n \"code\": \"node_deploy_api\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"部署成功,查看详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (4, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'daily', 'java', 'daily_backend_java', '日常环境流水线', '日常环境流水线(JAVA)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_java\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-backend\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (5, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'stage', 'java', 'stage_backend_java', '预发环境流水线', '预发环境流水线(JAVA)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_java\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-backend\",\n \"jdkVersion\": \"jdk11\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (6, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'online', 'java', 'online_backend_java', '生产环境流水线', '生产环境流水线(JAVA)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_java\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-backend\"\n }\n },\n {\n \"code\": \"node_image_scan\",\n \"type\": \"service\",\n \"name\": \"镜像扫描\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-image-scan\"\n }\n },\n {\n \"code\": \"node_approve_deploy\",\n \"type\": \"service\",\n \"name\": \"部署审批\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"同意\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n },\n {\n \"type\": \"execute\",\n \"title\": \"拒绝\",\n \"code\": \"refuse\",\n \"parameters\": {\n\n }\n }\n ]\n },\n {\n \"code\": \"node_deploy_java\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n },\n {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (9, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'online', 'python', 'online_backend_python', '生产环境流水线', '生产环境流水线(Python)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n}, {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n}, {\n \"code\": \"node_http_post_plugin-stc_upload\",\n \"type\": \"service\",\n \"name\": \"STC代码上传\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/describe\"\n },\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"STC扫描结束,查看结果\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n}, {\n \"code\": \"node_http_post_plugin-stc_result\",\n \"type\": \"service\",\n \"name\": \"STC结果扫描\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/describe\"\n },\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"STC扫描结束,查看结果\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n}, {\n \"code\": \"node_build_python\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-python\"\n }\n}, {\n \"code\": \"node_deploy_python\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n}, {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {}\n }]\n}, {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n}]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (10, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'stage', 'python', 'stage_backend_python', '预发环境流水线', '预发环境流水线(Python)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_python\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-python\"\n }\n },\n {\n \"code\": \"node_deploy_python\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (11, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'daily', 'python', 'daily_backend_python', '日常环境流水线', '日常环境流水线(Python)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_python\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-python\"\n }\n },\n {\n \"code\": \"node_deploy_python\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (13, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'front', 'daily', 'javascript', 'daily_front_npm', 'alpha发布流水线', 'alpha发布流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_npm\",\n \"type\": \"service\",\n \"name\": \"NPM构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-front-test\",\n \"npm\": \"npm\",\n \"nodeVersion\": \"v14.21.3\",\n \"mirrors\": \"https://registry.npmmirror.com\"\n }\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (14, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'front', 'stage', 'javascript', 'stage_front_npm', 'beta发布流水线', 'beta发布流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_npm\",\n \"type\": \"service\",\n \"name\": \"NPM构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-front-test\",\n \"npm\": \"npm\",\n \"nodeVersion\": \"v14.21.3\",\n \"mirrors\": \"https://registry.npmmirror.com\"\n }\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (15, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'front', 'online', 'javascript', 'online_front_npm', '正式发布流水线', '正式发布流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_npm\",\n \"type\": \"service\",\n \"name\": \"NPM构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-front-test\",\n \"npm\": \"npm\",\n \"nodeVersion\": \"v14.21.3\",\n \"mirrors\": \"https://registry.npmmirror.com\"\n }\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (16, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'daily', 'node', 'daily_backend_node', 'Node日常环境流水线', 'Node日常环境流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_node\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-nodejs-server-test\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (17, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'stage', 'node', 'stage_backend_node', 'Node预发环境流水线', 'Node预发环境流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_node\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-nodejs-server-test\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (18, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'online', 'node', 'online_backend_node', 'Node生产环境流水线', 'Node生产环境流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_http_post_plugin-stc_upload\",\n \"type\": \"service\",\n \"name\": \"STC代码上传\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/describe\"\n },\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"STC扫描结束,查看结果\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n },\n {\n \"code\": \"node_http_post_plugin-stc_result\",\n \"type\": \"service\",\n \"name\": \"STC结果扫描\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/describe\"\n },\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"STC扫描结束,查看结果\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n },\n {\n \"code\": \"node_build_node\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-nodejs-server-test\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n },\n {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (19, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'daily', 'android', 'daily_mobile_android', 'Android流水线测试阶段', 'Android流水线测试阶段', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_android\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-android-test\",\n \"jdkVersion\": \"v11\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_http_get_plugin\",\n \"type\": \"service\",\n \"name\": \"UI自动化\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/appUiAutoTest/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/appUiAutoTest/describe\",\n \"envType\": \"online\"\n }\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (20, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'daily', 'android', 'daily_mobile_android_no_ui', 'Android流水线测试阶段(不包含UI测试)', 'Android流水线测试阶段(不包含UI测试)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_android\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-android-test\",\n \"jdkVersion\": \"v11\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (21, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'online', 'android', 'online_mobile_android', 'Android流水线发版阶段', 'Android流水线发版阶段', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_android\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-android-test\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_mpaas_upload_android\",\n \"type\": \"service\",\n \"name\": \"APK上传mPaas\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_mpaas_start_android\",\n \"type\": \"service\",\n \"name\": \"加固\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_apk_sign_android\",\n \"type\": \"service\",\n \"name\": \"签名\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_http_get_plugin\",\n \"type\": \"service\",\n \"name\": \"专项测试节点\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/specialTest/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/specialTest/describe\",\n \"envType\": \"online\"\n }\n }, {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {}\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (22, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'online', 'android', 'online_mobile_android_no_firm', 'Android流水线发版阶段(不加固)', 'Android流水线发版阶段(不加固)', '[{\n \"code\": \"node_release_android\",\n \"type\": \"service\",\n \"name\": \"合并到Release分支\"\n },\n {\n \"code\": \"node_build_android\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-android-test\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_apk_sign_android\",\n \"type\": \"service\",\n \"name\": \"签名\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_http_get_plugin\",\n \"type\": \"service\",\n \"name\": \"专项测试节点\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/specialTest/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/specialTest/describe\",\n \"envType\": \"online\"\n }\n },\n {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (23, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'daily', 'ios', 'daily_mobile_ios', 'IOS流水线测试阶段', 'IOS流水线测试阶段', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_ios\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-ios-test\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (24, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'online', 'ios', 'online_mobile_ios', 'IOS流水线发版阶段', 'IOS流水线发版阶段', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_ios\",\n \"type\": \"service\",\n \"name\": \"IOS构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-ios-test\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_http_get_plugin\",\n \"type\": \"service\",\n \"name\": \"专项测试节点\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/specialTest/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/specialTest/describe\",\n \"envType\": \"online\"\n }\n },\n {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (25, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'front', 'online', 'javascript', 'online_front_javascript_approve_master', '前端生产流水线(合并Master确认)', '前端生产流水线(合并Master确认)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-front-test\",\n \"npm\": \"npm\",\n \"nodeVersion\": \"v14.21.3\",\n \"mirrors\": \"https://registry.npmmirror.com\"\n }\n },\n {\n \"code\": \"node_approve_deploy\",\n \"type\": \"service\",\n \"name\": \"部署审批\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"同意\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n },\n {\n \"type\": \"execute\",\n \"title\": \"拒绝\",\n \"code\": \"refuse\",\n \"parameters\": {\n\n }\n }\n ]\n },\n {\n \"code\": \"node_deploy_api\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"部署成功,查看详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n },\n {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (28, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'devopsonline', 'java', 'devopsonline_backend_java', '运维生产环境流水线(Java)', '运维生产环境流水线(Java)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_java\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-backend\"\n }\n },\n {\n \"code\": \"node_approve_deploy\",\n \"type\": \"service\",\n \"name\": \"部署审批\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"同意\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n },\n {\n \"type\": \"execute\",\n \"title\": \"拒绝\",\n \"code\": \"refuse\",\n \"parameters\": {\n\n }\n }\n ]\n },\n {\n \"code\": \"node_deploy_java\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n },\n {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (29, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'devopstest', 'java', 'devopstest_backend_java', '运维测试环境流水线(Java)', '运维测试环境流水线(Java)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_java\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-backend\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (30, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'front', 'online', 'javascript', 'online_front_javascript_qa', '前端生产流水线-发布准入', '前端生产流水线-发布准入', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-front-test\",\n \"npm\": \"npm\",\n \"nodeVersion\": \"v14.21.3\",\n \"mirrors\": \"https://registry.npmmirror.com\" }\n },\n {\n \"code\": \"node_http_get_plugin\",\n \"type\": \"service\",\n \"name\": \"发布准入\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/releaseAdmissionExecute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/releaseAdmissionDescribe\",\n \"envType\": \"online\"\n }\n },\n {\n \"code\": \"node_deploy_api\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"部署成功,查看详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (31, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'alitest', 'java', 'alitest_backend_java', '阿里云测试环境流水线', '阿里云测试环境流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_java\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-backend\",\n \"jdkVersion\": \"jdk8\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (32, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'alionline', 'java', 'alionline_backend_java', '阿里云生产环境流水线', '阿里云生产环境流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_java\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-backend\",\n \"jdkVersion\": \"jdk8\"\n }\n },\n {\n \"code\": \"node_image_scan\",\n \"type\": \"service\",\n \"name\": \"镜像扫描\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-image-scan\"\n }\n },\n {\n \"code\": \"node_approve_deploy\",\n \"type\": \"service\",\n \"name\": \"部署审批\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"同意\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n },\n {\n \"type\": \"execute\",\n \"title\": \"拒绝\",\n \"code\": \"refuse\",\n \"parameters\": {\n\n }\n }\n ]\n },\n {\n \"code\": \"node_deploy_java\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n },\n {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (33, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'daily', 'android', 'daily_mobile_android', 'Android流水线ECS部署测试阶段', 'Android流水线ECS部署测试阶段', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_android\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-android-test\",\n \"jdkVersion\": \"v11\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_http_get_plugin\",\n \"type\": \"service\",\n \"name\": \"UI自动化\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/appAutoUiTest/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/appAutoUiTest/describe\",\n \"envType\": \"online\"\n }\n },\n {\n \"code\": \"node_approve_test_android\",\n \"type\": \"service\",\n \"name\": \"测试确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"测试通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (34, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'online', 'android', 'online_mobile_android', 'Android流水线ECS部署发版阶段', 'Android流水线ECS部署发版阶段', '[{\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_release_android\",\n \"type\": \"service\",\n \"name\": \"合并到Release分支\"\n },\n {\n \"code\": \"node_build_android\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-android-test\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_mpaas_upload_android\",\n \"type\": \"service\",\n \"name\": \"APK上传mPaas\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_mpaas_start_android\",\n \"type\": \"service\",\n \"name\": \"加固\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_apk_sign_android\",\n \"type\": \"service\",\n \"name\": \"签名\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_http_get_plugin\",\n \"type\": \"service\",\n \"name\": \"专项测试节点\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/specialTest/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/specialTest/describe\",\n \"envType\": \"online\"\n }\n },\n {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (38, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'online', 'android', 'online_mobile_android_no_test', 'Android流水线去除测试部署生产阶段', 'Android流水线去除测试部署发版阶段', '[{\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_release_android\",\n \"type\": \"service\",\n \"name\": \"合并到Release分支\"\n },\n {\n \"code\": \"node_build_android\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-android-test\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"name\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_mpaas_upload_android\",\n \"type\": \"service\",\n \"name\": \"APK上传mPaas\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_mpaas_start_android\",\n \"type\": \"service\",\n \"name\": \"加固\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_apk_sign_android\",\n \"type\": \"service\",\n \"name\": \"签名\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (39, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'daily', 'none', 'daily', '空白流水线', '空白流水线', '空白流水线');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (40, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'stage', 'none', 'stage', '空白流水线', '空白流水线', '空白流水线');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (41, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'online', 'none', 'online', '空白流水线', '空白流水线', '空白流水线');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (42, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'alistage', 'java', 'alistage_backend_java', '阿里云预发环境流水线', '阿里云预发环境流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_java\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-backend\",\n \"jdkVersion\": \"jdk8\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (48, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'alitest', 'cpp', 'alitest_backend_cpp', 'C++流水线(自定义构建)', 'C++流水线(自定义构建)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_cplus_out\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/visualplatform/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/visualplatform/describe\",\n \"envType\": \"daily\"\n }\n },\n {\n \"code\": \"node_approve_cplus_out\",\n \"type\": \"service\",\n \"name\": \"审批\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/visualplatform/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/visualplatform/describe\",\n \"envType\": \"daily\"\n }\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (49, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'alitest', 'python', 'alitest_backend_python', '阿里云测试环境Python流水线', '阿里云测试环境Python流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_python\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"python-pipeline\"\n }\n },\n {\n \"code\": \"node_deploy_python\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (50, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'alistage', 'python', 'alistage_backend_python', '阿里云预发环境Python流水线', '阿里云预发环境Python流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_python\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"python-pipeline\"\n }\n },\n {\n \"code\": \"node_deploy_python\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (51, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'alionline', 'python', 'alionline_backend_python', '阿里云生产环境Python流水线', '阿里云生产环境Python流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n}, {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n}, {\n \"code\": \"node_http_post_plugin-stc_upload\",\n \"type\": \"service\",\n \"name\": \"STC代码上传\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/describe\"\n },\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"STC扫描结束,查看结果\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n}, {\n \"code\": \"node_http_post_plugin-stc_result\",\n \"type\": \"service\",\n \"name\": \"STC结果扫描\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/describe\"\n },\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"STC扫描结束,查看结果\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n}, {\n \"code\": \"node_build_python\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"python-pipeline\"\n }\n}, {\n \"code\": \"node_deploy_python\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n}, {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {}\n }]\n}, {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n}]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (52, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'alitest', 'node', 'alitest_backend_node', '阿里云测试环境Node流水线', '阿里云测试环境Node流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_node\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-nodejs-server-test\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (53, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'alistage', 'node', 'alistage_backend_node', '阿里云预发环境Node流水线', '阿里云预发环境Node流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_node\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-nodejs-server-test\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (54, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'alionline', 'node', 'alionline_backend_node', '阿里云生产环境Node流水线', '阿里云生产环境Node流水线', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_http_post_plugin-stc_upload\",\n \"type\": \"service\",\n \"name\": \"STC代码上传\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/describe\"\n },\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"STC扫描结束,查看结果\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n },\n {\n \"code\": \"node_http_post_plugin-stc_result\",\n \"type\": \"service\",\n \"name\": \"STC结果扫描\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/describe\"\n },\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"STC扫描结束,查看结果\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n },\n {\n \"code\": \"node_build_node\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-nodejs-server-test\"\n }\n },\n {\n \"code\": \"node_deploy_java\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"name\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n },\n {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (55, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'alionline', 'java', 'alionline_backend_java_test', '阿里云生产环境流水线(Beta)', '生产环境流水线(test)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (56, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'alionline', 'java', 'alionline_backend_java', '阿里云生产环境流水线', '阿里云生产环境流水线—发布准入&TB卡点&镜像扫描', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_tb_check_devops\",\n \"type\": \"service\",\n \"name\": \"TB任务检测\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_java\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-backend\",\n \"jdkVersion\": \"jdk8\"\n }\n },\n {\n \"code\": \"node_image_scan\",\n \"type\": \"service\",\n \"name\": \"镜像扫描\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-image-scan\"\n }\n },\n {\n \"code\": \"node_backend_http_get_plugin\",\n \"type\": \"service\",\n \"name\": \"发布准入\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/qa/releaseAdmissionExecute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/qa/releaseAdmissionDescribe\",\n \"envType\": \"online\"\n }\n },\n {\n \"code\": \"node_approve_deploy\",\n \"type\": \"service\",\n \"name\": \"部署审批\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"同意\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n },\n {\n \"type\": \"execute\",\n \"title\": \"拒绝\",\n \"code\": \"refuse\",\n \"parameters\": {\n\n }\n }\n ]\n },\n {\n \"code\": \"node_deploy_java\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n },\n {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (60, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'daily', 'android', 'daily_mobile_android_flutter', 'Android流水线测试阶段(Flutter版本检测)', 'Android流水线测试阶段(Flutter版本检测)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n }, {\n \"code\": \"flutter_branch_node_check\",\n \"type\": \"service\",\n \"name\": \"检查Flutter版本\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"showFlutterMsg\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_build_android\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-android-test\",\n \"jdkVersion\": \"v11\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_http_get_plugin\",\n \"type\": \"service\",\n \"name\": \"UI自动化\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/appAutoUiTest/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/appAutoUiTest/describe\",\n \"envType\": \"online\"\n }\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (61, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'daily', 'android', 'daily_mobile_android_no_ui_flutter', 'Android流水线测试阶段(不包含UI测试&Flutter)', 'Android流水线测试阶段(不包含UI测试&Flutter)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n }, {\n \"code\": \"flutter_branch_node_check\",\n \"type\": \"service\",\n \"name\": \"检查Flutter版本\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"showFlutterMsg\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_build_android\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-android-test\",\n \"jdkVersion\": \"v11\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (62, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'online', 'android', 'online_mobile_android_flutter', 'Android流水线发版阶段(Flutter版本)', 'Android流水线发版阶段(Flutter版本)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n }, {\n \"code\": \"flutter_branch_node_check\",\n \"type\": \"service\",\n \"name\": \"检查Flutter版本\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"showFlutterMsg\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_build_android\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-android-test\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_mpaas_upload_android\",\n \"type\": \"service\",\n \"name\": \"APK上传mPaas\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_mpaas_start_android\",\n \"type\": \"service\",\n \"name\": \"加固\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_apk_sign_android\",\n \"type\": \"service\",\n \"name\": \"签名\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_http_get_plugin\",\n \"type\": \"service\",\n \"name\": \"专项测试节点\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/specialTest/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/specialTest/describe\",\n \"envType\": \"online\"\n }\n }, {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {}\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (63, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'online', 'android', 'online_mobile_android_no_firm_flutter', 'Android流水线发版阶段(不加固&Flutter)', 'Android流水线发版阶段(不加固&Flutter)', '[{\n \"code\": \"node_release_android\",\n \"type\": \"service\",\n \"name\": \"合并到Release分支\"\n }, {\n \"code\": \"flutter_branch_node_check\",\n \"type\": \"service\",\n \"name\": \"检查Flutter版本\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"showFlutterMsg\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_build_android\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-android-test\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_apk_sign_android\",\n \"type\": \"service\",\n \"name\": \"签名\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_http_get_plugin\",\n \"type\": \"service\",\n \"name\": \"专项测试节点\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/specialTest/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/specialTest/describe\",\n \"envType\": \"online\"\n }\n },\n {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (64, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'daily', 'android', 'daily_mobile_android_ecs_flutter', 'Android流水线ECS部署测试阶段(Flutter版本)', 'Android流水线ECS部署测试阶段(Flutter版本)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n }, {\n \"code\": \"flutter_branch_node_check\",\n \"type\": \"service\",\n \"name\": \"检查Flutter版本\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"showFlutterMsg\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_build_android\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-android-test\",\n \"jdkVersion\": \"v11\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_http_get_plugin\",\n \"type\": \"service\",\n \"name\": \"UI自动化\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/appAutoUiTest/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/appAutoUiTest/describe\",\n \"envType\": \"online\"\n }\n },\n {\n \"code\": \"node_approve_test_android\",\n \"type\": \"service\",\n \"name\": \"测试确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"测试通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (65, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'online', 'android', 'online_mobile_android_ecs_flutter', 'Android流水线ECS部署发版阶段(Flutter版本)', 'Android流水线ECS部署发版阶段(Flutter版本)', '[{\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_release_android\",\n \"type\": \"service\",\n \"name\": \"合并到Release分支\"\n }, {\n \"code\": \"flutter_branch_node_check\",\n \"type\": \"service\",\n \"name\": \"检查Flutter版本\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"showFlutterMsg\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_build_android\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-android-test\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_mpaas_upload_android\",\n \"type\": \"service\",\n \"name\": \"APK上传mPaas\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_mpaas_start_android\",\n \"type\": \"service\",\n \"name\": \"加固\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_apk_sign_android\",\n \"type\": \"service\",\n \"name\": \"签名\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_http_get_plugin\",\n \"type\": \"service\",\n \"name\": \"专项测试节点\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/specialTest/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/specialTest/describe\",\n \"envType\": \"online\"\n }\n },\n {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (66, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'online', 'android', 'online_mobile_android_no_test_flutter', 'Android流水线去除测试部署生产阶段(Flutter版本)', 'Android流水线去除测试部署生产阶段(Flutter版本)', '[{\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_release_android\",\n \"type\": \"service\",\n \"name\": \"合并到Release分支\"\n }, {\n \"code\": \"flutter_branch_node_check\",\n \"type\": \"service\",\n \"name\": \"检查Flutter版本\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"showFlutterMsg\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_build_android\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"pipeline-android-test\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_mpaas_upload_android\",\n \"type\": \"service\",\n \"name\": \"APK上传mPaas\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_mpaas_start_android\",\n \"type\": \"service\",\n \"name\": \"加固\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_apk_sign_android\",\n \"type\": \"service\",\n \"name\": \"签名\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (67, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'daily', 'ios', 'daily_mobile_ios_flutter', 'IOS流水线测试阶段(Flutter版本)', 'IOS流水线测试阶段(Flutter版本)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n }, {\n \"code\": \"flutter_branch_node_check\",\n \"type\": \"service\",\n \"name\": \"检查Flutter版本\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"showFlutterMsg\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_build_ios\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"ios-pipeline-test\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (68, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'mobile', 'online', 'ios', 'online_mobile_ios_flutter', 'IOS流水线发版阶段(Flutter版本)', 'IOS流水线发版阶段(Flutter版本)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n }, {\n \"code\": \"flutter_branch_node_check\",\n \"type\": \"service\",\n \"name\": \"检查Flutter版本\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"showFlutterMsg\",\n \"parameters\": {},\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_build_ios\",\n \"type\": \"service\",\n \"name\": \"IOS构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"ios-pipeline-test\"\n },\n \"buttons\": [{\n \"type\": \"qrCodeDialog\",\n \"title\": \"查看APK二维码\",\n \"code\": \"openQrCode\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_http_get_plugin\",\n \"type\": \"service\",\n \"name\": \"专项测试节点\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"parameters\": {\n \"execute\": \"https://cutejava-api.odboy.cn/api/specialTest/execute\",\n \"describe\": \"https://cutejava-api.odboy.cn/api/specialTest/describe\",\n \"envType\": \"online\"\n }\n },\n {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
INSERT INTO `pipeline_template` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `available`, `type`, `env`, `language`, `code`, `name`, `description`, `template`) VALUES (69, 'admin', '2021-03-12 00:00:00', 'admin', '2021-03-12 00:00:00', 1, 'backend', 'alionline', 'python', 'alionline_backend_python_nostc', '阿里云生产环境Python流水线(No STC)', '阿里云生产环境Python流水线(No STC)', '[{\n \"code\": \"node_init\",\n \"type\": \"service\",\n \"name\": \"初始化\"\n },\n {\n \"code\": \"node_merge_branch\",\n \"type\": \"service\",\n \"name\": \"合并代码\",\n \"click\": \"true\",\n \"retry\": \"true\"\n },\n {\n \"code\": \"node_build_python\",\n \"type\": \"service\",\n \"name\": \"构建\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"detailType\": \"gitlab\",\n \"parameters\": {\n \"pipeline\": \"python-pipeline\"\n }\n },\n {\n \"code\": \"node_approve_deploy\",\n \"type\": \"service\",\n \"name\": \"部署审批\",\n \"click\": \"false\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"同意\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n },\n {\n \"type\": \"execute\",\n \"title\": \"拒绝\",\n \"code\": \"refuse\",\n \"parameters\": {\n\n }\n }\n ]\n },\n {\n \"code\": \"node_deploy_python\",\n \"type\": \"service\",\n \"name\": \"部署\",\n \"click\": \"true\",\n \"retry\": \"true\",\n \"buttons\": [{\n \"type\": \"link\",\n \"title\": \"查看部署详情\",\n \"code\": \"success\",\n \"parameters\": {\n \"isBlank\": \"true\"\n }\n }]\n },\n {\n \"code\": \"node_merge_confirm\",\n \"type\": \"service\",\n \"name\": \"合并确认\",\n \"click\": \"false\",\n \"retry\": \"false\",\n \"buttons\": [{\n \"type\": \"execute\",\n \"title\": \"通过\",\n \"code\": \"agree\",\n \"parameters\": {\n\n }\n }]\n },\n {\n \"code\": \"node_merge_master\",\n \"type\": \"service\",\n \"name\": \"合并回Master\",\n \"click\": \"false\",\n \"retry\": \"true\"\n }\n]');
COMMIT;
-- ----------------------------