// add-jenkins-param.groovy // Adds a parameter to all jobs on a Jenkins instance. // The parameter is then exposed as an environment variable. import hudson.model.* key = 'GEM_SOURCE' value = 'http://rubygems.delivery.puppetlabs.net' for(job in Hudson.instance.items) { println("[ " + job.name + " ] setting " + key + "=" + value) newParam = new StringParameterDefinition(key, value) paramDef = job.getProperty(ParametersDefinitionProperty.class) if (paramDef == null) { newArrList = new ArrayList(1) newArrList.add(newParam) newParamDef = new ParametersDefinitionProperty(newArrList) job.addProperty(newParamDef) } else { // Parameters exist! We should check if this one exists already! // TODO: contains() isn't working for what we need. Walk the // params to see if the param already exists. if (!paramDef.parameterDefinitions.contains(newParam)) { paramDef.parameterDefinitions.add(newParam) } } job.save() println() }