监听器类

This commit is contained in:
even 2025-04-15 20:05:16 +08:00
parent b8e6b45a65
commit d22268f9a5
16 changed files with 316 additions and 4 deletions

View File

@ -20,6 +20,10 @@
<groupId>cd.casic.boot</groupId>
<artifactId>module-ci-common-pipeline</artifactId>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-mq</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -1,5 +1,6 @@
package cd.casic.ci.event.pojo;
import cd.casic.framework.mq.redis.core.stream.AbstractRedisStreamMessage;
import com.mysql.cj.MessageBuilder;
import lombok.AllArgsConstructor;
import lombok.Data;
@ -19,7 +20,7 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
@NoArgsConstructor
@AllArgsConstructor
public class IEvent {
public class IEvent extends AbstractRedisStreamMessage {
private int delayMills = 0;
private int retryTime = 1;

View File

@ -1,7 +1,7 @@
package cd.casic.ci.process.process.callback.listener;
import cd.casic.ci.process.engine.control.CallBackControl;
import cd.casic.ci.process.process.engine.control.CallBackControl;
import cd.casic.ci.project.dal.pojo.ProjectCreateInfo;
import cd.casic.ci.project.dal.pojo.ProjectVO;
import cd.casic.ci.project.pojo.ProjectUpdateInfo;
@ -14,7 +14,6 @@ import cd.casic.framework.mq.redis.core.stream.AbstractRedisStreamMessageListene
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service

View File

@ -1,4 +1,4 @@
package cd.casic.ci.process.engine.control;
package cd.casic.ci.process.process.engine.control;
import cd.casic.ci.common.pipeline.Model;

View File

@ -0,0 +1,27 @@
package cd.casic.ci.process.process.engine.listener;
import cd.casic.ci.process.process.engine.control.CallBackControl;
import cd.casic.ci.process.process.engine.pojo.event.PipelineCreateEvent;
import cd.casic.ci.process.process.engine.service.AgentPipelineRefService;
import cd.casic.ci.process.process.engine.service.PipelineAtomStatisticsService;
import cd.casic.ci.process.process.engine.service.PipelineWebhookService;
import cd.casic.ci.process.process.engine.service.RepoPipelineRefService;
import cd.casic.framework.mq.redis.core.stream.AbstractRedisStreamMessageListener;
import org.springframework.stereotype.Service;
/**
* MQ实现的流水线创建事件
*
* @version 1.0
*/
@Service
public class MQPipelineCreateListener extends AbstractRedisStreamMessageListener<PipelineCreateEvent> {
private PipelineWebhookService pipelineWebhookService;
private PipelineAtomStatisticsService pipelineAtomStatisticsService;
private CallBackControl callBackControl;
private AgentPipelineRefService agentPipelineRefService;
private RepoPipelineRefService repoPipelineRefService;
@Override
public void onMessage(PipelineCreateEvent message) {
}
}

View File

@ -0,0 +1,26 @@
package cd.casic.ci.process.process.engine.listener;
import cd.casic.ci.process.process.engine.control.CallBackControl;
import cd.casic.ci.process.process.engine.pojo.event.PipelineCreateEvent;
import cd.casic.ci.process.process.engine.service.*;
import cd.casic.framework.mq.redis.core.stream.AbstractRedisStreamMessageListener;
import org.springframework.stereotype.Service;
/**
* MQ实现的流水线删除事件
*
* @version 1.0
*/
@Service
public class MQPipelineDeleteListener extends AbstractRedisStreamMessageListener<PipelineCreateEvent> {
private PipelineRuntimeService pipelineRuntimeService;
private PipelineWebhookService pipelineWebhookService;
private PipelineGroupService pipelineGroupService;
private PipelineAtomStatisticsService pipelineAtomStatisticsService;
private CallBackControl callBackControl;
private AgentPipelineRefService agentPipelineRefService;
private RepoPipelineRefService repoPipelineRefService;
@Override
public void onMessage(PipelineCreateEvent message) {
}
}

View File

@ -0,0 +1,8 @@
package cd.casic.ci.process.process.engine.listener;
/**
* MQ实现的流水线恢复事件
*
* @version 1.0
*/
public class MQPipelineRestoreListener {
}

View File

@ -0,0 +1,8 @@
package cd.casic.ci.process.process.engine.listener;
/**
* MQ实现的流水线开启Stream事件
*
* @version 1.0
*/
public class MQPipelineStreamEnabledListener {
}

View File

@ -0,0 +1,8 @@
package cd.casic.ci.process.process.engine.listener;
/**
* MQ实现的流水线更新事件
*
* @version 1.0
*/
public class MQPipelineUpdateListener {
}

View File

@ -0,0 +1,58 @@
package cd.casic.ci.process.process.engine.pojo.event;
import cd.casic.ci.common.pipeline.pojo.BuildNo;
import cd.casic.ci.common.pipeline.pojo.element.Element;
import cd.casic.ci.event.enums.ActionType;
import cd.casic.ci.event.pojo.pipeline.IPipelineEvent;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Map;
/**
* 创建流水线事件
*
* @version 1.0
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class PipelineCreateEvent extends IPipelineEvent {
private BuildNo buildNo;
private String pipelineName;
private Element element;
private Integer version;
private Map<String, Object> variables;
public PipelineCreateEvent(
String source,
String projectId,
String pipelineId,
String userId,
BuildNo buildNo,
String pipelineName,
Element element,
Integer version,
Map<String, Object> variables,
ActionType actionType,
int delayMills
) {
super(actionType, source, projectId, pipelineId, userId, delayMills);
this.buildNo = buildNo;
this.pipelineName = pipelineName;
this.element = element;
this.version = version;
this.variables = variables;
}
public PipelineCreateEvent(
String source,
String projectId,
String pipelineId,
String userId
) {
this(source, projectId, pipelineId, userId, null, null, null, 1, null, ActionType.START, 0);
}
}

View File

@ -0,0 +1,4 @@
package cd.casic.ci.process.process.engine.service;
public interface AgentPipelineRefService {
}

View File

@ -0,0 +1,39 @@
package cd.casic.ci.process.process.engine.service;
import java.util.Set;
/**
* 流水线插件统计相关的服务
* @version 1.0
*/
public interface PipelineAtomStatisticsService {
/**
* 更新插件对应的流水线数量
*/
void updateAtomPipelineNum(
String projectId,
String pipelineId,
Integer version,
Boolean deleteFlag,
Boolean restoreFlag
);
/**
* 添加流水线数量更新
*/
void addPipelineNumUpdate(
Set<String> modelVersionAtomSet,
// List<StoreStatisticPipelineNumUpdate> pipelineNumUpdateList,
Boolean incrementFlag
);
/**
* 获取版本模型字符串
*/
String getVersionModelString(
String projectId,
String pipelineId,
Integer version
);
}

View File

@ -0,0 +1,4 @@
package cd.casic.ci.process.process.engine.service;
public interface PipelineGroupService {
}

View File

@ -0,0 +1,4 @@
package cd.casic.ci.process.process.engine.service;
public interface PipelineRuntimeService {
}

View File

@ -0,0 +1,118 @@
package cd.casic.ci.process.process.engine.service;
import cd.casic.ci.common.pipeline.Model;
import cd.casic.ci.common.pipeline.enums.RepositoryConfig;
import cd.casic.ci.common.pipeline.enums.ScmType;
import cd.casic.ci.common.pipeline.pojo.element.trigger.enums.CodeEventType;
import cd.casic.ci.log.scm.dal.pojo.Repository;
import cd.casic.ci.process.api.process.pojo.webhook.PipelineWebhook;
import cd.casic.ci.process.api.process.pojo.webhook.WebhookTriggerPipeline;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 流水线Webhook服务接口
*/
public interface PipelineWebhookService {
/**
* 添加Webhook
*/
void addWebhook(
String projectId,
String pipelineId,
Integer version,
String userId
);
/**
* 注册Webhook
*/
Repository registerWebhook(
String projectId,
ScmType scmType,
RepositoryConfig repositoryConfig,
CodeEventType codeEventType,
String elementVersion
);
/**
* 删除Webhook
*/
Boolean deleteWebhook(
String projectId,
String pipelineId,
String userId
);
/**
* 删除指定任务的Webhook
*/
Boolean deleteWebhook(
String projectId,
String pipelineId,
String taskId,
String userId
);
/**
* 获取模型
*/
Model getModel(
String projectId,
String pipelineId,
Integer version
);
/**
* 获取触发流水线列表
*/
List<WebhookTriggerPipeline> getTriggerPipelines(
String name,
ScmType repositoryType,
List<String> yamlPipelineIds
);
/**
* 列出触发流水线
*/
List<WebhookTriggerPipeline> listTriggerPipeline(
String projectId,
String repositoryHashId,
String eventType
);
/**
* 获取项目名称
*/
String getProjectName(String projectName);
/**
* 获取外部名称
*/
String getExternalName(ScmType scmType, String projectName);
/**
* 列出Webhook
*/
List<PipelineWebhook> listWebhook(
String userId,
String projectId,
String pipelineId,
Integer page,
Integer pageSize
);
/**
* 获取Webhook
*/
PipelineWebhook get(
String projectId,
String pipelineId,
String repositoryHashId,
String eventType
);
}

View File

@ -0,0 +1,4 @@
package cd.casic.ci.process.process.engine.service;
public interface RepoPipelineRefService {
}