public static JobConfig elasticJob(String elasticProfileId) { JobConfig jobConfig = jobWithNoResourceRequirement(); jobConfig.setElasticProfileId(elasticProfileId); return jobConfig; }
public void setConfigAttributes(Object attributes, TaskFactory taskFactory) { Map attributesMap = (Map) attributes; if (attributesMap.containsKey(NAME)) { String nameString = (String) attributesMap.get(NAME); jobName = nameString == null ? null : new CaseInsensitiveString(nameString); } if (attributesMap.containsKey("elasticProfileId")) { String elasticProfileId = (String) attributesMap.get("elasticProfileId"); setElasticProfileId(StringUtils.isBlank(elasticProfileId) ? null : elasticProfileId); } if (attributesMap.containsKey(TASKS)) { tasks.setConfigAttributes(attributesMap.get(TASKS), taskFactory); } if (attributesMap.containsKey(ENVIRONMENT_VARIABLES)) { variables.setConfigAttributes(attributesMap.get(ENVIRONMENT_VARIABLES)); } if (attributesMap.containsKey(TABS)) { tabs.setConfigAttributes(attributesMap.get(TABS)); } if (attributesMap.containsKey(RESOURCES)) { resourceConfigs.importFromCsv((String) attributesMap.get(RESOURCES)); } if (attributesMap.containsKey(ARTIFACT_CONFIGS)) { artifactConfigs.setConfigAttributes(attributesMap.get(ARTIFACT_CONFIGS)); } setTimeoutAttribute(attributesMap); setJobRunTypeAttribute(attributesMap); }
public static PipelineConfig pipelineWithElasticJobs(String elasticProfileId, String pipelineName, String stageName, String... jobNames) { final PipelineConfig pipelineConfig = createPipelineConfig(pipelineName, stageName, jobNames); final StageConfig stage = pipelineConfig.getStage(stageName); for (JobConfig job : stage.getJobs()) { job.setElasticProfileId(elasticProfileId); } return pipelineConfig; }
@Test public void shouldValidateElasticProfileId() { PipelineConfig pipelineConfig=PipelineConfigMother.createPipelineConfigWithJobConfigs("pipeline1"); JobConfig jobConfig = JobConfigMother.createJobConfigWithJobNameAndEmptyResources(); ValidationContext validationContext=mock(ValidationContext.class); jobConfig.setResourceConfigs(new ResourceConfigs()); jobConfig.setElasticProfileId("non-existent-profile-id"); when(validationContext.getPipeline()).thenReturn(pipelineConfig); when(validationContext.getStage()).thenReturn(pipelineConfig.getFirstStageConfig()); when(validationContext.isValidProfileId("non-existent-profile-id")).thenReturn(false); jobConfig.validate(validationContext); assertThat(jobConfig.errors().isEmpty(), is(false)); assertThat(jobConfig.errors().on(JobConfig.ELASTIC_PROFILE_ID), is("No profile defined corresponding to profile_id 'non-existent-profile-id'")); }
@Test public void shouldValidateAgainstPresenceOfBothResourcesAndElasticProfileId() { PipelineConfig pipelineConfig=PipelineConfigMother.createPipelineConfigWithJobConfigs("pipeline1"); JobConfig jobConfig = JobConfigMother.createJobConfigWithJobNameAndEmptyResources(); ValidationContext validationContext=mock(ValidationContext.class); jobConfig.setElasticProfileId("docker.unit-test"); when(validationContext.getPipeline()).thenReturn(pipelineConfig); when(validationContext.getStage()).thenReturn(pipelineConfig.getFirstStageConfig()); jobConfig.validate(validationContext); assertThat(jobConfig.errors().isEmpty(), is(false)); assertThat(jobConfig.errors().on(JobConfig.ELASTIC_PROFILE_ID), is("Job cannot have both `resource` and `elasticProfileId`")); assertThat(jobConfig.errors().on(JobConfig.RESOURCES), is("Job cannot have both `resource` and `elasticProfileId`")); }
@Test public void shouldValidateAgainstSettingRunOnAllAgentsForAJobAssignedToElasticAgent() { JobConfig jobConfig = new JobConfig(new CaseInsensitiveString("test")); jobConfig.setRunOnAllAgents(true); jobConfig.setElasticProfileId("ubuntu-dev"); jobConfig.validate(ConfigSaveValidationContext.forChain(new BasicCruiseConfig())); ConfigErrors configErrors = jobConfig.errors(); assertThat(configErrors.isEmpty(), is(false)); assertThat(configErrors.on(JobConfig.RUN_TYPE), is("Job cannot be set to 'run on all agents' when assigned to an elastic agent")); }
public static PipelineConfig templateBasedPipelineWithElasticJobs(String templateName, String elasticProfileId, String pipelineName, String stageName, String... jobNames) { final StageConfig stageConfig = new StageConfig(new CaseInsensitiveString(stageName), BuildPlanMother.jobConfigs(jobNames)); for (JobConfig job : stageConfig.getJobs()) { job.setElasticProfileId(elasticProfileId); } final PipelineConfig pipelineConfig = new PipelineConfig(); pipelineConfig.setName(pipelineName); pipelineConfig.setTemplateName(new CaseInsensitiveString(templateName)); pipelineConfig.usingTemplate(new PipelineTemplateConfig(new CaseInsensitiveString(templateName), stageConfig)); return pipelineConfig; }
jobConfig.setElasticProfileId(crJob.getElasticProfileId());