public List<FetchTask> getFetchTasks() { List<FetchTask> fetchTasks = new ArrayList<>(); for (StageConfig stage : this) { for (JobConfig job : stage.getJobs()) { for (Task task : job.tasks()) { if (task instanceof FetchTask) { fetchTasks.add((FetchTask) task); } } } } return fetchTasks; }
@Override public List<Task> tasksForJob(String pipelineName, String stageName, String jobName) { return jobConfigByName(pipelineName, stageName, jobName, true).tasks(); }
@Override public void accept(TaskConfigVisitor visitor) { for (PipelineConfig pipelineConfig : pipelinesFromAllGroups()) { for (StageConfig stageConfig : pipelineConfig) { for (JobConfig jobConfig : stageConfig.allBuildPlans()) { for (Task task : jobConfig.tasks()) { if (!(task instanceof NullTask)) { visitor.visit(pipelineConfig, stageConfig, jobConfig, task); } } } } } }
@Test public void shouldLoadExecBuilder() throws Exception { CruiseConfig cruiseConfig = ConfigMigrator.loadWithMigration(CONFIG_WITH_NANT_AND_EXEC_BUILDER).config; JobConfig plan = cruiseConfig.jobConfigByName("pipeline1", "mingle", "cardlist", true); ExecTask builder = (ExecTask) plan.tasks().findFirstByType(ExecTask.class); assertThat(builder, is(new ExecTask("ls", "-la", "workdir"))); builder = (ExecTask) plan.tasks().get(2); assertThat(builder, is(new ExecTask("ls", "", (String) null))); }
@Test public void shouldLoadRakeBuilderWithEmptyOnCancel() throws Exception { CruiseConfig cruiseConfig = ConfigMigrator.loadWithMigration(CONFIG_WITH_NANT_AND_EXEC_BUILDER).config; JobConfig plan = cruiseConfig.jobConfigByName("pipeline1", "mingle", "cardlist", true); RakeTask builder = (RakeTask) plan.tasks().findFirstByType(RakeTask.class); assertThat(builder, notNullValue()); }
@Test public void shouldLoadTasksWithOnCancel() throws Exception { CruiseConfig config = ConfigMigrator.loadWithMigration(TASKS_WITH_ON_CANCEL).config; JobConfig job = config.jobConfigByName("pipeline1", "mingle", "cardlist", true); Task task = job.tasks().findFirstByType(AntTask.class); assertThat(task.hasCancelTask(), is(true)); assertThat(task.cancelTask(), is(new ExecTask("kill.rb", "", "utils"))); Task task2 = job.tasks().findFirstByType(ExecTask.class); assertThat(task2.hasCancelTask(), is(false)); }
@Test public void shouldWriteConfigWithTaskExecutionConditions() throws Exception { CruiseConfig cruiseConfig = ConfigMigrator.load(ConfigFileFixture.TASKS_WITH_CONDITION); xmlWriter.write(cruiseConfig, output, false); final ByteArrayInputStream inputStream = new ByteArrayInputStream(output.toByteArray()); CruiseConfig config = xmlLoader.loadConfigHolder(IOUtils.toString(inputStream, UTF_8)).config; JobConfig job = config.jobConfigByName("pipeline1", "mingle", "cardlist", true); assertThat(job.tasks().size(), is(2)); assertThat(job.tasks().findFirstByType(AntTask.class).getConditions().get(0), is(new RunIfConfig("failed"))); RunIfConfigs conditions = job.tasks().findFirstByType(NantTask.class).getConditions(); assertThat(conditions.get(0), is(new RunIfConfig("failed"))); assertThat(conditions.get(1), is(new RunIfConfig("any"))); assertThat(conditions.get(2), is(new RunIfConfig("passed"))); }
@Test public void shouldLoadNAntBuilder() throws Exception { CruiseConfig cruiseConfig = ConfigMigrator.loadWithMigration( CONFIG_WITH_NANT_AND_EXEC_BUILDER).config; JobConfig plan = cruiseConfig.jobConfigByName("pipeline1", "mingle", "cardlist", true); BuildTask builder = (BuildTask) plan.tasks().findFirstByType(NantTask.class); assertThat(builder.getTarget(), is("all")); }
@Test public void shouldLoadTasksWithExecutionCondition() throws Exception { CruiseConfig config = ConfigMigrator.loadWithMigration(TASKS_WITH_CONDITION).config; JobConfig job = config.jobConfigByName("pipeline1", "mingle", "cardlist", true); assertThat(job.tasks().size(), is(2)); assertThat(job.tasks().findFirstByType(AntTask.class).getConditions().get(0), is(new RunIfConfig("failed"))); RunIfConfigs conditions = job.tasks().findFirstByType(NantTask.class).getConditions(); assertThat(conditions.get(0), is(new RunIfConfig("failed"))); assertThat(conditions.get(1), is(new RunIfConfig("any"))); assertThat(conditions.get(2), is(new RunIfConfig("passed"))); }
@Test public void shouldAllowEmptyOnCancel() throws Exception { String buildXmlPartial = "<jobs>\n" + " <job name=\"functional\">\n" + " <tasks>\n" + " <exec command='ls'>\n" + " <oncancel/>\n" + " </exec>\n" + " </tasks>\n" + " </job>\n" + "</jobs>"; JobConfigs jobs = xmlLoader.fromXmlPartial(buildXmlPartial, JobConfigs.class); JobConfig job = jobs.first(); Tasks tasks = job.tasks(); assertThat(tasks.size(), is(1)); ExecTask execTask = (ExecTask) tasks.get(0); assertThat(execTask.cancelTask(), is(instanceOf(NullTask.class))); }
@Test public void shouldLoadAntBuilder() throws Exception { CruiseConfig cruiseConfig = xmlLoader.loadConfigHolder(CONFIG_WITH_ANT_BUILDER).config; JobConfig plan = cruiseConfig.jobConfigByName("pipeline1", "mingle", "cardlist", true); assertThat(plan.tasks(), iterableWithSize(1)); AntTask builder = (AntTask) plan.tasks().first(); assertThat(builder.getTarget(), is("all")); final ArtifactConfigs cardListArtifacts = cruiseConfig.jobConfigByName("pipeline1", "mingle", "cardlist", true).artifactConfigs(); assertThat(cardListArtifacts.size(), is(1)); ArtifactConfig artifactConfigPlan = cardListArtifacts.get(0); assertThat(artifactConfigPlan.getArtifactType(), is(ArtifactType.test)); }
@Test public void shouldSupportCommandWithWhiteSpace() throws Exception { String jobWithCommand = "<job name=\"functional\">\n" + " <tasks>\n" + " <exec command=\"c:\\program files\\cmd.exe\" args=\"arguments\" />\n" + " </tasks>\n" + " </job>\n"; String configWithCommand = withCommand(jobWithCommand); CruiseConfig cruiseConfig = ConfigMigrator.loadWithMigration(configWithCommand).config; Task task = cruiseConfig.pipelineConfigByName(new CaseInsensitiveString("pipeline1")).first().allBuildPlans().first().tasks().first(); assertThat(task, is(instanceOf(ExecTask.class))); assertThat(task, is(new ExecTask("c:\\program files\\cmd.exe", "arguments", (String) null))); }
@Test public void shouldLoadGetFromSvnPartialForDir() throws Exception { String buildXmlPartial = "<jobs>\n" + " <job name=\"functional\">\n" + " <tasks>\n" + " <fetchartifact artifactOrigin='gocd' stage='dev' job='unit' srcdir='dist' dest='lib' />\n" + " </tasks>\n" + " </job>\n" + "</jobs>"; JobConfigs jobs = xmlLoader.fromXmlPartial(buildXmlPartial, JobConfigs.class); JobConfig job = jobs.first(); Tasks fetch = job.tasks(); assertThat(fetch.size(), is(1)); FetchTask task = (FetchTask) fetch.first(); assertThat(task.getStage(), is(new CaseInsensitiveString("dev"))); assertThat(task.getJob().toString(), is("unit")); assertThat(task.getSrc(), is("dist")); assertThat(task.getDest(), is("lib")); }
.jobConfigByConfigName("job1").tasks().get(0)).getConfiguration(); assertThat(childFetchFromAncestorConfig.getProperty("k1").getEncryptedValue(), is(goCipher.encrypt("fetch_v1"))); assertThat(childFetchFromAncestorConfig.getProperty("k1").getConfigValue(), is(nullValue())); .jobConfigByConfigName("job1").tasks().get(1)).getConfiguration(); assertThat(childFetchFromParentConfig.getProperty("k1").getEncryptedValue(), is(goCipher.encrypt("fetch_v1"))); assertThat(childFetchFromParentConfig.getProperty("k1").getConfigValue(), is(nullValue()));
CRJob jobToCRJob(JobConfig jobConfig) { CRJob job = new CRJob(); job.setName(jobConfig.name().toString()); job.setResources(jobConfig.resourceConfigs().resourceNames()); job.setElasticProfileId(jobConfig.getElasticProfileId()); for (EnvironmentVariableConfig var: jobConfig.getVariables()) { job.addEnvironmentVariable(environmentVariableConfigToCREnvironmentVariable(var)); } for (ArtifactPropertyConfig prop: jobConfig.getProperties()) { job.addProperty(new CRPropertyGenerator(prop.getName(), prop.getSrc(), prop.getXpath())); } for(Tab tab: jobConfig.getTabs()) { job.addTab(new CRTab(tab.getName(), tab.getPath())); } for (ArtifactConfig artifactConfig: jobConfig.artifactConfigs()) { job.addArtifact(artifactConfigToCRArtifact(artifactConfig)); } if (jobConfig.isRunOnAllAgents()) { job.setRunOnAllAgents(jobConfig.isRunOnAllAgents()); } else { job.setRunInstanceCount(jobConfig.getRunInstanceCountValue()); } for (Task task: jobConfig.tasks()) { job.addTask(taskToCRTask(task)); } if (jobConfig.getTimeout() != null) { job.setTimeout(Integer.valueOf(jobConfig.getTimeout())); } return job; }
Configuration childFetchArtifactFromAncestorConfig = ((FetchPluggableArtifactTask) child.get(0).getJobs().first().tasks().get(0)).getConfiguration(); Configuration childFetchArtifactFromParentConfig = ((FetchPluggableArtifactTask) child.get(0).getJobs().first().tasks().get(1)).getConfiguration(); ArtifactStore dockerhubStore = config.getArtifactStores().first();