监听器类以及接口暂时空置

This commit is contained in:
even 2025-04-16 17:14:49 +08:00
parent 54b31affb4
commit 19858ca927
15 changed files with 1002 additions and 8 deletions

1
.gitignore vendored
View File

@ -40,3 +40,4 @@ target/
### VS Code ### ### VS Code ###
.vscode/!/.xcodemap/ .vscode/!/.xcodemap/
!/.idea/ !/.idea/
/.idea/

View File

@ -15,10 +15,10 @@ import cd.casic.ci.common.pipeline.pojo.event.ProjectPipelineCallBack;
import cd.casic.ci.common.pipeline.service.utils.LogUtils; import cd.casic.ci.common.pipeline.service.utils.LogUtils;
import cd.casic.ci.process.api.engine.pojo.PipelineInfo; import cd.casic.ci.process.api.engine.pojo.PipelineInfo;
import cd.casic.ci.process.api.engine.pojo.event.PipelineStreamEnabledEvent;
import cd.casic.ci.process.api.process.pojo.ProjectPipelineCallBackHistory; import cd.casic.ci.process.api.process.pojo.ProjectPipelineCallBackHistory;
import cd.casic.ci.process.api.process.pojo.pipeline.ModelDetail; import cd.casic.ci.process.api.process.pojo.pipeline.ModelDetail;
import cd.casic.ci.process.process.constant.AllocIdGenerateConstant; import cd.casic.ci.process.process.constant.AllocIdGenerateConstant;
import cd.casic.ci.process.process.engine.pojo.event.PipelineStreamEnabledEvent;
import cd.casic.ci.process.process.service.base.PipelineBuildDetailServiceImpl; import cd.casic.ci.process.process.service.base.PipelineBuildDetailServiceImpl;
import cd.casic.ci.process.process.service.base.engin.service.PipelineRepositoryService; import cd.casic.ci.process.process.service.base.engin.service.PipelineRepositoryService;
import cd.casic.ci.process.process.service.base.engin.service.ProjectPipelineCallBackService; import cd.casic.ci.process.process.service.base.engin.service.ProjectPipelineCallBackService;
@ -184,7 +184,7 @@ public class CallBackControl {
event.getUserId(), event.getUserId(),
event.getGitProjectId(), event.getGitProjectId(),
event.getGitProjectUrl(), event.getGitProjectUrl(),
event.isEnable() event.getEnable()
); );
sendToCallBack(new CallBackData<StreamEnabledEvent>(CallBackEvent.STREAM_ENABLED, streamEnabledEvent), list); sendToCallBack(new CallBackData<StreamEnabledEvent>(CallBackEvent.STREAM_ENABLED, streamEnabledEvent), list);
} }

View File

