From 19f9ad32a9bc9fb4bd248b04a7a39172ca744e9b Mon Sep 17 00:00:00 2001 From: even <827656971@qq.com> Date: Tue, 13 May 2025 19:50:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4=EF=BC=8C?= =?UTF-8?q?=EF=BC=88=E4=B8=8D=E5=8F=AF=E8=BF=90=E8=A1=8C=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constant/PipelineFinalConstant.java | 220 ++++++++++++++++++ .../process/dal/pipeline/PipStageDao.java | 7 + .../process/dal/pipeline/PipTaskDao.java | 7 + .../process/service/stage/StageService.java | 9 +- .../service/stage/impl/StageServiceImpl.java | 170 ++++++++------ .../process/service/task/TaskService.java | 5 + .../service/task/impl/TaskServiceImpl.java | 148 ++++++++++++ .../server/controller/StageController.java | 3 +- 8 files changed, 491 insertions(+), 78 deletions(-) create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/constant/PipelineFinalConstant.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipStageDao.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipTaskDao.java diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/constant/PipelineFinalConstant.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/constant/PipelineFinalConstant.java new file mode 100644 index 0000000..75c808b --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/constant/PipelineFinalConstant.java @@ -0,0 +1,220 @@ +package cd.casic.ci.process.constant; + +public class PipelineFinalConstant { + + /** + * 项目名称 + */ + public static final String appName = "arbess"; + + /** + * DEFAULT + */ + public static final String DEFAULT = "default"; + + /** + * 流水线文件系统 + */ + public static final String MATFLOW_WORKSPACE = "/source"; + + public static final String MATFLOW_LOGS = "/artifact"; + + + /** + * 流水线运行状态 + */ + //流水线运行状态 + public static final String RUN_SUCCESS = "success"; + + public static final String RUN_ERROR = "error"; + + public static final String RUN_WAIT = "wait"; + + public static final String RUN_HALT = "halt"; + + public static final String RUN_RUN = "run"; + + public static final String RUN_SUSPEND = "suspend"; + + + /** + * 系统编码 + */ + //字节编码 + public static final String UTF_8 = "UTF-8"; + + public static final String GBK = "GBK"; + + + /** + * 消息 + */ + //消息发送类型 + public static final String MES_PIPELINE_RUN = "PIPELINE_RUN"; + + //消息发送方式 + public static final String MES_SEND_SITE = "site"; + public static final String MES_SEND_EMAIL = "email"; + public static final String MES_SEND_DINGDING = "dingding"; + public static final String MES_SEND_WECHAT = "qywechat"; + public static final String MES_SEND_SMS = "sms"; + + //消息通知方案 + public static final String MES_UPDATE = "MF_MES_TYPE_UPDATE"; + public static final String MES_DELETE = "MF_MES_TYPE_DELETE"; + public static final String MES_CREATE = "MF_MES_TYPE_CREATE"; + public static final String MES_RUN = "MF_MES_TYPE_RUN"; + + + // 日志类型 + public static final String LOG_TYPE_CREATE = "MF_LOG_TYPE_CREATE"; + + public static final String LOG_TYPE_DELETE = "MF_LOG_TYPE_DELETE"; + + public static final String LOG_TYPE_UPDATE = "MF_LOG_TYPE_UPDATE"; + + public static final String LOG_TYPE_RUN = "MF_LOG_TYPE_RUN"; + + + public static final String CREATE_LINK = "/pipeline/${pipelineId}/config"; + + public static final String DELETE_LINK = "/pipeline/${pipelineId}/delete"; + + public static final String UPDATE_LINK = "/pipeline/${pipelineId}/set/info"; + + public static final String RUN_LINK = "/pipeline/${pipelineId}/history/${instanceId}"; + + + /** + * 构建产物信息 + */ + // 默认制品地址 + public static final String PROJECT_DEFAULT_ADDRESS = "${PROJECT_DEFAULT_ADDRESS}"; + + public static final String DEFAULT_ARTIFACT_ADDRESS = "DEFAULT_ARTIFACT_ADDRESS"; + + // 默认制品 + public static final String DEFAULT_ARTIFACT_NAME = "DEFAULT_ARTIFACT_NAME"; + + // Docker制品 + public static final String DEFAULT_ARTIFACT_DOCKER = "DEFAULT_ARTIFACT_DOCKER"; + + // Docker名称 + public static final String DEFAULT_ARTIFACT_DOCKER_NAME = "DEFAULT_ARTIFACT_DOCKER_NAME"; + + + // 默认源码位置 + public static final String DEFAULT_CODE_ADDRESS = "${DEFAULT_CODE_ADDRESS}"; + + public static final String DEFAULT_TYPE = "string"; + + /** + * 默认命令 + */ + public static final String TEST_DEFAULT_ORDER = "mvn test"; + public static final String MAVEN_DEFAULT_ORDER = "mvn clean package"; + public static final String NODE_DEFAULT_ORDER = "npm install"; + public static final String DOCKER_DEFAULT_ORDER = "docker image build -t default ."; + + /** + * 文件信息 + */ + public static final String FILE_TEMP_PREFIX = "temp"; + public static final String FILE_TYPE_TXT = ".txt"; + public static final String FILE_TYPE_SH = ".sh"; + public static final String FILE_TYPE_BAT = ".bat"; + + /** + * 系统任务类型 + */ + + // 源码应用类型 + public static final String TASK_TYPE_CODE = "code"; + public static final String TASK_CODE_GIT = "git"; + public static final String TASK_CODE_GITLAB = "gitlab"; + public static final String TASK_CODE_GITHUB = "github"; + public static final String TASK_CODE_GITEE = "gitee"; + public static final String TASK_CODE_SVN = "svn"; + public static final String TASK_CODE_XCODE = "gitpuk"; + public static final String TASK_CODE_DEFAULT_BRANCH = "master"; + + + // 构建应用类型 + public static final String TASK_TYPE_BUILD = "build"; + public static final String TASK_BUILD_MAVEN = "maven"; + public static final String TASK_BUILD_NODEJS = "nodejs"; + + public static final String TASK_BUILD_DOCKER = "build_docker"; + + + // 测试应用类型 + public static final String TASK_TYPE_TEST = "test"; + public static final String TASK_TEST_MAVENTEST = "maventest"; + public static final String TASK_TEST_TESTON = "testhubo"; + + + // 部署应用类型 + public static final String TASK_TYPE_DEPLOY = "deploy"; + public static final String TASK_DEPLOY_LINUX = "liunx"; + public static final String TASK_DEPLOY_DOCKER = "docker"; + public static final String TASK_DEPLOY_K8S = "k8s"; + + + // 推送制品应用类型 + public static final String TASK_TYPE_ARTIFACT = "artifact"; + public static final String TASK_ARTIFACT_MAVEN = "artifact_maven"; + public static final String TASK_ARTIFACT_NODEJS = "artifact_nodejs"; + public static final String TASK_ARTIFACT_DOCKER = "artifact_docker"; + + + // 制品拉取应用类型 + public static final String TASK_TYPE_PULL = "pull"; + public static final String TASK_PULL_MAVEN = "pull_maven"; + public static final String TASK_PULL_NODEJS = "pull_nodejs"; + public static final String TASK_PULL_DOCKER = "pull_docker"; + + // 制品推送应用方式 + public static final String TASK_ARTIFACT_XPACK = "hadess"; + public static final String TASK_ARTIFACT_SSH = "ssh"; + public static final String TASK_ARTIFACT_NEXUS = "nexus"; + + // 代码扫描应用类型 + public static final String TASK_TYPE_CODESCAN = "codescan"; + public static final String TASK_CODESCAN_SONAR = "sonar"; + public static final String TASK_CODESCAN_SPOTBUGS = "spotbugs"; + + // 消息应用类型 + public static final String TASK_TYPE_MESSAGE = "message"; + public static final String TASK_MESSAGE_MSG = "message"; + + // 脚本应用类型 + public static final String TASK_TYPE_SCRIPT = "script"; + public static final String TASK_SCRIPT_SHELL = "shell"; + public static final String TASK_SCRIPT_BAT = "bat"; + + + //触发器 + public static final String TRIGGER_SCHEDULED = "scheduled"; + + + public static final String SIZE_TYPE_MB = "MB"; + + public static final int DEFAULT_SIZE = 2; + + + public static final String SIZE_TYPE_GB = "GB"; + + + public static final Integer DEFAULT_CLEAN_CACHE_DAY = 7; + + + + + + + + + + + +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipStageDao.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipStageDao.java new file mode 100644 index 0000000..1527674 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipStageDao.java @@ -0,0 +1,7 @@ +package cd.casic.ci.process.process.dal.pipeline; + +import cd.casic.ci.process.process.dataObject.stage.PipStage; +import cd.casic.framework.mybatis.core.mapper.BaseMapperX; + +public interface PipStageDao extends BaseMapperX { +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipTaskDao.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipTaskDao.java new file mode 100644 index 0000000..cdfc1e4 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipTaskDao.java @@ -0,0 +1,7 @@ +package cd.casic.ci.process.process.dal.pipeline; + +import cd.casic.ci.process.process.dataObject.task.PipTask; +import cd.casic.framework.mybatis.core.mapper.BaseMapperX; + +public interface PipTaskDao extends BaseMapperX { +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/StageService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/StageService.java index d525911..eacd23f 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/StageService.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/StageService.java @@ -2,6 +2,7 @@ package cd.casic.ci.process.process.service.stage; import cd.casic.ci.common.pipeline.req.stage.StageReq; import cd.casic.ci.common.pipeline.resp.stage.StageResp; +import cd.casic.ci.process.process.dataObject.stage.PipStage; import java.util.List; @@ -65,14 +66,14 @@ public interface StageService { * @param pipelineId 流水线id * @return 主分支 */ - List findAllMainStage(String pipelineId); + List findAllMainStage(String pipelineId); /** * 根据根节点查询从节点 * @param stagesId 根节点id * @return 从节点列表 */ - List findOtherStage(String stagesId); + List findOtherStage(String stagesId); /** * 更新阶段任务 @@ -93,13 +94,13 @@ public interface StageService { * @param stage 阶段信息 * @return 阶段id */ - String createStages(StageReq stage); + String createStages(PipStage stage); /** * 更新阶段 * @param stage 阶段信息 */ - void updateStages(StageReq stage); + void updateStages(PipStage stage); /** * 删除阶段 diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java index 754a747..9496b68 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java @@ -5,12 +5,15 @@ import cd.casic.ci.common.pipeline.container.Stage; import cd.casic.ci.common.pipeline.req.stage.StageReq; import cd.casic.ci.common.pipeline.resp.stage.StageResp; import cd.casic.ci.common.pipeline.utils.PipelineDateUtil; +import cd.casic.ci.process.process.dal.pipeline.PipStageDao; import cd.casic.ci.process.process.dataObject.stage.PipStage; import cd.casic.ci.process.process.dataObject.task.PipTask; import cd.casic.ci.process.process.service.stage.StageService; import cd.casic.ci.process.process.service.task.TaskService; import cd.casic.framework.commons.exception.ServiceException; +import cd.casic.framework.commons.util.object.BeanUtils; import jakarta.annotation.Resource; +import org.apache.commons.lang3.StringUtils; import org.springframework.core.task.VirtualThreadTaskExecutor; import org.springframework.stereotype.Service; @@ -20,9 +23,13 @@ import java.util.List; public class StageServiceImpl implements StageService { @Resource private TaskService taskService; + @Resource + private PipStageDao stageDao; @Override - public String createStagesOrTask(StageReq stage) { + public String createStagesOrTask(StageReq stageReq) { + PipStage stage = new PipStage(); + BeanUtils.copyProperties(stageReq,stage); String stagesId = stage.getStageId(); String pipelineId = stage.getPipelineId(); @@ -36,73 +43,92 @@ public class StageServiceImpl implements StageService { tasks.setTaskSort(1); // TODO 查询是否为已知worker taskService.taskTypeExist(taskType); - return null; -// //是否为源码 -// if (taskType.equals(PipelineFinal.TASK_TYPE_CODE)){ -// //判断是否存在代码源(目标)节点 -// findTargetTasks(pipelineId); -// -// //创建根节点 -// int initStage = initStage(pipelineId,1); -// stage.setCode(true); -// stage.setStageSort(1); -// stage.setPipelineId(pipelineId); -// stage.setStageName("阶段-"+initStage); -// String id = createStages(stage); -// -// //从节点 -// Stage stages = new Stage(); -// stages.setStageSort(1); -// stages.setParentId(id); -// stages.setStageName("源码"); -// stagesId = createStages(stages); -// tasks.setStageId(stagesId); -// -// return tasksService.createTasksOrTask(tasks); -// } -// -// //新任务 -// if (!PipelineUtil.isNoNull(stagesId) && stageSort != 0){ -// //创建主节点 -// int initStage = initStage(pipelineId, stageSort); -// stage.setStageSort(initStage); -// stage.setPipelineId(pipelineId); -// stage.setStageName("阶段-" + initStage); -// String id = createStages(stage); -// -// //创建从节点 -// Stage stages = new Stage(); -// stages.setParentId(id); -// stages.setStageSort(1); -// stages.setStageName("并行阶段-"+initStage+"-" + 1); -// stagesId = createStages(stages); -// tasks.setStageId(stagesId); -// return tasksService.createTasksOrTask(tasks); -// } -// -// //并行任务 -// if (PipelineUtil.isNoNull(stagesId) && stageSort == 0){ -// List otherStage = findOtherStage(stagesId); -// Stage oneStages = findOneStages(stagesId); -// Stage stages = new Stage(); -// stages.setParentId(stagesId); -// stages.setStageSort(otherStage.size() + 1); -// stages.setStageName("并行阶段-"+oneStages.getStageSort()+"-"+(otherStage.size()+1)); -// stagesId = createStages(stages); -// tasks.setStageId(stagesId); -// return tasksService.createTasksOrTask(tasks); -// } -// -// //串行任务 -// int sort = stage.getTaskSort(); -// if (sort != 0){ -// tasks.setTaskSort(sort); -// tasks.setStageId(stagesId); -// return tasksService.createTasksOrTask(tasks); -// } -// throw new ApplicationException(50001,"未知的操作类型"); - } + //是否为源码 + if (taskType.equals(PipelineFinal.TASK_TYPE_CODE)){ + //判断是否存在代码源(目标)节点 + findTargetTasks(pipelineId); + //创建根节点 + int initStage = initStage(pipelineId,1); + stage.setCode(true); + stage.setStageSort(1); + stage.setPipelineId(pipelineId); + stage.setStageName("阶段-"+initStage); + String id = createStages(stage); + + //从节点 + PipStage stages = new PipStage(); + stages.setStageSort(1); + stages.setParentId(id); + stages.setStageName("源码"); + stagesId = createStages(stages); + tasks.setStageId(stagesId); + + return taskService.createTasksOrTask(tasks); + } + + //新任务 + if (!StringUtils.isNotEmpty(stagesId) && stageSort != 0){ + //创建主节点 + int initStage = initStage(pipelineId, stageSort); + stage.setStageSort(initStage); + stage.setPipelineId(pipelineId); + stage.setStageName("阶段-" + initStage); + String id = createStages(stage); + + //创建从节点 + PipStage stages = new PipStage(); + stages.setParentId(id); + stages.setStageSort(1); + stages.setStageName("并行阶段-"+initStage+"-" + 1); + stagesId = createStages(stages); + tasks.setStageId(stagesId); + return taskService.createTasksOrTask(tasks); + } + + //并行任务 + if (StringUtils.isNotEmpty(stagesId)&& stageSort == 0){ + List otherStage = findOtherStage(stagesId); + PipStage oneStages = findOneStages(stagesId); + PipStage stages = new PipStage(); + stages.setParentId(stagesId); + stages.setStageSort(otherStage.size() + 1); + stages.setStageName("并行阶段-"+oneStages.getStageSort()+"-"+(otherStage.size()+1)); + stagesId = createStages(stages); + tasks.setStageId(stagesId); + return taskService.createTasksOrTask(tasks); + } + + //串行任务 + int sort = stage.getTaskSort(); + if (sort != 0){ + tasks.setTaskSort(sort); + tasks.setStageId(stagesId); + return tasksService.createTasksOrTask(tasks); + } + throw new ApplicationException(50001,"未知的操作类型"); + } + /** + * 更新主节点阶段顺序 + * @param pipelineId 流水线id + * @param taskSort 顺序 + * @return 顺序 + */ + private Integer initStage(String pipelineId,int taskSort){ + List allMainStage = findAllMainStage(pipelineId); + if (allMainStage.isEmpty()){ + return 1; + } + for (PipStage stages : allMainStage) { + int stage = stages.getStageSort(); + if (stage < taskSort){ + continue; + } + stages.setStageSort(stage+1); + updateStages(stages); + } + return taskSort; + } @Override public void createStageTemplate(String pipelineId, String[] template) { @@ -139,12 +165,12 @@ public class StageServiceImpl implements StageService { } @Override - public List findAllMainStage(String pipelineId) { + public List findAllMainStage(String pipelineId) { return null; } @Override - public List findOtherStage(String stagesId) { + public List findOtherStage(String stagesId) { return null; } @@ -159,13 +185,13 @@ public class StageServiceImpl implements StageService { } @Override - public String createStages(StageReq stage) { + public String createStages(PipStage stage) { return null; } @Override - public void updateStages(StageReq stage) { - + public void updateStages(PipStage stage) { + stageDao.updateById(stage); } @Override diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/task/TaskService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/task/TaskService.java index 338d575..355fba8 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/task/TaskService.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/task/TaskService.java @@ -1,8 +1,13 @@ package cd.casic.ci.process.process.service.task; +import cd.casic.ci.process.process.dataObject.task.PipTask; + +import java.util.Objects; + public interface TaskService { /** * 查询taskType是否存在(原项目的各种worker) * */ public void taskTypeExist(String taskType); + public String createTasksOrTask(PipTask tasks); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/task/impl/TaskServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/task/impl/TaskServiceImpl.java index 0278e0a..5e1e7be 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/task/impl/TaskServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/task/impl/TaskServiceImpl.java @@ -1,19 +1,34 @@ package cd.casic.ci.process.process.service.task.impl; import cd.casic.ci.common.pipeline.annotation.Plugin; +import cd.casic.ci.common.pipeline.constant.PipelineDateUtilConstant; +import cd.casic.ci.common.pipeline.utils.PipelineDateUtil; +import cd.casic.ci.process.process.dal.pipeline.PipTaskDao; +import cd.casic.ci.process.process.dataObject.task.PipTask; import cd.casic.ci.process.process.service.task.TaskService; +import cd.casic.framework.commons.exception.ServiceException; import cd.casic.framework.commons.util.util.WebFrameworkUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; import org.springframework.core.type.filter.AnnotationTypeFilter; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; import java.util.Set; + +import static cd.casic.ci.process.constant.PipelineFinalConstant.TASK_TYPE_CODE; + @Service public class TaskServiceImpl implements TaskService { private static final String basePackage = "cd.casic.ci.process.process.service"; private Set candidates; + @Resource + private PipTaskDao taskDao; public TaskServiceImpl() { System.out.println(""); @@ -30,4 +45,137 @@ public class TaskServiceImpl implements TaskService { public void taskTypeExist(String taskType) { } + + @Override + public String createTasksOrTask(PipTask tasks) { + + int sort = 0; + int taskSort = tasks.getTaskSort(); + String taskType = tasks.getTaskType(); + + //判断多任务是否存在代码源 + boolean b = TASK_TYPE_CODE.equals(taskType); + if (tasks.getPipelineId() != null && (b) ){ + findCode(tasks.getPipelineId()); + } + + //流水线任务 + String pipelineId = tasks.getPipelineId(); + if (pipelineId != null) { + sort = initSort(tasks.getPipelineId(), taskSort, taskType,1); + } + + //阶段任务 + String stageId = tasks.getStageId(); + if (stageId != null){ + sort = initSort(stageId, taskSort, taskType,2); + } + + //后置任务 + String postprocessId = tasks.getPostprocessId(); + if (postprocessId != null){ + sort = initSort(postprocessId, taskSort, taskType,3); + } + + tasks.setTaskSort(sort); + // 初始化名称 + if (Objects.isNull(tasks.getTaskName())){ +// String taskName = initDifferentTaskName(taskType); + String taskName = "未命名"; + tasks.setTaskName(taskName); + } + + tasks.setCreateTime(PipelineDateUtil.nowDateString(PipelineDateUtilConstant.yyyy_MM_dd_HH_mm_ss)); + + String tasksId = createTasks(tasks); + //创建任务 + createDifferentTask(tasksId,taskType,tasks.getValues()); + return tasksId; + } + void createDifferentTask(String taskId,String taskType,Object values){ + // TODO + } + /** + * 查找目标节点是否存在 + * */ + private void findCode(String pipelineId){ + List tasks = finAllPipelineTask(pipelineId); + if (tasks == null){ + return; + } + for (PipTask task : tasks) { + String taskType = task.getTaskType(); + if (TASK_TYPE_CODE.equals(taskType)){ + throw new ServiceException(50001,"代码源已存在"); + } + } + } + + private List finAllPipelineTask(String pipelineId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PipTask::getPipelineId,pipelineId); + return taskDao.selectList(wrapper); + } + /** + * 初始化配置顺序 + * @param id id + * @param taskSort 插入顺序 + * @param taskType 任务类型 + * @param type 1.流水线id 2.阶段id + * @return 顺序 + */ + private Integer initSort(String id, int taskSort,String taskType,int type){ + List list = new ArrayList<>(); + if (type == 1){ + list = finAllPipelineTask(id); + } + if (type == 2){ + list = finAllStageTask(id); + } + if (type == 3){ + PipTask postTask = findOnePostTask(id); + if (postTask!= null){ + list.add(postTask); + } + } + + if (list.isEmpty()){ + return 1; + } + + boolean b = TASK_TYPE_CODE.equals(taskType); + + //插入的为代码源 + if (b){ + for (PipTask tasks : list) { + tasks.setTaskSort(tasks.getTaskSort()+1); + updateTasks(tasks); + } + return 1; + } + + //更新顺序 + for (PipTask tasks : list) { + if (tasks.getTaskSort() < taskSort ){ + continue; + } + tasks.setTaskSort(tasks.getTaskSort()+1); + updateTasks(tasks); + } + return taskSort; + + } + + private void updateTasks(PipTask tasks){ + taskDao.updateById(tasks); + } + /** + * 创建任务 + * @param tasks 任务模型 + * @return 任务id + */ + private String createTasks(PipTask tasks){ + taskDao.insert(tasks); + return tasks.getTaskId(); + } } diff --git a/ops-server/src/main/java/cd/casic/server/controller/StageController.java b/ops-server/src/main/java/cd/casic/server/controller/StageController.java index e83ce4a..0f080f7 100644 --- a/ops-server/src/main/java/cd/casic/server/controller/StageController.java +++ b/ops-server/src/main/java/cd/casic/server/controller/StageController.java @@ -42,8 +42,7 @@ public class StageController { */ @RequestMapping(path="/createStage",method = RequestMethod.POST) public CommonResult createStagesOrTask(@RequestBody @Valid @NotNull StageReq stage){ -// String taskId = stageService.createStagesOrTask(stage); - String taskId = ""; + String taskId = stageService.createStagesOrTask(stage); return CommonResult.success(taskId); }