@Override public void run() { LOGGER.info("Loading pipeline history to cache...Started"); for (PipelineInstanceModel pipeline : pipelines) { goCache.put(pipelineHistoryCacheKey(pipeline.getId()), pipeline); } LOGGER.info("Loading pipeline history to cache...Done"); } };
private String getPipelineInstanceModelAsKey(PipelineModel model) { final StringBuilder builder = new StringBuilder(); for (PipelineInstanceModel pim : model.getActivePipelineInstances()) { builder.append("["); builder.append(pim.getId()).append(DELIMITER); for (StageInstanceModel stageInstanceModel : pim.getStageHistory()) { builder.append(stageInstanceModel.getName()).append(DELIMITER); builder.append(stageInstanceModel.getId()).append(DELIMITER); builder.append(stageInstanceModel.getState()).append(DELIMITER); } builder.append("]"); } return builder.toString(); }
private String appendActivePipelineInstanceModels(PipelineModel model, StringBuilder s) { for (PipelineInstanceModel pim : model.getActivePipelineInstances()) { TrackingTool trackingTool = pim.getTrackingTool(); MingleConfig mingleConfig = pim.getMingleConfig(); int trackingToolHash = trackingTool == null ? -1 : trackingTool.hashCode(); int mingleToolHash = mingleConfig == null ? -1 : mingleConfig.hashCode(); s.append("[").append(pim.getId()).append("|").append(trackingToolHash).append("|").append(mingleToolHash).append("]"); } return s.toString(); } }
private Map<CaseInsensitiveString, TreeSet<Long>> groupPipelineInstanceIdsByPipelineName(List<PipelineInstanceModel> pipelines) { Map<CaseInsensitiveString, TreeSet<Long>> result = new HashMap<CaseInsensitiveString, TreeSet<Long>>(); for (PipelineInstanceModel pipeline : pipelines) { TreeSet<Long> ids = initializePipelineInstances(result, new CaseInsensitiveString(pipeline.getName())); ids.add(pipeline.getId()); } return result; }
private PipelineInstanceModel loadPipelineHistoryBuildCause(PipelineInstanceModel pipeline) { if (pipeline != null) { MaterialRevisions materialRevisions = materialRepository.findMaterialRevisionsForPipeline(pipeline.getId()); pipeline.setMaterialRevisionsOnBuildCause(materialRevisions); } return pipeline; }
private void cacheMaterialRevisions(List<PipelineInstanceModel> models) { List<CaseInsensitiveString> pipelinesInConfig = getPipelineNamesInConfig(); if (pipelinesInConfig.isEmpty()) { LOGGER.warn("No pipelines found in Config, Skipping material revision caching."); return; } Set<Long> ids = new HashSet<Long>(); for (PipelineInstanceModel model : models) { if (pipelinesInConfig.contains(new CaseInsensitiveString(model.getName()))) { ids.add(model.getId()); } } if (ids.isEmpty()) { LOGGER.warn("No PIMs found in Config, Skipping material revision caching."); return; } materialRepository.cacheMaterialRevisionsForPipelines(ids); }
public String httpUrl(String baseUrl) { return httpUrlForPipeline(baseUrl, pipeline.getId(), pipeline.getName()); }
private void populateMaterialRevisionsOnBuildCause(PipelineInstanceModel model) { model.setMaterialRevisionsOnBuildCause(materialRepository.findMaterialRevisionsForPipeline(model.getId())); }
private List historyAsJson(BaseCollection<PipelineInstanceModel> pipelineHistory) { List json = new ArrayList(); for (PipelineInstanceModel item : pipelineHistory) { Map<String, Object> jsonMap = new LinkedHashMap<>(); jsonMap.put("pipelineId", item.getId()); jsonMap.put("label", item.getLabel()); jsonMap.put("counterOrLabel", item.getPipelineIdentifier().instanceIdentifier()); jsonMap.put("scheduled_date", timeConverter.getHumanReadableStringWithTimeZone(item.getScheduledDate())); jsonMap.put("scheduled_timestamp", item.getScheduledDate() != null ? item.getScheduledDate().getTime() : null); jsonMap.put("buildCauseBy", item.getApprovedByForDisplay()); jsonMap.put("modification_date", getModificationDate(item)); jsonMap.put("materialRevisions", materialRevisionsJson(item)); jsonMap.put("stages", stageHistoryAsJson(item, item.getStageHistory())); jsonMap.put("revision", item.getRevisionOfLatestModification()); jsonMap.put("comment", item.getComment()); json.add(jsonMap); } return json; }
private void populatePipelineInstanceModel(PipelineConfig pipelineConfig, PipelineInstanceModel pipelineInstanceModel) { if (pipelineInstanceModel.getId() > 0) { CaseInsensitiveString pipelineName = new CaseInsensitiveString(pipelineInstanceModel.getName()); pipelineInstanceModel.setPipelineAfter(pipelineTimeline.runAfter(pipelineInstanceModel.getId(), pipelineName)); pipelineInstanceModel.setPipelineBefore(pipelineTimeline.runBefore(pipelineInstanceModel.getId(), pipelineName)); } populatePlaceHolderStages(pipelineInstanceModel); populateMaterialRevisionsOnBuildCause(pipelineInstanceModel); pipelineInstanceModel.setMaterialConfigs(pipelineConfig.materialConfigs()); pipelineInstanceModel.setLatestRevisions(materialRepository.findLatestRevisions(pipelineConfig.materialConfigs())); }
private void populatePipelineState(PipelineInstanceModel instance, Username username) { populatePlaceHolderStages(instance); populateCanRunStatus(username, instance); populateStageOperatePermission(instance, username); populateLockStatus(instance.getName(), username, instance); long id = pipelineTimeline.pipelineBefore(instance.getId()); if (id != -1) { PipelineInstanceModel prevPipeline = pipelineDao.loadHistory(id); instance.setPreviousPipelineLabel(prevPipeline.getLabel()); instance.setPreviousPipelineCounter(prevPipeline.getCounter()); } }
private void populatePreviousStageState(PipelineInstanceModel activePipeline) { if (activePipeline.isAnyStageActive()) { StageInstanceModel activeStage = activePipeline.activeStage(); StageInstanceModel latestActive = null; long id = activePipeline.getId(); do { PipelineTimelineEntry timelineEntry = pipelineTimeline.runBefore(id, new CaseInsensitiveString(activePipeline.getName())); if (timelineEntry == null) { break; } id = timelineEntry.getId(); PipelineInstanceModel instanceModel = pipelineDao.loadHistory(id); if (instanceModel != null && instanceModel.hasStageBeenRun(activeStage.getName())) { latestActive = instanceModel.getStageHistory().byName(activeStage.getName()); } } while (latestActive == null); activeStage.setPreviousStage(latestActive); } }