@ -1,12 +1,15 @@
package cd.casic.ci.process.process.engine.listener; package cd.casic.ci.process.process.engine.listener;
import cd.casic.ci.common.pipeline.service.utils.LogUtils;
import cd.casic.ci.process.process.engine.control.CallBackControl; 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.pojo.event.PipelineCreateEvent;
import cd.casic.ci.process.process.engine.service.AgentPipelineRefService; 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.PipelineAtomStatisticsService;
import cd.casic.ci.process.process.engine.service.PipelineWebhookService; import cd.casic.ci.process.process.engine.service.PipelineWebhookService;
import cd.casic.ci.process.process.engine.service.RepoPipelineRefService; import cd.casic.ci.process.process.engine.service.RepoPipelineRefService;
import cd.casic.framework.commons.util.watcher.Watcher;
import cd.casic.framework.mq.redis.core.stream.AbstractRedisStreamMessageListener; import cd.casic.framework.mq.redis.core.stream.AbstractRedisStreamMessageListener;
import com.github.fppt.jedismock.operations.transactions.Watch;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
* MQ实现的流水线创建事件 * MQ实现的流水线创建事件
@ -21,7 +24,43 @@ public class MQPipelineCreateListener extends AbstractRedisStreamMessageListener
private AgentPipelineRefService agentPipelineRefService; private AgentPipelineRefService agentPipelineRefService;
private RepoPipelineRefService repoPipelineRefService; private RepoPipelineRefService repoPipelineRefService;
@Override @Override
public void onMessage(PipelineCreateEvent message) { public void onMessage(PipelineCreateEvent event) {
String id = String.format("%s|CreatePipeline#%s|%s",
event.getTraceId(),event.getPipelineId(),event.getUserId()
);
Watcher watcher = new Watcher(id);
watcher.safeAround("callback",()-> {
callBackControl.pipelineCreateEvent(event.getProjectId(), event.getPipelineId());
});
watcher.safeAround("updateAtomPipelineNum",()->{
pipelineAtomStatisticsService.updateAtomPipelineNum(
event.getProjectId(),
event.getPipelineId(),
event.getVersion()!=null ?event.getVersion(): 1,
false,
false
);
});
watcher.safeAround("updateAgentPipelineRef",()->{
agentPipelineRefService.updateAgentPipelineRef(event.getUserId(), "create_pipeline", event.getProjectId(), event.getPipelineId());
});
watcher.safeAround("addWebhook",()-> {
pipelineWebhookService.addWebhook(
event.getProjectId(),
event.getPipelineId(),
event.getVersion(),
event.getUserId()
);
});
watcher.safeAround("savePipelineRefRepository",()->{
repoPipelineRefService.updateRepoPipelineRef(event.getUserId(), "create_pipeline", event.getProjectId(), event.getPipelineId());
}) ;
LogUtils.printCostTimeWE(watcher);
} }
} }

View File

@ -1,9 +1,13 @@
package cd.casic.ci.process.process.engine.listener; package cd.casic.ci.process.process.engine.listener;
import cd.casic.ci.common.pipeline.service.utils.LogUtils;
import cd.casic.ci.process.process.engine.control.CallBackControl; 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.pojo.event.PipelineCreateEvent;
import cd.casic.ci.process.process.engine.pojo.event.PipelineDeleteEvent;
import cd.casic.ci.process.process.engine.service.*; import cd.casic.ci.process.process.engine.service.*;
import cd.casic.framework.commons.util.watcher.Watcher;
import cd.casic.framework.mq.redis.core.stream.AbstractRedisStreamMessageListener; import cd.casic.framework.mq.redis.core.stream.AbstractRedisStreamMessageListener;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
* MQ实现的流水线删除事件 * MQ实现的流水线删除事件
@ -11,16 +15,70 @@ import org.springframework.stereotype.Service;
* @version 1.0 * @version 1.0
*/ */
@Service @Service
public class MQPipelineDeleteListener extends AbstractRedisStreamMessageListener<PipelineCreateEvent> { public class MQPipelineDeleteListener extends AbstractRedisStreamMessageListener<PipelineDeleteEvent> {
@Resource
private PipelineRuntimeService pipelineRuntimeService; private PipelineRuntimeService pipelineRuntimeService;
@Resource
private PipelineWebhookService pipelineWebhookService; private PipelineWebhookService pipelineWebhookService;
@Resource
private PipelineGroupService pipelineGroupService; private PipelineGroupService pipelineGroupService;
@Resource
private PipelineAtomStatisticsService pipelineAtomStatisticsService; private PipelineAtomStatisticsService pipelineAtomStatisticsService;
@Resource
private CallBackControl callBackControl; private CallBackControl callBackControl;
@Resource
private AgentPipelineRefService agentPipelineRefService; private AgentPipelineRefService agentPipelineRefService;
@Resource
private RepoPipelineRefService repoPipelineRefService; private RepoPipelineRefService repoPipelineRefService;
@Override @Override
public void onMessage(PipelineCreateEvent message) { public void onMessage(PipelineDeleteEvent event) {
String id = String.format("%s|DeletePipeline#%s|%s}",
event.getTraceId(),
event.getPipelineId(),
event.isClearUpModel());
Watcher watcher = new Watcher(id);
final String projectId = event.getProjectId();
final String pipelineId = event.getPipelineId();
final String userId = event.getUserId();
watcher.safeAround("cancelPendingTask",()->{
pipelineRuntimeService.cancelPendingTask(projectId, pipelineId, userId);
});
if (event.isClearUpModel()) {
watcher.safeAround("deleteExt",()-> {
pipelineGroupService.deleteAllUserFavorByPipeline(userId, projectId, pipelineId); // 删除收藏该流水线上所有记录
pipelineGroupService.deletePipelineLabel(userId, projectId, pipelineId);
});
}
watcher.safeAround("deleteWebhook",()->{
pipelineWebhookService.deleteWebhook(projectId, pipelineId, userId);
});
watcher.safeAround("updateAgentPipelineRef",()->{
agentPipelineRefService.updateAgentPipelineRef(userId, "delete_pipeline", projectId, pipelineId);
});
watcher.safeAround("updateAtomPipelineNum",()->{
pipelineAtomStatisticsService.updateAtomPipelineNum(
event.getProjectId(),
event.getPipelineId(),
null,
true,
false
);
});
watcher.safeAround("updateAgentPipelineRef",()->{
repoPipelineRefService.updateRepoPipelineRef(userId, "delete_pipeline", projectId, pipelineId);
});
watcher.safeAround("callback",
()->{
callBackControl.pipelineDeleteEvent(event.getProjectId(), event.getPipelineId());
});
LogUtils.printCostTimeWE(watcher);
} }
} }

