private PipelineConfigDependencyGraph findUpstream(PipelineConfig currentPipeline) { List<PipelineConfigDependencyGraph> graphs = new ArrayList<>(); for (CaseInsensitiveString name : currentPipeline.upstreamPipelines()) { PipelineConfig pipelineConfig = getCurrentConfig().pipelineConfigByName(name); graphs.add(findUpstream(pipelineConfig)); } return new PipelineConfigDependencyGraph(currentPipeline, graphs.toArray(new PipelineConfigDependencyGraph[0])); }
public Validatable updatedNode(CruiseConfig cruiseConfig) { if (packageMaterialConfig.getPackageDefinition() != null) { return cruiseConfig.pipelineConfigByName(new CaseInsensitiveString(pipeline)).materialConfigs().get(packageMaterialConfig); } return packageMaterialConfig; }
private void populateUnrunStages(Node node) { List<Revision> revisions = node.revisions(); PipelineConfig pipelineConfig = goConfigService.getCurrentConfig().pipelineConfigByName(new CaseInsensitiveString(node.getName())); if (revisions.isEmpty()) { populateConfiguredStages(node, pipelineConfig); } for (Revision revision : revisions) { appendUnrunStages(pipelineConfig, (PipelineRevision) revision); } }
public ConfigForEdit<PipelineConfig> loadForEdit(String pipelineName, Username username, HttpLocalizedOperationResult result) { if (!canEditPipeline(pipelineName, username, result)) { return null; } GoConfigHolder configHolder = getConfigHolder(); configHolder = cloner.deepClone(configHolder); PipelineConfig config = configHolder.configForEdit.pipelineConfigByName(new CaseInsensitiveString(pipelineName)); return new ConfigForEdit<>(config, configHolder); }
@Override protected void updateConfig(CruiseConfig cruiseConfig) { PackageDefinition packageDefinition = getPackageDefinition(cruiseConfig); packageMaterialConfig = (PackageMaterialConfig) cruiseConfig.pipelineConfigByName(new CaseInsensitiveString(pipeline)).materialConfigs().get(packageMaterialConfig); packageMaterialConfig.setPackageDefinition(packageDefinition); } }
public FanInGraph(CruiseConfig cruiseConfig, CaseInsensitiveString root, MaterialRepository materialRepository, PipelineDao pipelineDao, SystemEnvironment systemEnvironment, MaterialConfigConverter materialConfigConverter) { this.cruiseConfig = cruiseConfig; this.materialRepository = materialRepository; this.pipelineDao = pipelineDao; this.pipelineName = root; this.systemEnvironment = systemEnvironment; this.materialConfigConverter = materialConfigConverter; PipelineConfig target = cruiseConfig.pipelineConfigByName(root); this.root = (DependencyFanInNode) FanInNodeFactory.create(new DependencyMaterialConfig(target.name(), target.get(0).name())); buildGraph(target); }
private boolean notAuthorized(String pipelineName, String pauseBy, LocalizedOperationResult result) { CruiseConfig cruiseConfig = goConfigService.getCurrentConfig(); PipelineConfig pipelineConfig = cruiseConfig.pipelineConfigByName(new CaseInsensitiveString(pipelineName)); if (securityService.hasOperatePermissionForGroup(new CaseInsensitiveString(pauseBy), cruiseConfig.findGroupOfPipeline(pipelineConfig).getGroup())) { return false; } result.forbidden(LocalizedMessage.forbiddenToEditPipeline(pipelineName), forbiddenForPipeline(pipelineName)); return true; }
@Before public void setup() { config = GoConfigMother.configWithPipelines("pipeline1", "pipeline2", "pipeline3", "go"); pipeline = config.pipelineConfigByName(new CaseInsensitiveString("go")); goConfigMother = new GoConfigMother(); }
public PipelineConfig addStageToPipeline(CruiseConfig cruiseConfig, String pipelineName, String stageName, String... buildNames) { StageConfig stageConfig = StageConfigMother.custom(stageName, defaultBuildPlans(buildNames)); PipelineConfig pipelineConfig = cruiseConfig.pipelineConfigByName(new CaseInsensitiveString(pipelineName)); pipelineConfig.add(stageConfig); return pipelineConfig; }
@Test public void shouldSetConfigOriginInPipeline_AfterLoadingConfigFile() throws Exception { CruiseConfig cruiseConfig = xmlLoader.loadConfigHolder(CONFIG).config; PipelineConfig pipelineConfig1 = cruiseConfig.pipelineConfigByName(new CaseInsensitiveString("pipeline1")); assertThat(pipelineConfig1.getOrigin(), is(new FileConfigOrigin())); }
@Test public void shouldAllowBothCounterAndMaterialNameInLabelTemplate() throws Exception { CruiseConfig cruiseConfig = ConfigMigrator.loadWithMigration(LABEL_TEMPLATE_WITH_LABEL_TEMPLATE("1.3.0-${COUNT}-${git}")).config; assertThat(cruiseConfig.pipelineConfigByName(new CaseInsensitiveString("cruise")).getLabelTemplate(), is("1.3.0-${COUNT}-${git}")); }
@Test public void shouldNotDefineATrackingToolWithoutARegex() throws Exception { CruiseConfig cruiseConfig = ConfigMigrator.load(ConfigFileFixture.ONE_PIPELINE); PipelineConfig pipelineConfig = cruiseConfig.pipelineConfigByName(new CaseInsensitiveString("pipeline1")); pipelineConfig.setTrackingTool(new TrackingTool("link", "")); try { xmlWriter.write(cruiseConfig, output, false); fail("should not save a trackingtool without a regex"); } catch (Exception e) { assertThat(e.getMessage(), containsString("Regex should be populated")); } }
@Test public void shouldWalkCruiseConfigObjectsParallelly() { CruiseConfig cruiseConfig = GoConfigMother.configWithPipelines("bad pipeline name"); CruiseConfig rawCruiseConfig = new Cloner().deepClone(cruiseConfig); MagicalGoConfigXmlLoader.validate(cruiseConfig); cruiseConfig.copyErrorsTo(rawCruiseConfig); assertThat(rawCruiseConfig.pipelineConfigByName(new CaseInsensitiveString("bad pipeline name")).errors(), is(cruiseConfig.pipelineConfigByName(new CaseInsensitiveString("bad pipeline name")).errors())); }
@Test public void shouldRemoveDuplicatedIgnoreTag() throws Exception { CruiseConfig cruiseConfig = ConfigMigrator.load(ConfigFileFixture.TWO_DUPLICATED_FILTER); int size = cruiseConfig.pipelineConfigByName(new CaseInsensitiveString("pipeline1")).materialConfigs().first().filter().size(); assertThat(size, is(1)); }
@Test public void shouldWriteJobProperties() throws Exception { String jobXml = "<job name=\"dev\">\n" + " <properties>\n" + " <property name=\"coverage\" src=\"reports/emma.html\" xpath=\"//coverage/class\" />\n" + " <property name=\"prop2\" src=\"test.xml\" xpath=\"//value\" />\n" + " </properties>\n" + "</job>"; CruiseConfig config = loader.loadConfigHolder(ConfigFileFixture.withJob(jobXml)).configForEdit; JobConfig jobConfig = config.pipelineConfigByName(new CaseInsensitiveString("pipeline1")).get(1).allBuildPlans().first(); assertThat(writer.toXmlPartial(jobConfig), is(jobXml)); }
@Test public void shouldSkipValidationIfExplicitlyToldWhileWritingConfig() throws Exception { CruiseConfig cruiseConfig = ConfigMigrator.load(ConfigFileFixture.ONE_PIPELINE); PipelineConfig pipelineConfig = cruiseConfig.pipelineConfigByName(new CaseInsensitiveString("pipeline1")); pipelineConfig.addEnvironmentVariable("name1", "value1"); pipelineConfig.addEnvironmentVariable("name1", "value1"); xmlWriter.write(cruiseConfig, output, true); assertThat(cruiseConfig.errors().isEmpty(), is(true)); }
public void setDependencyOn(CruiseConfig cruiseConfig, PipelineConfig pipelineConfig, String dependsOnPipeline, String dependsOnStage) { PipelineConfig config = cruiseConfig.pipelineConfigByName(pipelineConfig.name()); config.addMaterialConfig(new DependencyMaterialConfig(new CaseInsensitiveString(dependsOnPipeline), new CaseInsensitiveString(dependsOnStage))); }
@Test public void shouldCheckSCMMaterialsHaveDestinationCorrectly() { HgMaterialConfig materialConfigOne = new HgMaterialConfig("http://url1", null); materialConfigOne.setConfigAttributes(Collections.singletonMap(ScmMaterialConfig.FOLDER, "folder")); CruiseConfig config = GoConfigMother.configWithPipelines("one"); PipelineConfig pipelineOne = config.pipelineConfigByName(new CaseInsensitiveString("one")); pipelineOne.setMaterialConfigs((new MaterialConfigs(materialConfigOne))); assertThat(pipelineOne.materialConfigs().scmMaterialsHaveDestination(), is(true)); PluggableSCMMaterialConfig materialConfigTwo = new PluggableSCMMaterialConfig(null, SCMMother.create("scm-id"), null, null); pipelineOne.materialConfigs().add(materialConfigTwo); assertThat(pipelineOne.materialConfigs().scmMaterialsHaveDestination(), is(false)); }
@Test public void shouldNotRunMultipleMaterialsValidationIfPipelineContainsOnlyOneMaterial() { CruiseConfig config = GoConfigMother.configWithPipelines("one"); PipelineConfig pipelineOne = config.pipelineConfigByName(new CaseInsensitiveString("one")); SvnMaterialConfig svnMaterialConfig = MaterialConfigsMother.svnMaterialConfig(); svnMaterialConfig.setFolder(null); pipelineOne.setMaterialConfigs(new MaterialConfigs(svnMaterialConfig)); pipelineOne.materialConfigs().validate(ConfigSaveValidationContext.forChain(config)); assertThat(svnMaterialConfig.errors().toString(), svnMaterialConfig.errors().getAll().size(), is(0)); }
private void setDepedencyOn(CruiseConfig cruiseConfig, String toPipeline, String upstreamPipeline, String upstreamStage) { PipelineConfig targetPipeline = cruiseConfig.pipelineConfigByName(new CaseInsensitiveString(toPipeline)); targetPipeline.materialConfigs().clear(); targetPipeline.addMaterialConfig(new DependencyMaterialConfig(new CaseInsensitiveString(upstreamPipeline), new CaseInsensitiveString(upstreamStage))); }