private void validateParams(PipelineConfig pipelineConfig, ParamsConfig paramsConfig) { for (ParamConfig paramConfig : paramsConfig) { if (!pipelineConfig.getParams().hasParamNamed(paramConfig.getName())) { this.addError("params", String.format("The param '%s' is not defined in pipeline '%s'", paramConfig.getName(), pipelineConfig.getName())); } } }
CruiseConfig cruiseConfig = ConfigMigrator.loadWithMigration(content).config; PipelineConfig pipelineConfig = cruiseConfig.pipelineConfigByName(new CaseInsensitiveString("framework")); ParamsConfig params = pipelineConfig.getParams(); assertThat(params.getParamNamed("first"), is(new ParamConfig("first", "foo"))); assertThat(params.getParamNamed("second"), is(new ParamConfig("second", "bar")));
@Test public void shouldNotResolveOptedOutConfigSubtags() throws NoSuchFieldException { PipelineConfig pipelineConfig = PipelineConfigMother.createPipelineConfig("cruise", "dev", "ant"); pipelineConfig.setLabelTemplate("2.1-${COUNT}-#{foo}-bar-#{bar}"); pipelineConfig.addParam(param("#{foo}-name", "#{foo}-#{bar}-baz")); new ParamResolver(new ParamSubstitutionHandlerFactory(params(param("foo", "pavan"), param("bar", "jj"))), fieldCache).resolve(pipelineConfig); assertThat(pipelineConfig.getLabelTemplate(), is("2.1-${COUNT}-pavan-bar-jj")); assertThat(pipelineConfig.getParams().get(0), is(param("#{foo}-name", "#{foo}-#{bar}-baz"))); assertThat(pipelineConfig.getClass().getDeclaredField("params").getAnnotation(SkipParameterResolution.class), isA(SkipParameterResolution.class)); }
public static void toJSON(OutputWriter jsonWriter, PipelineConfig pipelineConfig) { jsonWriter.addLinks(linksWriter -> linksWriter .addLink("self", Routes.PipelineConfig.name(pipelineConfig.getName().toString())) .addAbsoluteLink("doc", Routes.PipelineConfig.DOC) .addLink("find", Routes.PipelineConfig.find())); // This is needed for the case when there are no materials defined. Refer to pipeline_config_representer.rb#152 pipelineConfig.errors().addAll(pipelineConfig.materialConfigs().errors()); if (!pipelineConfig.errors().isEmpty()) { jsonWriter.addChild("errors", errorWriter -> { HashMap<String, String> errorMapping = new HashMap<>(); errorMapping.put("labelTemplate", "label_template"); errorMapping.put("params", "parameters"); errorMapping.put("variables", "environment_variables"); errorMapping.put("trackingTool", "tracking_tool"); new ErrorGetter(errorMapping).toJSON(errorWriter, pipelineConfig); }); } jsonWriter.add("label_template", pipelineConfig.getLabelTemplate()); jsonWriter.add("lock_behavior", pipelineConfig.getLockBehavior()); jsonWriter.add("name", pipelineConfig.name()); jsonWriter.add("template", pipelineConfig.getTemplateName()); writeOrigin(jsonWriter, pipelineConfig.getOrigin()); jsonWriter.addChildList("parameters", paramsWriter -> ParamRepresenter.toJSONArray(paramsWriter, pipelineConfig.getParams())); jsonWriter.addChildList("environment_variables", envVarsWriter -> EnvironmentVariableRepresenter.toJSON(envVarsWriter, pipelineConfig.getVariables())); jsonWriter.addChildList("materials", materialsWriter -> MaterialRepresenter.toJSONArray(materialsWriter, pipelineConfig.materialConfigs())); writeStages(jsonWriter, pipelineConfig); writeTrackingTool(jsonWriter, pipelineConfig); writeTimer(jsonWriter, pipelineConfig.getTimer()); }
isValid = pipelineConfig.getParams().validateTree(contextForChildren) && isValid; isValid = pipelineConfig.getVariables().validateTree(contextForChildren) && isValid; if (pipelineConfig.getTrackingTool() != null)
@Test public void shouldValidateTree() { PipelineConfig pipeline = new PipelineConfig(); pipeline.setName("pipeline"); pipeline.addEnvironmentVariable("", ""); pipeline.addParam(new ParamConfig("", "")); pipeline.setMaterialConfigs(new MaterialConfigs(MaterialConfigsMother.gitMaterialConfig(), MaterialConfigsMother.svnMaterialConfig())); StageConfig stage1 = getStageConfig("stage1", "s1j1"); StageConfig stage2 = getStageConfig("stage2", "s2j1"); pipeline.getStages().add(stage1); pipeline.getStages().add(stage2); BasicCruiseConfig cruiseConfig = new BasicCruiseConfig(new BasicPipelineConfigs("group", new Authorization(), pipeline)); boolean isValid = pipeline.validateTree(PipelineConfigSaveValidationContext.forChain(true, cruiseConfig.getGroups().first().getGroup(), cruiseConfig, pipeline)); assertThat(isValid, is(false)); assertThat(pipeline.getVariables().get(0).errors().firstError(), is("Environment Variable cannot have an empty name for pipeline 'pipeline'.")); assertThat(pipeline.getParams().get(0).errors().firstError(), is("Parameter cannot have an empty name for pipeline 'pipeline'.")); assertThat(pipeline.materialConfigs().errors().isEmpty(), is(true)); assertThat(pipeline.materialConfigs().get(0).errors().isEmpty(), is(true)); assertThat(pipeline.materialConfigs().get(1).errors().isEmpty(), is(true)); assertThat(pipeline.errors().getAll().isEmpty(), is(true)); }
CRPipeline pipelineConfigToCRPipeline(PipelineConfig pipelineConfig, String groupName) { CRPipeline crPipeline = new CRPipeline(); crPipeline.setGroupName(groupName); crPipeline.setName(pipelineConfig.name().toString()); for(StageConfig stage: pipelineConfig.getStages()) { crPipeline.addStage(stageToCRStage(stage)); } for (ParamConfig param: pipelineConfig.getParams()) { crPipeline.addParameter(paramToCRParam(param)); } for (MaterialConfig material: pipelineConfig.materialConfigs()) { crPipeline.addMaterial(materialToCRMaterial(material)); } for (EnvironmentVariableConfig envVar: pipelineConfig.getVariables()) { crPipeline.addEnvironmentVariable(environmentVariableConfigToCREnvironmentVariable(envVar)); } if (pipelineConfig.getTemplateName() != null) crPipeline.setTemplate(pipelineConfig.getTemplateName().toString()); crPipeline.setTrackingTool(trackingToolToCRTrackingTool(pipelineConfig.getTrackingTool())); crPipeline.setTimer(timerConfigToCRTimer(pipelineConfig.getTimer())); crPipeline.setLock_behavior(pipelineConfig.getLockBehavior()); if (pipelineConfig.getMingleConfig().isDefined()) { crPipeline.setMingle(mingleToCRMingle(pipelineConfig.getMingleConfig())); } crPipeline.setLabelTemplate(pipelineConfig.getLabelTemplate()); return crPipeline; }
ParamsConfig params = pipelineConfig.getParams(); for (CRParameter crParameter : crPipeline.getParameters()) { params.add(toParamConfig(crParameter));