View File

@ -1,8 +1,66 @@
package cd.casic.ci.process.process.engine.listener; package cd.casic.ci.process.process.engine.listener;
import cd.casic.ci.common.pipeline.service.utils.LogUtils;
import cd.casic.ci.process.process.engine.control.CallBackControl;
import cd.casic.ci.process.process.engine.pojo.event.PipelineDeleteEvent;
import cd.casic.ci.process.process.engine.pojo.event.PipelineRestoreEvent;
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.RepoPipelineRefService;
import cd.casic.framework.commons.util.watcher.Watcher;
import cd.casic.framework.mq.redis.core.stream.AbstractRedisStreamMessageListener;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
/** /**
* MQ实现的流水线恢复事件 * MQ实现的流水线恢复事件
* *
* @version 1.0 * @version 1.0
*/ */
public class MQPipelineRestoreListener { @Service
public class MQPipelineRestoreListener extends AbstractRedisStreamMessageListener<PipelineRestoreEvent> {
@Resource
private AgentPipelineRefService agentPipelineRefService;
@Resource
private PipelineAtomStatisticsService pipelineAtomStatisticsService;
@Resource
private CallBackControl callBackControl;
@Resource
private RepoPipelineRefService repoPipelineRefService;
@Override
public void onMessage(PipelineRestoreEvent event) {
String id = String.format("%s|RestorePipeline#%s|%s}",
event.getTraceId(),
event.getPipelineId(),
event.getUserId()
) ;
Watcher watcher = new Watcher(id);
try {
watcher.start("updateAgentPipelineRef");
String userId = event.getUserId();
String projectId = event.getProjectId();
String pipelineId = event.getPipelineId();
Integer version = event.getVersion();
agentPipelineRefService.updateAgentPipelineRef(userId, "restore_pipeline", projectId, pipelineId);
watcher.stop();
watcher.start("updateAtomPipelineNum");
pipelineAtomStatisticsService.updateAtomPipelineNum(
projectId,
pipelineId,
version,
false,
true
);
watcher.stop();
watcher.start("callback");
callBackControl.pipelineRestoreEvent(projectId, pipelineId);
repoPipelineRefService.updateRepoPipelineRef(userId, "restore_pipeline", projectId, pipelineId);
} finally {
watcher.stop();
LogUtils.printCostTimeWE(watcher);
}
}
} }

View File

