public MaterialRevision filter(MaterialRevision previous) { if (modifications.shouldBeIgnoredByFilterIn(material.config())) { return previous; } else { return this; } }
public MaterialConfigs convertToConfigs() { MaterialConfigs configs = new MaterialConfigs(); for (Material material : this) { configs.add(material.config()); } return configs; }
private boolean currentPipelineHasMaterial(PipelineConfigDependencyGraph.PipelineConfigQueueEntry configQueueEntry, Material material) { return configQueueEntry.getNode().hasMaterial(material.config()); }
private static Consumer<OutputListWriter> runningMDUsToJSON(Collection<MaterialPerformingMDU> runningMDUs) { return listWriter -> { runningMDUs.stream().forEach(materialPerformingMDU -> { listWriter.addChild(childItemWriter -> { MaterialRepresenter.toJSON(childItemWriter, materialPerformingMDU.getMaterial().config()); childItemWriter.add("mdu_start_time", materialPerformingMDU.getTimestamp()); }); }); }; }
private MaterialRevision getMaterialRevisionAtLastParseAttempt(MaterialUpdateCompletedMessage message) { MaterialRevision lastParseRevision; try { String materialRevisionAtLastAttempt = repoConfigDataSource.getRevisionAtLastAttempt(message.getMaterial().config()); if (materialRevisionAtLastAttempt == null) return null; lastParseRevision = materialChecker.findSpecificRevision(message.getMaterial(), materialRevisionAtLastAttempt); } catch (Exception ex) { LOGGER.error("[Config Material Update] failed to get last parsed material revision. Reason: {}", ex.getMessage()); lastParseRevision = null; } return lastParseRevision; } }
public void expandForScheduling(Material material, Materials addTheExpandedMaterialsHere) { MaterialConfigs materialConfigs = new MaterialConfigs(); expandForScheduling(material.config(), materialConfigs); addTheExpandedMaterialsHere.addAll(materialConfigConverter.toMaterials(materialConfigs)); }
private void updateConfigurationFromCheckout(File folder, Modification modification, Material material) { Revision revision = new StringRevision(modification.getRevision()); MaterialPoller poller = this.materialService.getPollerImplementation(material); poller.checkout(material, folder, revision, this.subprocessExecutionContext); this.repoConfigDataSource.onCheckoutComplete(material.config(), folder, modification); }
public boolean isRevisionsOfSharedMaterialsIgnored(MaterialRevisions revisions) { MaterialConfigs unsharedScmMaterialConfigs = unsharedMaterialConfigs(); List<PipelineConfigQueueEntry> queue = new ArrayList<>(buildQueue()); for (MaterialRevision revision : revisions) { Material material = revision.getMaterial(); MaterialConfig materialConfig = material.config(); if (unsharedScmMaterialConfigs.hasMaterialWithFingerprint(materialConfig) || revision.isDependencyMaterialRevision()) { continue; } if (isThisMaterialIgnored(queue, revision, materialConfig)) { return true; } } return false; }
} else if (latestModification.findRevisionFor(material.config()) .hasChangedSince(lastParseRevision)) {
@Theory public void shouldBeSameObject_WhenConversionIsDoneFromMaterialConfigToMaterialAndBack(MaterialConfig materialConfig) throws Exception { Material materialFromConfig = materialConfigConverter.toMaterial(materialConfig); MaterialConfig materialConfigConvertedBackFromMaterial = materialFromConfig.config(); assertThat(materialConfigConvertedBackFromMaterial, is(materialConfig)); assertTrue(message("Material <-> MaterialConfig conversion failed.", materialConfigConvertedBackFromMaterial, materialConfig), reflectionEquals(materialConfigConvertedBackFromMaterial, materialConfig)); assertThat(materialFromConfig.getFingerprint(), is(materialConfig.getFingerprint())); assertThat(materialFromConfig.isAutoUpdate(), is(materialConfig.isAutoUpdate())); assertThat(materialConfigConvertedBackFromMaterial.getFingerprint(), is(materialConfig.getFingerprint())); assertPasswordIsCorrect(materialConfig); assertPasswordIsCorrect(materialFromConfig); assertPasswordIsCorrect(materialConfigConvertedBackFromMaterial); }
public Pipeline pipelineWithPasswordAwareBuildCauseByBuildId(final long buildId) { Pipeline pipeline = pipelineDao.pipelineWithMaterialsAndModsByBuildId(buildId); MaterialRevisions scheduledRevs = pipeline.getBuildCause().getMaterialRevisions(); MaterialConfigs knownMaterials = knownMaterials(pipeline, scheduledRevs); for (MaterialRevision materialRevision : scheduledRevs) { MaterialConfig materialConfig = materialFrom(knownMaterials, materialRevision); Material usedMaterial = materialRevision.getMaterial(); if (materialConfig == null) { final JobInstance jobInstance = jobInstanceService.buildByIdWithTransitions(buildId); scheduleService.failJob(jobInstance); final String message = "Cannot load job '" + jobInstance.buildLocator() + "' because material " + usedMaterial.config() + " was not found in config."; final String description = "Job for pipeline '" + jobInstance.buildLocator() + "' has been failed as one or more material configurations were either changed or removed."; transactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override public void afterCommit() { final ServerHealthState error = ServerHealthState.error(message, description, HealthStateType.general(HealthStateScope.forJob(jobInstance.getPipelineName(), jobInstance.getStageName(), jobInstance.getName()))); error.setTimeout(Timeout.FIVE_MINUTES); serverHealthService.update(error); appendToConsoleLog(jobInstance, message); appendToConsoleLog(jobInstance, description); } }); throw new StaleMaterialsOnBuildCause(message); } usedMaterial.updateFromConfig(materialConfig); } return pipeline; }
@Test public void shouldUnderstandIfHasNewRevisions() throws Exception { PipelineInstanceModel instanceModel = PipelineInstanceModel.createPipeline("pipelineName", -1, "1", BuildCause.createManualForced(), new StageInstanceModels()); MaterialRevisions latest = ModificationsMother.createHgMaterialRevisions(); instanceModel.setMaterialConfigs(new MaterialConfigs(latest.getMaterialRevision(0).getMaterial().config())); instanceModel.setLatestRevisions(latest); PipelineModel pipelineModel = new PipelineModel(instanceModel.getName(), true, true, PipelinePauseInfo.notPaused()); pipelineModel.addPipelineInstance(instanceModel); instanceModel.setMaterialRevisionsOnBuildCause(MaterialRevisions.EMPTY); assertThat(pipelineModel.hasNewRevisions(), is(true)); instanceModel.setMaterialRevisionsOnBuildCause(latest); assertThat(pipelineModel.hasNewRevisions(), is(false)); }
public static PipelineModel pipeline() { PipelineModel pipelineModel = new PipelineModel("pipe1", true, true, PipelinePauseInfo.notPaused()); MaterialRevisions materialRevisions = ModificationsMother.createHgMaterialRevisions(); PipelineInstanceModel instanceModel = PipelineInstanceModel.createPipeline("pipe1", -1, "label1", BuildCause.createWithModifications(materialRevisions, "foo-bar"), new StageInstanceModels()); instanceModel.setMaterialConfigs(new MaterialConfigs(materialRevisions.getMaterialRevision(0).getMaterial().config())); instanceModel.setLatestRevisions(materialRevisions); pipelineModel.addPipelineInstance(instanceModel); return pipelineModel; } }