public void addMaterialConfig(MaterialConfig materialConfig) { this.materialConfigs.add(materialConfig); }
public void expandForScheduling(MaterialConfig configuredMaterial, MaterialConfigs addTheExpandedMaterialConfigsHere) { addTheExpandedMaterialConfigsHere.add(configuredMaterial); if (configuredMaterial instanceof SvnMaterialConfig) { expandForSchedulingForSvnMaterial(configuredMaterial, addTheExpandedMaterialConfigsHere); } }
private void addMaterialConfig(MaterialConfig materialConfig, Map attributes) { materialConfig.setConfigAttributes(attributes); add(materialConfig); }
public MaterialConfigs convertToConfigs() { MaterialConfigs configs = new MaterialConfigs(); for (Material material : this) { configs.add(material.config()); } return configs; }
private void primeForMaterialValidations() { CruiseConfig cruiseConfig = getCruiseConfig(); fingerprintToMaterials = new HashMap<>(); for (PipelineConfig pipelineConfig : cruiseConfig.getAllPipelineConfigs()) { for (MaterialConfig material : pipelineConfig.materialConfigs()) { String fingerprint = material.getFingerprint(); if (!fingerprintToMaterials.containsKey(fingerprint)) { fingerprintToMaterials.put(fingerprint, new MaterialConfigs()); } MaterialConfigs materialsForFingerprint = fingerprintToMaterials.get(fingerprint); materialsForFingerprint.add(material); } } } }
public MaterialConfigs unsharedMaterialConfigs() { MaterialConfigs firstOrderMaterials = new MaterialConfigs(); List<PipelineConfigQueueEntry> queue = new ArrayList<>(buildQueue()); for (MaterialConfig materialConfig : current.materialConfigs()) { if (!existsOnAnyOfPipelinesIn(queue, materialConfig)) { firstOrderMaterials.add(materialConfig); } } return firstOrderMaterials; }
public static MaterialConfigs fromJSONArray(JsonReader jsonReader, ConfigHelperOptions options) { MaterialConfigs materialConfigs = new MaterialConfigs(); jsonReader.readArrayIfPresent("materials", materials -> { materials.forEach(material -> { materialConfigs.add(MaterialRepresenter.fromJSON(new JsonReader(material.getAsJsonObject()), options)); }); }); return materialConfigs; }
public static MaterialConfigs fromJSONArray(JsonReader jsonReader, ConfigHelperOptions options) { MaterialConfigs materialConfigs = new MaterialConfigs(); jsonReader.readArrayIfPresent("materials", materials -> { materials.forEach(material -> { materialConfigs.add(MaterialRepresenter.fromJSON(new JsonReader(material.getAsJsonObject()), options)); }); }); return materialConfigs; }
public static MaterialConfigs multipleMaterialConfigs() { MaterialConfigs materialConfigs = new MaterialConfigs(); materialConfigs.add(svnMaterialConfig("http://svnurl", null)); materialConfigs.add(hgMaterialConfig("http://hgurl", "hgdir")); materialConfigs.add(dependencyMaterialConfig("cruise", "dev")); return materialConfigs; }
public MaterialConfigs getMaterialConfigs(String username) { MaterialConfigs materialConfigs = new MaterialConfigs(); Set<String> materialFingerprints = new HashSet<>(); for (PipelineConfigs pipelineGroup : goConfigService.groups()) { if (securityService.hasViewPermissionForGroup(username, pipelineGroup.getGroup())) { for (PipelineConfig pipelineConfig : pipelineGroup) { for (MaterialConfig currentMaterialConfig : pipelineConfig.materialConfigs()) { if (!materialFingerprints.contains(currentMaterialConfig.getFingerprint())) { materialConfigs.add(currentMaterialConfig); materialFingerprints.add(currentMaterialConfig.getFingerprint()); } } } } } return materialConfigs; }
@Test public void shouldClearExistingAndSetHgConfigAttributesForMaterial() { MaterialConfigs materialConfigs = new MaterialConfigs(); materialConfigs.add(new HgMaterialConfig("", null)); materialConfigs.add(new SvnMaterialConfig("", "", "", false)); Map<String, String> hashMap = new HashMap<>(); hashMap.put(HgMaterialConfig.URL, "foo"); Map<String, Object> attributeMap = new HashMap<>(); attributeMap.put(AbstractMaterialConfig.MATERIAL_TYPE, HgMaterialConfig.TYPE); attributeMap.put(HgMaterialConfig.TYPE, hashMap); materialConfigs.setConfigAttributes(attributeMap); assertThat(materialConfigs.size(), is(1)); assertThat(materialConfigs.first(), is(new HgMaterialConfig("foo", null))); }
private void expandExternals(MaterialConfig configuredMaterial, MaterialConfigs expandedMaterials) { SvnMaterialConfig svnMaterialConfig = (SvnMaterialConfig) configuredMaterial; if (!svnMaterialConfig.isCheckExternals()) { return; } List<SvnExternal> urLs = svn(svnMaterialConfig).getAllExternalURLs(); for (SvnExternal externalUrl : urLs) { SvnMaterialConfig svnMaterial = new SvnMaterialConfig(externalUrl.getURL(), svnMaterialConfig.getUserName(), svnMaterialConfig.getPassword(), true, svnMaterialConfig.folderFor(externalUrl.getFolder())); svnMaterial.setFilter(svnMaterialConfig.filter()); expandedMaterials.add(svnMaterial); } }
@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)); }
public static PipelineConfig createManualTriggerPipelineConfig(MaterialConfig materialConfig, String pipelineName, String stageName, String... buildNames) { PipelineConfig pipelineConfig = createPipelineConfig(pipelineName, stageName, buildNames); pipelineConfig.materialConfigs().clear(); materialConfig.setName(new CaseInsensitiveString(String.format("%s-%s", pipelineName, materialConfig.getType()))); materialConfig.setAutoUpdate(false); pipelineConfig.materialConfigs().add(materialConfig); pipelineConfig.first().setApproval(Approval.manualApproval()); return pipelineConfig; }
public static PartialConfig pipelineWithDependencyMaterial(String name, PipelineConfig upstream, RepoConfigOrigin repoConfig) { PartialConfig partialConfig = withPipeline(name, repoConfig); PipelineConfig pipeline = partialConfig.getGroups().first().get(0); pipeline.materialConfigs().add(new DependencyMaterialConfig(upstream.name(), upstream.first().name())); return partialConfig; }
@Test public void shouldReturnTrueWhenOneOfPipelineMaterialsIsTheSameAsConfigOriginButDestinationIsDifferent() { PipelineConfig pipelineConfig = PipelineConfigMother.createPipelineConfig("pipeline", "stage", "build"); pipelineConfig.materialConfigs().clear(); GitMaterialConfig pipeMaterialConfig = new GitMaterialConfig("http://git"); pipeMaterialConfig.setFolder("dest1"); pipelineConfig.materialConfigs().add(pipeMaterialConfig); GitMaterialConfig repoMaterialConfig = new GitMaterialConfig("http://git"); pipelineConfig.setOrigin(new RepoConfigOrigin(new ConfigRepoConfig(repoMaterialConfig, "plugin"), "1233")); assertThat(pipelineConfig.isConfigOriginSameAsOneOfMaterials(), is(true)); }
@Test public void validate_shouldNotAllowPipelineWithSameRepositoryAndDisabledAutoUpdate() { CruiseConfig cruiseConfig = new BasicCruiseConfig(); GoConfigMother mother = new GoConfigMother(); MaterialConfigs materialConfigs = new MaterialConfigs(); SvnMaterialConfig svnInConfigRepo = new SvnMaterialConfig("url", false); SvnMaterialConfig svnInPipelineConfig = new SvnMaterialConfig("url", false); svnInConfigRepo.setAutoUpdate(true); svnInPipelineConfig.setAutoUpdate(false); materialConfigs.add(svnInPipelineConfig); ConfigRepoConfig configRepoConfig = new ConfigRepoConfig(svnInConfigRepo,"plug"); cruiseConfig.setConfigRepos(new ConfigReposConfig(configRepoConfig)); PipelineConfig pipeline1 = mother.addPipeline(cruiseConfig, "badpipe", "build", materialConfigs, "build"); configRepoConfig.validate(ConfigSaveValidationContext.forChain(cruiseConfig, new BasicPipelineConfigs(), pipeline1)); assertThat(svnInConfigRepo.errors().isEmpty(),is(false)); assertThat(svnInConfigRepo.errors().on("autoUpdate"), is("Material of type Subversion (url) is specified as a configuration repository and pipeline material with disabled autoUpdate. All copies of this material must have autoUpdate enabled or configuration repository must be removed")); }
@Test public void shouldAllowModifyingTheAutoUpdateFieldOfMaterials() throws Exception { GitMaterialConfig gitMaterial = new GitMaterialConfig("https://url", "master"); gitMaterial.setAutoUpdate(true); GitMaterialConfig modifiedGitMaterial = new GitMaterialConfig("https://url", "master"); modifiedGitMaterial.setAutoUpdate(false); MaterialConfigs configs = new MaterialConfigs(); configs.add(gitMaterial); CruiseConfig config = GoConfigMother.configWithPipelines("one"); PipelineConfig pipelineOne = config.pipelineConfigByName(new CaseInsensitiveString("one")); pipelineOne.setMaterialConfigs(new MaterialConfigs(modifiedGitMaterial)); configs.validate(ConfigSaveValidationContext.forChain(config)); assertTrue(gitMaterial.errors().isEmpty()); }
@Test public void shouldNotThrowWhenMaterialAndConfigOriginRevisionDontMatch_WhenManualTrigger() { SvnMaterial material = MaterialsMother.svnMaterial(); MaterialConfig materialConfig = material.config(); MaterialRevisions first = new MaterialRevisions( new MaterialRevision(material, oneModifiedFile("revision1")) ); BuildCause buildCause = BuildCause.createManualForced(); buildCause.setMaterialRevisions(first); PipelineConfig pipelineConfig = PipelineConfigMother.createPipelineConfigWithStages("pipe1", "build"); pipelineConfig.materialConfigs().clear(); pipelineConfig.materialConfigs().add(materialConfig); pipelineConfig.setOrigin(new RepoConfigOrigin(new ConfigRepoConfig(materialConfig,"plug"),"revision2")); buildCause.assertPipelineConfigAndMaterialRevisionMatch(pipelineConfig); }
@Test public void shouldNotThrowWhenMaterialAndConfigOriginRevisionMatch_WhenAutoTrigger() { SvnMaterial material = MaterialsMother.svnMaterial(); MaterialConfig materialConfig = material.config(); MaterialRevisions first = new MaterialRevisions( new MaterialRevision(material, oneModifiedFile("revision1")) ); BuildCause buildCause = BuildCause.createWithModifications(first,""); buildCause.setMaterialRevisions(first); PipelineConfig pipelineConfig = PipelineConfigMother.createPipelineConfigWithStages("pipe1", "build"); pipelineConfig.materialConfigs().clear(); pipelineConfig.materialConfigs().add(materialConfig); pipelineConfig.setOrigin(new RepoConfigOrigin(new ConfigRepoConfig(materialConfig,"plug"),"revision1")); buildCause.assertPipelineConfigAndMaterialRevisionMatch(pipelineConfig); }