@ -1,8 +1,41 @@
package cd.casic.ci.process.process.engine.listener; package cd.casic.ci.process.process.engine.listener;
import cd.casic.ci.common.pipeline.service.utils.LogUtils;
import cd.casic.ci.process.process.engine.control.CallBackControl;
import cd.casic.ci.process.process.engine.pojo.event.PipelineRestoreEvent;
import cd.casic.ci.process.process.engine.pojo.event.PipelineStreamEnabledEvent;
import cd.casic.framework.commons.util.watcher.Watcher;
import cd.casic.framework.mq.redis.core.stream.AbstractRedisStreamMessageListener;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
/** /**
* MQ实现的流水线开启Stream事件 * MQ实现的流水线开启Stream事件
* *
* @version 1.0 * @version 1.0
*/ */
public class MQPipelineStreamEnabledListener { @Service
public class MQPipelineStreamEnabledListener extends AbstractRedisStreamMessageListener<PipelineStreamEnabledEvent> {
@Resource
private CallBackControl callBackControl;
@Override
public void onMessage(PipelineStreamEnabledEvent event) {
String id = String.format("%s|RestorePipeline#%s|%s}",
event.getTraceId(),
event.getPipelineId(),
event.getUserId()
) ;
Watcher watcher =new Watcher(id);
try {
watcher.start("callback");
callBackControl.pipelineStreamEnabledEvent(
event
);
watcher.stop();
} finally {
watcher.stop();
LogUtils.printCostTimeWE(watcher);
}
}
} }

View File

@ -1,8 +1,69 @@
package cd.casic.ci.process.process.engine.listener; package cd.casic.ci.process.process.engine.listener;
import cd.casic.ci.common.pipeline.service.utils.LogUtils;
import cd.casic.ci.process.process.engine.control.CallBackControl;
import cd.casic.ci.process.process.engine.pojo.event.PipelineUpdateEvent;
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.commons.util.watcher.Watcher;
import cd.casic.framework.mq.redis.core.stream.AbstractRedisStreamMessageListener;
import org.springframework.stereotype.Service;
/** /**
* MQ实现的流水线更新事件 * MQ实现的流水线更新事件
* *
* @version 1.0 * @version 1.0
*/ */
public class MQPipelineUpdateListener { @Service
public class MQPipelineUpdateListener extends AbstractRedisStreamMessageListener<PipelineUpdateEvent> {
private PipelineAtomStatisticsService pipelineAtomStatisticsService;
private CallBackControl callBackControl;
private AgentPipelineRefService agentPipelineRefService;
private PipelineWebhookService pipelineWebhookService;
private RepoPipelineRefService repoPipelineRefService;
@Override
public void onMessage(PipelineUpdateEvent event) {
String id = String.format("%s|RestorePipeline#%s|%s}",
event.getTraceId(),
event.getPipelineId(),
event.getUserId()
) ;
Watcher watcher = new Watcher(id);
final String projectId = event.getProjectId();
final String pipelineId = event.getPipelineId();
final String userId = event.getUserId();
final Integer version = event.getVersion();
watcher.safeAround("callback",()->{
callBackControl.pipelineUpdateEvent(projectId, pipelineId);
});
watcher.safeAround("updateAgentPipelineRef",()->{
agentPipelineRefService.updateAgentPipelineRef(userId, "update_pipeline", projectId, pipelineId);
});
watcher.safeAround("updateAtomPipelineNum",()->{
pipelineAtomStatisticsService.updateAtomPipelineNum(projectId,pipelineId, version,false,false);
});
watcher.safeAround("addWebhook",()->{
pipelineWebhookService.addWebhook(
projectId ,
pipelineId ,
version ,
userId
);
});
watcher.safeAround("updateAgentPipelineRef",()->{
repoPipelineRefService.updateRepoPipelineRef(userId, "update_pipeline", projectId, pipelineId);
});
LogUtils.printCostTimeWE(watcher);
}
} }

View File

