public static PipelineConfigSaveValidationContext forChain(Boolean isPipelineBeingCreated, String groupName, Validatable... validatables) { PipelineConfigSaveValidationContext tail = new PipelineConfigSaveValidationContext(isPipelineBeingCreated, groupName, null); for (Validatable validatable : validatables) { tail = tail.withParent(validatable); } return tail; }
private void validatePartsOfPipelineConfig(PipelineConfig pipelineConfig, PipelineConfigSaveValidationContext contextForStages) { for (StageConfig stageConfig : pipelineConfig.getStages()) { PipelineConfigSaveValidationContext contextForChildren = contextForStages.withParent(stageConfig); validateStageApprovalAuthorization(stageConfig, contextForChildren); for (JobConfig jobConfig : stageConfig.getJobs()) { PipelineConfigSaveValidationContext contextForJobChildren = contextForChildren.withParent(jobConfig); validateFetchTasks(jobConfig, contextForJobChildren); validateElasticProfileId(jobConfig, contextForJobChildren); validatePluggableArtifactConfig(jobConfig, contextForJobChildren); } } }
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); } } } } } } }
private void validateDependencyMaterialsForDownstreams(PipelineConfigSaveValidationContext validationContext, CaseInsensitiveString selected, PipelineConfig downstreamPipeline) { Node dependenciesOfSelectedPipeline = validationContext.getDependencyMaterialsFor(selected); for (Node.DependencyNode dependencyNode : dependenciesOfSelectedPipeline.getDependencies()) { if (dependencyNode.getPipelineName().equals(pipelineConfig.name())) { for (MaterialConfig materialConfig : downstreamPipeline.materialConfigs()) { if (materialConfig instanceof DependencyMaterialConfig) { DependencyMaterialConfig dependencyMaterialConfig = new Cloner().deepClone((DependencyMaterialConfig) materialConfig); dependencyMaterialConfig.validate(validationContext.withParent(downstreamPipeline)); List<String> allErrors = dependencyMaterialConfig.errors().getAll(); for (String error : allErrors) { pipelineConfig.errors().add("base", error); } } } } } }
PipelineConfigSaveValidationContext contextForChildren = validationContext.withParent(pipelineConfig);