private List<PluggableTask> getPluggableTask(PipelineTemplateConfig templateConfig) { List<PluggableTask> pluggableTasks = new ArrayList<>(); for (StageConfig stage : templateConfig.getStages()) { for (JobConfig job : stage.getJobs()) { for (Task task : job.getTasks()) { if (task instanceof PluggableTask) { pluggableTasks.add((PluggableTask) task); } } } } return pluggableTasks; }
private List<PluggableTask> pluggableTask(PipelineConfig config) { List<PluggableTask> tasks = new ArrayList<>(); for (StageConfig stageConfig : config.getStages()) { for (JobConfig jobConfig : stageConfig.getJobs()) { for (Task task : jobConfig.getTasks()) { if (task instanceof PluggableTask) { tasks.add((PluggableTask) task); } } } } return tasks; }
private void cachePublishAndFetchExternalConfig() { externalArtifactConfigs = new ArrayList<>(); fetchExternalArtifactTasks = new ArrayList<>(); for (StageConfig stageConfig : getStages()) { for (JobConfig jobConfig : stageConfig.getJobs()) { externalArtifactConfigs.addAll(jobConfig.artifactConfigs().getPluggableArtifactConfigs()); for (Task task : jobConfig.getTasks()) { if (task instanceof FetchPluggableArtifactTask) { fetchExternalArtifactTasks.add((FetchPluggableArtifactTask) task); } } } } }
private void cachePublishAndFetchExternalConfig() { externalArtifactConfigs = new ArrayList<>(); fetchExternalArtifactTasks = new ArrayList<>(); for (StageConfig stageConfig : getStages()) { for (JobConfig jobConfig : stageConfig.getJobs()) { externalArtifactConfigs.addAll(jobConfig.artifactConfigs().getPluggableArtifactConfigs()); for (Task task : jobConfig.getTasks()) { if (task instanceof FetchPluggableArtifactTask) { fetchExternalArtifactTasks.add((FetchPluggableArtifactTask) task); } } } } }
private void validateFetchTasks(JobConfig jobConfig, PipelineConfigSaveValidationContext contextForTasks) { for (Task task : jobConfig.getTasks()) { if (task instanceof AbstractFetchTask) { task.validate(contextForTasks); this.errors().addAll(task.errors()); } } }
public static List<Builder> createBuildersAssumingAllExecTasks(CruiseConfig config, String pipelineName, String stageName, String jobName) { Tasks tasks = config.jobConfigByName(pipelineName, stageName, jobName, true).getTasks(); ArrayList<Builder> builders = new ArrayList<>(); for (Task task : tasks) { builders.add(builderFor((ExecTask) task)); } return builders; }
public void encryptSecureProperties(CruiseConfig preprocessedConfig, PipelineConfig preprocessedPipelineConfig, JobConfig preprocessedJobConfig) { List<PluggableArtifactConfig> artifactConfigs = artifactConfigs().getPluggableArtifactConfigs(); List<PluggableArtifactConfig> preprocessedArtifactConfigs = preprocessedJobConfig.artifactConfigs().getPluggableArtifactConfigs(); artifactConfigs.forEach(artifactConfig -> { artifactConfig.encryptSecureProperties(preprocessedConfig, preprocessedArtifactConfigs.get(artifactConfigs.indexOf(artifactConfig))); }); tasks.forEach(task -> { if (task instanceof FetchPluggableArtifactTask) { ((FetchPluggableArtifactTask) task).encryptSecureProperties(preprocessedConfig, preprocessedPipelineConfig, (FetchPluggableArtifactTask) preprocessedJobConfig.getTasks().get(tasks.indexOf(task))); } }); }
private void clearSelfPipelineNameInFetchTask(PipelineConfig clone) { for (StageConfig stage : clone) { for (JobConfig job : stage.getJobs()) { for (Task task : job.getTasks()) { if (task instanceof FetchTask) { FetchTask fetchTask = (FetchTask) task; if (this.name().equals(fetchTask.getTargetPipelineName())) { fetchTask.setPipelineName(new CaseInsensitiveString("")); } } } } } }
@Test public void shouldCopyAttributeValuesFromAttributeMap() throws Exception { config = new JobConfig();//override the setup mock TaskFactory taskFactory = mock(TaskFactory.class); ExecTask emptyExecTask = new ExecTask(); when(taskFactory.taskInstanceFor(emptyExecTask.getTaskType())).thenReturn(emptyExecTask); config.setConfigAttributes(DataStructureUtils.m(JobConfig.NAME, "foo-job", JobConfig.TASKS, DataStructureUtils.m(Tasks.TASK_OPTIONS, "exec", "exec", DataStructureUtils.m(Task.TASK_TYPE, "exec", ExecTask.COMMAND, "ls", ExecTask.ARGS, "-la", ExecTask.WORKING_DIR, "/tmp"))), taskFactory); assertThat(config.name(), is(new CaseInsensitiveString("foo-job"))); assertThat(config.getTasks().get(0), is(new ExecTask("ls", "-la", "/tmp"))); assertThat(config.getTasks().size(), is(1)); }
@Test public void shouldNotSetTasksIfNoTasksGiven() throws Exception { config = new JobConfig(); AntTask task = new AntTask(); task.setTarget("hello"); config.addTask(task); config.setConfigAttributes(m()); AntTask taskAfterUpdate = (AntTask) config.getTasks().get(0); assertThat(taskAfterUpdate.getTarget(), is("hello")); assertThat(config.getTasks().size(), is(1)); config.setConfigAttributes(m(JobConfig.TASKS, null)); assertThat(config.getTasks().size(), is(0)); }
private void validateFetchTasksForOtherPipelines(PipelineConfigSaveValidationContext validationContext, PipelineConfig downstreamPipeline) { for (StageConfig stageConfig : downstreamPipeline.getStages()) { for (JobConfig jobConfig : stageConfig.getJobs()) { for (Task task : jobConfig.getTasks()) { if (task instanceof FetchTask) { FetchTask fetchTask = (FetchTask) task; if (fetchTask.getPipelineNamePathFromAncestor() != null && !StringUtils.isBlank(CaseInsensitiveString.str(fetchTask.getPipelineNamePathFromAncestor().getPath())) && fetchTask.getPipelineNamePathFromAncestor().pathIncludingAncestor().contains(pipelineConfig.name())) { fetchTask = new Cloner().deepClone(fetchTask); fetchTask.validateTask(validationContext.withParent(downstreamPipeline).withParent(stageConfig).withParent(jobConfig)); List<String> allErrors = fetchTask.errors().getAll(); for (String error : allErrors) { pipelineConfig.errors().add("base", error); } } } } } } }
Tasks tasks = jobConfig.getTasks(); assertThat(tasks.size(), is(1)); assertThat(tasks.get(0) instanceof PluggableTask, is(true));
JobConfig fromJob = fromStage.jobConfigByConfigName(toJob.name()); copy(fromJob, toJob); copyCollectionErrors(fromJob.getTasks(), toJob.getTasks()); copyCollectionErrors(fromJob.artifactConfigs(), toJob.artifactConfigs()); copyCollectionErrors(fromJob.getTabs(), toJob.getTabs()); copyCollectionErrors(fromJob.getProperties(), toJob.getProperties()); copyCollectionErrors(fromJob.getVariables(), toJob.getVariables()); Tasks toTasks = toJob.getTasks(); Tasks fromTasks = fromJob.getTasks(); copyCollectionErrors(fromTasks, toTasks); for (int i = 0; i < toTasks.size(); i++) {
public static void toJSON(OutputWriter jsonWriter, JobConfig jobConfig) { if (!jobConfig.errors().isEmpty()) { jsonWriter.addChild("errors", errorWriter -> { HashMap<String, String> errorMapping = new HashMap<>(); errorMapping.put("runType", "run_instance_count"); new ErrorGetter(errorMapping).toJSON(errorWriter, jobConfig); }); } jsonWriter.addIfNotNull("name", jobConfig.name()); addRunInstanceCount(jsonWriter, jobConfig); addTimeout(jsonWriter, jobConfig); jsonWriter.addIfNotNull("elastic_profile_id", jobConfig.getElasticProfileId()); jsonWriter.addChildList("environment_variables", envVarsWriter -> EnvironmentVariableRepresenter.toJSON(envVarsWriter, jobConfig.getVariables())); jsonWriter.addChildList("resources", getResourceNames(jobConfig)); jsonWriter.addChildList("tasks", tasksWriter -> TaskRepresenter.toJSONArray(tasksWriter, jobConfig.getTasks())); jsonWriter.addChildList("tabs", tabsWriter -> TabConfigRepresenter.toJSONArray(tabsWriter, jobConfig.getTabs())); jsonWriter.addChildList("artifacts", getArtifacts(jobConfig)); if (jobConfig.getProperties().isEmpty()) { jsonWriter.renderNull("properties"); } else { jsonWriter.addChildList("properties", propertiesWriter -> PropertyConfigRepresenter.toJSONArray(propertiesWriter, jobConfig.getProperties())); } }
public static void toJSON(OutputWriter jsonWriter, JobConfig jobConfig) { if (!jobConfig.errors().isEmpty()) { jsonWriter.addChild("errors", errorWriter -> { HashMap<String, String> errorMapping = new HashMap<>(); errorMapping.put("runType", "run_instance_count"); new ErrorGetter(errorMapping).toJSON(errorWriter, jobConfig); }); } jsonWriter.addIfNotNull("name", jobConfig.name()); addRunInstanceCount(jsonWriter, jobConfig); addTimeout(jsonWriter, jobConfig); jsonWriter.addIfNotNull("elastic_profile_id", jobConfig.getElasticProfileId()); jsonWriter.addChildList("environment_variables", envVarsWriter -> EnvironmentVariableRepresenter.toJSON(envVarsWriter, jobConfig.getVariables())); jsonWriter.addChildList("resources", getResourceNames(jobConfig)); jsonWriter.addChildList("tasks", tasksWriter -> TaskRepresenter.toJSONArray(tasksWriter, jobConfig.getTasks())); jsonWriter.addChildList("tabs", tabsWriter -> TabConfigRepresenter.toJSONArray(tabsWriter, jobConfig.getTabs())); jsonWriter.addChildList("artifacts", getArtifacts(jobConfig)); if (jobConfig.getProperties().isEmpty()) { jsonWriter.renderNull("properties"); } else { jsonWriter.addChildList("properties", propertiesWriter -> PropertyConfigRepresenter.toJSONArray(propertiesWriter, jobConfig.getProperties())); } }
@Test public void shouldBuildTheValidationContextForAnOnCancelTask() { CruiseConfig config = GoConfigMother.configWithPipelines("pipeline-1"); PipelineConfig pipelineConfig = config.pipelineConfigByName(new CaseInsensitiveString("pipeline-1")); StageConfig stageConfig = pipelineConfig.get(0); JobConfig jobConfig = stageConfig.getJobs().get(0); ExecTask execTask = new ExecTask("ls", "-la", "dir"); Task mockTask = mock(Task.class); when(mockTask.errors()).thenReturn(new ConfigErrors()); execTask.setCancelTask(mockTask); jobConfig.addTask(execTask); config.validateAfterPreprocess(); verify(mockTask).validate(ConfigSaveValidationContext.forChain( config, config.getGroups(), config.getGroups().findGroup("defaultGroup"), pipelineConfig, stageConfig, stageConfig.getJobs(), jobConfig, jobConfig.getTasks(), execTask, execTask.onCancelConfig())); }
@Test public void shouldReturnDuplicateWithPipelineNameEmptyIfFetchArtifactTaskIsFetchingFromSamePipeline() { PipelineConfig pipelineConfig = PipelineConfigMother.createPipelineConfig("somePipeline", "stage", "job"); StageConfig stageConfig = pipelineConfig.get(0); JobConfig jobConfig = stageConfig.getJobs().get(0); Tasks originalTasks = jobConfig.getTasks(); originalTasks.add(new FetchTask(pipelineConfig.name(), stageConfig.name(), jobConfig.name(), "src", "dest")); originalTasks.add(new FetchTask(new CaseInsensitiveString("some_other_pipeline"), stageConfig.name(), jobConfig.name(), "src", "dest")); PipelineConfig clone = pipelineConfig.duplicate(); Tasks clonedTasks = clone.get(0).getJobs().get(0).getTasks(); assertThat(((FetchTask) clonedTasks.get(0)).getTargetPipelineName(), is(new CaseInsensitiveString(""))); assertThat(((FetchTask) clonedTasks.get(1)).getTargetPipelineName(), is(new CaseInsensitiveString("some_other_pipeline"))); assertThat(((FetchTask) originalTasks.get(0)).getTargetPipelineName(), is(pipelineConfig.name())); }
Tasks tasks = jobConfig.getTasks(); if (crTasks != null) for (CRTask crTask : crTasks) {
PluggableTask task = (PluggableTask) pipelineConfig.getStage("mingle").getJobs().getJob(new CaseInsensitiveString("do-something")).getTasks().first();