@ -0,0 +1,56 @@
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
*/
import lombok.Getter;
import lombok.ToString;
/**
* 删除流水线事件
*
* @version 1.0
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
//@Event(StreamBinding.PIPELINE_DELETE)
public class PipelineDeleteEvent extends IPipelineEvent {
private final boolean clearUpModel;
public PipelineDeleteEvent(
String source,
String projectId,
String pipelineId,
String userId,
boolean clearUpModel
) {
this(source, projectId, pipelineId, userId, clearUpModel, ActionType.START, 0);
}
public PipelineDeleteEvent(
String source,
String projectId,
String pipelineId,
String userId,
boolean clearUpModel,
ActionType actionType,
int delayMills
) {
super(actionType, source, projectId, pipelineId, userId, delayMills);
this.clearUpModel = clearUpModel;
}
}

View File

@ -0,0 +1,11 @@
package cd.casic.ci.process.process.engine.pojo.event;
import cd.casic.ci.event.pojo.pipeline.IPipelineEvent;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class PipelineRestoreEvent extends IPipelineEvent {
private Integer version;
}

View File

@ -0,0 +1,13 @@
package cd.casic.ci.process.process.engine.pojo.event;
import cd.casic.ci.event.pojo.pipeline.IPipelineEvent;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class PipelineStreamEnabledEvent extends IPipelineEvent {
private Long gitProjectId;
private String gitProjectUrl;
private Boolean enable;
}

View File

@ -0,0 +1,17 @@
package cd.casic.ci.process.process.engine.pojo.event;
import cd.casic.ci.common.pipeline.pojo.BuildNo;
import cd.casic.ci.event.pojo.pipeline.IPipelineEvent;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 更新流水线事件
*
* @version 1.0
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class PipelineUpdateEvent extends IPipelineEvent {
private Integer version;
private BuildNo buildNo;
}

View File

@ -1,4 +1,46 @@
package cd.casic.ci.process.process.engine.service; package cd.casic.ci.process.process.engine.service;
import cd.casic.ci.common.pipeline.Model;
/**
* 构建机流水线引用服务接口
*/
public interface AgentPipelineRefService { public interface AgentPipelineRefService {
/**
* 更新构建机流水线引用
*
* @param userId 用户ID
* @param action 操作类型
* @param projectId 项目ID
* @param pipelineId 流水线ID
*/
void updateAgentPipelineRef(String userId, String action, String projectId, String pipelineId);
/**
* 分析流水线引用并保存
*
* @param userId 用户ID
* @param action 操作类型
* @param projectId 项目ID
* @param pipelineId 流水线ID
* @param pipelineModel 流水线模型
*/
void analysisPipelineRefAndSave(
String userId,
String action,
String projectId,
String pipelineId,
Model pipelineModel
);
/**
* 更新流水线引用
*
* @param userId 用户ID
* @param projectId 项目ID
* @param pipelineId 流水线ID
*/
void updatePipelineRef(String userId, String projectId, String pipelineId);
} }

View File

@ -1,4 +1,114 @@
package cd.casic.ci.process.process.engine.service; package cd.casic.ci.process.process.engine.service;
import cd.casic.ci.process.api.process.pojo.classify.*;
import cd.casic.ci.process.process.dataObject.TPipelineFavorRecord;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* 流水线分组服务接口
*/
public interface PipelineGroupService { public interface PipelineGroupService {
/**
* 获取分组列表
*/
List<PipelineGroup> getGroups(String userId, String projectId);
/**
* 获取指定流水线的分组列表
*/
List<PipelineGroupWithLabels> getGroups(String userId, String projectId, String pipelineId);
/**
* 添加分组
*/
Boolean addGroup(String userId, PipelineGroupCreate pipelineGroup);
/**
* 更新分组
*/
Boolean updateGroup(String userId, PipelineGroupUpdate pipelineGroup);
/**
* 删除分组
*/
Boolean deleteGroup(String userId, String projectId, String groupId);
/**
* 添加标签
*/
Boolean addLabel(String userId, String projectId, PipelineLabelCreate pipelineLabel);
/**
* 删除标签
*/
Boolean deleteLabel(String userId, String projectId, String labelId);
/**
* 更新标签
*/
Boolean updateLabel(String userId, String projectId, PipelineLabelUpdate pipelineLabel);
/**
* 删除流水线标签
*/
void deletePipelineLabel(String userId, String projectId, String pipelineId);
/**
* 添加流水线标签
*/
void addPipelineLabel(String userId, String projectId, String pipelineId, List<String> labelIds);
/**
* 更新流水线标签
*/
void updatePipelineLabel(String userId, String projectId, String pipelineId, List<String> labelIds);
/**
* 获取视图标签到流水线的映射
*/
Map<String, List<String>> getViewLabelToPipelinesMap(
String projectId,
List<String> labels
);
/**
* 获取分组到标签的映射
*/
Map<String, List<String>> getGroupToLabelsMap(String projectId, List<String> labels);
/**
* 收藏流水线
*/
Boolean favorPipeline(String userId, String projectId, String pipelineId, Boolean favor);
/**
* 删除流水线相关的所有收藏
*/
Integer deleteAllUserFavorByPipeline(String userId, String projectId, String pipelineId);
/**
* 获取收藏的流水线列表
*/
List<String> getFavorPipelines(String userId, String projectId);
/**
* 获取流水线分组标签
*/
Map<String, List<PipelineGroupLabels>> getPipelinesGroupLabel(
Collection<String> pipelineIds,
String projectId
);
/**
* 分页获取收藏的流水线
*/
TPipelineFavorRecord getFavorPipelinesPage(
String userId,
Integer page,
Integer pageSize
);
} }

