public static PipelineTemplateConfig createTemplateWithParams(String templateName, String... paramNameAndValue) { PipelineTemplateConfig template = createTemplate(templateName); for (String nameAndValue : paramNameAndValue) { template.get(0).getJobs().get(0).addVariable(String.format("name-%s", nameAndValue), String.format("value-#{%s}", nameAndValue)); } return template; } }
@Test public void shouldSupportEnvironmentVariablesInAJob() throws Exception { String content = configWithPipeline( "<pipeline name='pipeline1'>" + " <materials>" + " <svn url ='svnurl'/>" + " </materials>" + " <stage name='mingle'>" + " <jobs>" + " <job name='do-something'>" + " <environmentvariables>" + " <variable name='JOB_VARIABLE'><value>job variable</value></variable>" + " </environmentvariables>" + " </job>" + " </jobs>" + " </stage>" + "</pipeline>", CONFIG_SCHEMA_VERSION); CruiseConfig cruiseConfig = ConfigMigrator.loadWithMigration(content).config; JobConfig jobConfig = new JobConfig("do-something"); jobConfig.addVariable("JOB_VARIABLE", "job variable"); assertThat(cruiseConfig.findJob("pipeline1", "mingle", "do-something"), is(jobConfig)); }
@Test public void shouldCreatePipelineInstanceWithEnvironmentVariablesOverriddenAccordingToScope() { StageConfig stageConfig = StageConfigMother.custom("stage", "foo", "bar"); JobConfig fooConfig = stageConfig.jobConfigByConfigName(new CaseInsensitiveString("foo")); fooConfig.addVariable("foo", "foo"); JobConfig barConfig = stageConfig.jobConfigByConfigName(new CaseInsensitiveString("bar")); barConfig.addVariable("foo", "bar"); MaterialConfigs materialConfigs = MaterialConfigsMother.defaultMaterialConfigs(); PipelineConfig pipelineConfig = new PipelineConfig(new CaseInsensitiveString("pipeline"), materialConfigs, stageConfig); DefaultSchedulingContext context = new DefaultSchedulingContext("anonymous"); Pipeline instance = instanceFactory.createPipelineInstance(pipelineConfig, ModificationsMother.forceBuild(pipelineConfig), context, "some-md5", new TimeProvider()); assertThat(instance.findStage("stage").findJob("foo").getPlan().getVariables(), is(new EnvironmentVariables(Arrays.asList(new EnvironmentVariable("foo", "foo"))))); assertThat(instance.findStage("stage").findJob("bar").getPlan().getVariables(), is(new EnvironmentVariables(Arrays.asList(new EnvironmentVariable("foo", "bar"))))); }
private StageConfig getStageConfig(String stageName, String jobName) { JobConfig jobConfig = new JobConfig(new CaseInsensitiveString(jobName)); jobConfig.addTask(new AntTask()); jobConfig.addTask(new ExecTask("command", "", "workingDir")); jobConfig.artifactConfigs().add(new BuildArtifactConfig("src", "dest")); jobConfig.addVariable("env1", "val1"); jobConfig.addResourceConfig("powerful"); JobConfigs jobConfigs = new JobConfigs(jobConfig); return new StageConfig(new CaseInsensitiveString(stageName), jobConfigs); }