This commit is contained in:
even 2025-05-27 16:15:51 +08:00
commit 7e0f4345b6
10 changed files with 58 additions and 38 deletions

View File

@ -16,11 +16,6 @@ public class TargetManagerCreateReq {
*/
private String targetName;
/**
* 版本
*/
private String version;
/**
* 图标
*/
@ -45,4 +40,9 @@ public class TargetManagerCreateReq {
* 文件大小byte
*/
private Double totalSize;
/**
* 组织id
*/
private String projectId;
}

View File

@ -71,7 +71,7 @@ public class TargetManagerResp{
/**
* 组织id
*/
private Long orgId;
private String projectId;
/**
* 图标

View File

@ -26,7 +26,7 @@ public class PipelineSchedulingBootstrapper {
private PipelineSchedulingPropertiesServiceImpl taskService;
@Resource
private PipelineSchedulerConfig taskScheduler;
private PipelineSchedulerConfig pipelineSchedulerConfig;
@Resource
private PipelineExecutor pipelineExecutor;
@ -36,7 +36,7 @@ public class PipelineSchedulingBootstrapper {
List<PipelineSchedulingProperties> tasks = taskService.getAllTasks();
for (PipelineSchedulingProperties task : tasks) {
if (ContextStateEnum.RUNNING.getCode().equals(Integer.parseInt(task.getStatus()))) {
taskScheduler.addTask(task.getPipelineId(), ()->{
pipelineSchedulerConfig.addTask(task.getPipelineId(), ()->{
pipelineExecutor.execute(task.getPipelineId());
}, task.getCronExpression());
}

View File

@ -1,6 +1,5 @@
package cd.casic.ci.process.engine.scheduler.config;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.context.annotation.Configuration;
@ -12,7 +11,6 @@ import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.stereotype.Component;
import java.lang.reflect.Field;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ScheduledFuture;
@ -28,8 +26,8 @@ import java.util.concurrent.ScheduledFuture;
@Configuration
@EnableScheduling
@Slf4j
@Component("pipelineSchedulerConfig")
public class PipelineSchedulerConfig implements SchedulingConfigurer {
@Resource
private ScheduledTaskRegistrar taskRegistrar;
private final Map<String, ScheduledTask> taskFutures = new HashMap<>();
@ -39,10 +37,16 @@ public class PipelineSchedulerConfig implements SchedulingConfigurer {
@Override
public void configureTasks(@NotNull ScheduledTaskRegistrar taskRegistrar) {
this.taskRegistrar = taskRegistrar;
log.info("ScheduledTaskRegistrar 初始化完成");
}
public void addTask(String taskId, Runnable task, String cronExpression) {
if (taskRegistrar == null) {
log.error("【定时任务失败】taskRegistrar 尚未初始化,请检查调度器是否已启动");
return;
}
CronTask cronTask = new CronTask(task, cronExpression);
ScheduledTask scheduledTask = taskRegistrar.scheduleCronTask(cronTask);
taskFutures.put(taskId, scheduledTask);
@ -134,13 +138,13 @@ public class PipelineSchedulerConfig implements SchedulingConfigurer {
return future != null && future.isCancelled();
}
@Component
public static class PipelineSchedulerTask implements Runnable {
@Override
public void run() {
// 定时任务逻辑代码
System.out.println("Pipeline Task: " + new Date());
}
}
// @Component
// public static class PipelineSchedulerTask implements Runnable {
//
// @Override
// public void run() {
// // 定时任务逻辑代码
// System.out.println("Pipeline Task: " + new Date());
// }
// }
}

View File

@ -2,6 +2,7 @@ package cd.casic.ci.process.engine.scheduler.dao;
import cd.casic.ci.process.engine.scheduler.dateObject.PipelineSchedulingProperties;
import cd.casic.framework.mybatis.core.mapper.BaseMapperX;
import org.apache.ibatis.annotations.Mapper;
/**
* @author HopeLi
@ -10,5 +11,6 @@ import cd.casic.framework.mybatis.core.mapper.BaseMapperX;
* @Date: 2025/5/26 16:31
* @Description:
*/
@Mapper
public interface PipelineSchedulingPropertiesDao extends BaseMapperX<PipelineSchedulingProperties> {
}

View File

@ -3,6 +3,7 @@ package cd.casic.ci.process.engine.scheduler.dateObject;
import cd.casic.ci.process.process.dataObject.base.PipBaseElement;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author HopeLi
@ -12,6 +13,7 @@ import lombok.Data;
* @Description:
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("pip_pipeline_scheduling_properties")
public class PipelineSchedulingProperties extends PipBaseElement {

View File

@ -30,15 +30,15 @@ public class PipelineSchedulingPropertiesServiceImpl extends ServiceImpl<Pipelin
private PipelineSchedulingPropertiesDao taskRepository;
@Resource
private PipelineSchedulerConfig taskScheduler;
private PipelineSchedulerConfig pipelineSchedulerConfig;
public List<PipelineSchedulingProperties> getAllTasks() {
return taskRepository.selectList(null);
}
public void addTask(PipelineSchedulingProperties task) {
if (ContextStateEnum.RUNNING.getCode().equals(Integer.parseInt(task.getStatus()))) {
taskScheduler.addTask(task.getPipelineId(), () -> {
if (ContextStateEnum.RUNNING.getCode() == Integer.parseInt(task.getStatus())) {
pipelineSchedulerConfig.addTask(task.getPipelineId(), () -> {
},task.getCronExpression());
}
taskRepository.insert(task);
@ -47,25 +47,25 @@ public class PipelineSchedulingPropertiesServiceImpl extends ServiceImpl<Pipelin
public void updateTask(PipelineSchedulingProperties task) {
PipelineSchedulingProperties old = taskRepository.selectById(task.getId());
if (old != null) {
taskScheduler.updateTask(old.getPipelineId(), task.getCronExpression());
pipelineSchedulerConfig.updateTask(old.getPipelineId(), task.getCronExpression());
}
taskRepository.updateById(task);
}
public void deleteTask(String taskId) {
taskScheduler.removeTask(taskId);
pipelineSchedulerConfig.removeTask(taskId);
taskRepository.delete(new QueryWrapper<PipelineSchedulingProperties>().eq("task_id", taskId));
}
public void startTask(String taskId) {
taskScheduler.startTask(taskId);
pipelineSchedulerConfig.startTask(taskId);
taskRepository.update(null, new UpdateWrapper<PipelineSchedulingProperties>()
.set("status", "RUNNING").eq("task_id", taskId));
.set("status", String.valueOf(ContextStateEnum.RUNNING.getCode())).eq("task_id", taskId));
}
public void stopTask(String taskId) {
taskScheduler.stopTask(taskId);
pipelineSchedulerConfig.stopTask(taskId);
taskRepository.update(null, new UpdateWrapper<PipelineSchedulingProperties>()
.set("status", "STOPPED").eq("task_id", taskId));
.set("status", String.valueOf(ContextStateEnum.STOP.getCode())).eq("task_id", taskId));
}
}

View File

@ -0,0 +1,19 @@
package cd.casic.ci.process.engine.scheduler.trigger;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.Scheduled;
/**
* @author HopeLi
* @version v1.0
* @ClassName SchedulingTrigger
* @Date: 2025/5/27 15:05
* @Description:
*/
@Configuration
public class SchedulingTrigger {
@Scheduled(fixedRate = 5000)
public void triggerScheduler() {
// 用于触发调度器初始化
}
}

View File

@ -1,12 +1,10 @@
package cd.casic.ci.process.engine.worker;
import cd.casic.ci.common.pipeline.annotation.Plugin;
import cd.casic.ci.process.engine.constant.EngineRuntimeConstant;
import cd.casic.ci.process.engine.context.ConstantContextHolder;
import cd.casic.ci.process.engine.runContext.BaseRunContext;
import cd.casic.ci.process.engine.runContext.TaskRunContext;
import cd.casic.ci.process.process.dataObject.base.PipBaseElement;
import cd.casic.ci.process.process.dataObject.log.PipTaskLog;
import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline;
import cd.casic.ci.process.process.dataObject.target.TargetVersion;
import cd.casic.ci.process.process.dataObject.task.PipTask;

View File

@ -36,11 +36,6 @@ public class TargetManager extends PipBaseElement {
@TableField("target_type")
private String targetType;
/**
* 版本
*/
private String version;
/**
* 描述
*/
@ -84,8 +79,8 @@ public class TargetManager extends PipBaseElement {
/**
* 组织id
*/
@TableField("org_id")
private Long orgId;
@TableField("project_id")
private String projectId;
/**
* 图标