View File

@ -1,4 +1,425 @@
package cd.casic.ci.process.process.engine.service; package cd.casic.ci.process.process.engine.service;
import cd.casic.ci.common.pipeline.Model;
import cd.casic.ci.common.pipeline.enums.BuildStatus;
import cd.casic.ci.common.pipeline.enums.ChannelCode;
import cd.casic.ci.common.pipeline.enums.StartType;
import cd.casic.ci.common.pipeline.pojo.BuildParameters;
import cd.casic.ci.common.pipeline.pojo.ErrorInfo;
import cd.casic.ci.common.pipeline.pojo.time.BuildRecordTimeCost;
import cd.casic.ci.process.api.engine.pojo.BuildInfo;
import cd.casic.ci.process.api.process.enums.HistorySearchType;
import cd.casic.ci.process.api.process.pojo.*;
import cd.casic.ci.process.api.process.pojo.app.StartBuildContext;
import cd.casic.ci.process.api.process.pojo.pipeline.PipelineLatestBuild;
import cd.casic.ci.process.process.dataObject.TPipelineBuildSummaryRecord;
import cd.casic.ci.process.process.dataObject.TPipelineInfoRecord;
import cd.casic.ci.process.process.pojo.LatestRunningBuild;
import cd.casic.ci.process.process.pojo.PipelineFilterParam;
import org.apache.commons.lang3.tuple.Pair;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 流水线运行时相关的服务接口
*/
public interface PipelineRuntimeService { public interface PipelineRuntimeService {
/**
* 取消待处理的任务
*/
void cancelPendingTask(String projectId, String pipelineId, String userId);
/**
* 获取构建信息
*/
BuildInfo getBuildInfo(String projectId, String buildId);
/**
* 获取构建信息
*/
BuildInfo getBuildInfo(String projectId, String pipelineId, String buildId);
/**
* 获取运行中的构建数量
*/
int getRunningBuildCount(String projectId, String pipelineId);
/**
* 根据并发组获取构建列表
*/
List<Pair<String, String>> getBuildInfoListByConcurrencyGroup(
String projectId,
String concurrencyGroup,
List<BuildStatus> status
);
/**
* 获取构建号
*/
Map<String, String> getBuildNoByByPair(Set<String> buildIds, String projectId);
/**
* 获取构建摘要记录
*/
TPipelineBuildSummaryRecord getBuildSummaryRecord(String projectId, String pipelineId);
/**
* 获取流水线构建记录
*/
TPipelineInfoRecord getBuildPipelineRecords(
String projectId,
ChannelCode channelCode,
Collection<String> pipelineIds,
PipelineSortType sortType,
List<String> favorPipelines,
List<String> authPipelines,
String viewId,
List<PipelineFilterParam> pipelineFilterParamList,
Boolean permissionFlag,
Integer page,
Integer pageSize
);
/**
* 获取最新构建
*/
Map<String, PipelineLatestBuild> getLatestBuild(String projectId, List<String> pipelineIds);
/**
* 获取流水线构建历史
*/
List<BuildHistory> listPipelineBuildHistory(
String projectId,
String pipelineId,
int offset,
int limit,
Boolean updateTimeDesc
);
/**
* 获取流水线构建历史
*/
List<BuildHistory> listPipelineBuildHistory(
String projectId,
String pipelineId,
int offset,
int limit,
List<String> materialAlias,
String materialUrl,
List<String> materialBranch,
String materialCommitId,
String materialCommitMessage,
List<BuildStatus> status,
List<StartType> trigger,
Long queueTimeStartTime,
Long queueTimeEndTime,
Long startTimeStartTime,
Long startTimeEndTime,
Long endTimeStartTime,
Long endTimeEndTime,
Long totalTimeMin,
Long totalTimeMax,
String remark,
Integer buildNoStart,
Integer buildNoEnd,
String buildMsg,
List<String> startUser,
Boolean updateTimeDesc,
Boolean debug,
List<String> triggerAlias,
List<String> triggerBranch,
List<String> triggerUser
);
/**
* 更新构建备注
*/
void updateBuildRemark(String projectId, String pipelineId, String buildId, String remark);
/**
* 获取历史条件仓库
*/
List<String> getHistoryConditionRepo(
String projectId,
String pipelineId,
Integer debugVersion,
String search,
HistorySearchType type
);
/**
* 获取历史条件分支
*/
List<String> getHistoryConditionBranch(
String projectId,
String pipelineId,
List<String> aliasList,
Integer debugVersion,
String search,
HistorySearchType type
);
/**
* 获取构建历史
*/
BuildHistory getBuildHistoryByBuildNum(
String projectId,
String pipelineId,
Integer buildNum,
Set<BuildStatus> statusSet,
Boolean debug
);
/**
* 获取构建基本信息
*/
Map<String, BuildBasicInfo> getBuildBasicInfoByIds(Set<String> buildIds);
/**
* 获取构建历史
*/
BuildHistory getBuildHistoryById(String projectId, String buildId);
/**
* 获取启动用户
*/
String getStartUser(String projectId, String buildId);
/**
* 获取构建历史
*/
List<BuildHistory> getBuildHistoryByIds(
Set<String> buildIds,
String startBeginTime,
String endBeginTime,
String projectId
);
/**
* 取消构建
*/
Boolean cancelBuild(
String projectId,
String pipelineId,
String buildId,
String userId,
int executeCount,
BuildStatus buildStatus,
Boolean terminateFlag
);
/**
* 开始构建
*/
BuildId startBuild(Model fullModel, StartBuildContext context);
/**
* 更新构建号
*/
void updateBuildNo(String projectId, String pipelineId, int buildNo, Boolean debug);
/**
* 更新执行次数
*/
void updateExecuteCount(String projectId, String buildId, int executeCount);
/**
* 开始最新运行构建
*/
void startLatestRunningBuild(LatestRunningBuild latestRunningBuild);
/**
* 完成最新运行构建
*/
void finishLatestRunningBuild(
LatestRunningBuild latestRunningBuild,
BuildStatus currentBuildStatus,
List<ErrorInfo> errorInfoList,
BuildRecordTimeCost timeCost
);
/**
* 获取构建参数
*/
List<BuildParameters> getBuildParametersFromStartup(
String projectId,
String buildId
);
/**
* 获取执行时间
*/
Long getExecuteTime(String projectId, String buildId);
/**
* 获取上次构建
*/
BuildInfo getLastTimeBuild(String projectId, String pipelineId, Boolean debug);
/**
* 获取流水线构建历史数量
*/
int getPipelineBuildHistoryCount(String projectId, String pipelineId, Integer debugVersion);
/**
* 获取构建
*/
List<String> getBuilds(
String projectId,
String pipelineId,
Set<BuildStatus> buildStatus,
Integer debugVersion
);
/**
* 获取流水线构建历史数量
*/
int getPipelineBuildHistoryCount(
String projectId,
String pipelineId,
List<String> materialAlias,
String materialUrl,
List<String> materialBranch,
String materialCommitId,
String materialCommitMessage,
List<BuildStatus> status,
List<StartType> trigger,
Long queueTimeStartTime,
Long queueTimeEndTime,
Long startTimeStartTime,
Long startTimeEndTime,
Long endTimeStartTime,
Long endTimeEndTime,
Long totalTimeMin,
Long totalTimeMax,
String remark,
Integer buildNoStart,
Integer buildNoEnd,
String buildMsg,
List<String> startUser,
Boolean debug,
List<String> triggerAlias,
List<String> triggerBranch,
List<String> triggerUser
);
/**
* 获取总构建历史数量
*/
int getTotalBuildHistoryCount(
String projectId,
String pipelineId,
List<BuildStatus> status,
Long startTimeEndTime
);
/**
* 获取所有构建号
*/
Collection<Integer> getAllBuildNum(String projectId, String pipelineId, Integer debugVersion);
/**
* 获取最新构建ID
*/
String getLatestBuildId(String projectId, String pipelineId);
/**
* 获取最新完成构建ID
*/
String getLatestFinishedBuildId(String projectId, String pipelineId);
/**
* 获取最新成功构建ID
*/
String getLatestSucceededBuildId(String projectId, String pipelineId);
/**
* 获取最新失败构建ID
*/
String getLatestFailedBuildId(String projectId, String pipelineId);
/**
* 根据构建号获取构建ID
*/
String getBuildIdByBuildNum(
String projectId,
String pipelineId,
int buildNum,
Integer debugVersion
);
/**
* 更新构建信息状态为排队
*/
void updateBuildInfoStatus2Queue(String projectId, String buildId, BuildStatus oldStatus, String showMsg);
/**
* 更新制品列表
*/
Boolean updateArtifactList(
String projectId,
String pipelineId,
String buildId,
String artifactListJsonString
);
/**
* 更新构建历史阶段状态
*/
void updateBuildHistoryStageState(String projectId, String buildId, List<BuildStageStatus> allStageStatus);
/**
* 更新推荐版本
*/
void updateRecommendVersion(String projectId, String buildId, String recommendVersion);
/**
* 更新构建参数
*/
Boolean updateBuildParameters(
String projectId,
String pipelineId,
String buildId,
Collection<BuildParameters> buildParameters,
Boolean debug
);
/**
* 并发取消构建流水线
*/
void concurrencyCancelBuildPipeline(
String projectId,
String pipelineId,
String buildId,
String userId,
String groupName,
String detailUrl
);
/**
* 更新异步状态
*/
void updateAsyncStatus(
String projectId,
String pipelineId,
String buildId,
String taskId,
int executeCount,
String asyncStatus
);
/**
* 获取构建变量服务
*/
Map<String, String> getBuildVariableService(
String projectId,
String pipelineId,
String buildId,
Set<String> keys
);
} }

View File

@ -1,4 +1,78 @@
package cd.casic.ci.process.process.engine.service; 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.pojo.element.Element;
import java.util.Map;
/**
* 流水线代码库使用服务接口
* @version 1.0
*/
public interface RepoPipelineRefService { public interface RepoPipelineRefService {
/**
* 更新代码库流水线引用
*
* @param userId 用户ID
* @param action 操作类型
* @param projectId 项目ID
* @param pipelineId 流水线ID
*/
void updateRepoPipelineRef(String userId, String action, String projectId, String pipelineId);
/**
* 更新流水线引用
*
* @param userId 用户ID
* @param projectId 项目ID
* @param pipelineId 流水线ID
*/
void updatePipelineRef(String userId, String projectId, String pipelineId);
/**
* 更新所有流水线引用
*
* @param projectId 项目ID可为空
*/
void updateAllPipelineRef(String projectId);
/**
* 分析流水线引用并保存
*
* @param userId 用户ID
* @param action 操作类型
* @param projectId 项目ID
* @param pipelineId 流水线ID
* @param model 流水线模型
* @param channel 渠道
*/
void analysisPipelineRefAndSave(
String userId,
String action,
String projectId,
String pipelineId,
Model model,
String channel
);
/**
* 获取任务参数
*
* @param element 元素
* @return 任务参数Map
*/
Map<String, Object> getTaskParams(Element element);
/**
* 获取市场构建代码库配置
*
* @param input 输入参数
* @param variables 变量Map
* @return 代码库配置
*/
RepositoryConfig getMarketBuildRepoConfig(Map<?, ?> input, Map<String, String> variables);
} }