Job DSL plugins allows you to add XML configuration to jobs config.xml files. You have to use configure closure and next specify whatever you want. For example I have such configuration:
<hudson.model.ParametersDefinitionProperty> <parameterDefinitions> <com.cwctravel.hudson.plugins.extended__choice__parameter.ExtendedChoiceParameterDefinition plugin="[email protected]"> <name>PRODUCT_REPO_URL</name> <description>ssh URL of the product repository</description> <quoteValue>false</quoteValue> <saveJSONParameterToFile>false</saveJSONParameterToFile> <visibleItemCount>10</visibleItemCount> <type>PT_SINGLE_SELECT</type> <groovyScript>import hudson.slaves.EnvironmentVariablesNodeProperty import jenkins.model.Jenkins Jenkins.get().globalNodeProperties.get(EnvironmentVariablesNodeProperty.class).envVars.get('PRODUCT_REPOSITORIES')</groovyScript> <bindings></bindings> <groovyClasspath></groovyClasspath> <defaultGroovyScript>import hudson.slaves.EnvironmentVariablesNodeProperty import jenkins.model.Jenkins Jenkins.get().globalNodeProperties.get(EnvironmentVariablesNodeProperty.class).envVars.get('PRODUCT_REPOSITORY_DEFAULT')</defaultGroovyScript> <defaultBindings></defaultBindings> <defaultGroovyClasspath></defaultGroovyClasspath> <multiSelectDelimiter>,</multiSelectDelimiter> <projectName>try-to-upgrade-dependencies</projectName> </com.cwctravel.hudson.plugins.extended__choice__parameter.ExtendedChoiceParameterDefinition> </parameterDefinitions> </hudson.model.ParametersDefinitionProperty>
Now I can generate it by adding the following code:
configure { project -> project / 'properties' << 'hudson.model.ParametersDefinitionProperty' { parameterDefinitions { 'com.cwctravel.hudson.plugins.extended__choice__parameter.ExtendedChoiceParameterDefinition'(plugin: '[email protected]') { delegate.name('PRODUCT_REPO_URL') delegate.description('ssh URL of the product repository') delegate.quoteValue(false) delegate.saveJSONParameterToFile(false) delegate.visibleItemCount(10) delegate.type('PT_SINGLE_SELECT') delegate.groovyScript("""import hudson.slaves.EnvironmentVariablesNodeProperty import jenkins.model.Jenkins Jenkins.get().globalNodeProperties.get(EnvironmentVariablesNodeProperty.class).envVars.get('PRODUCT_REPOSITORIES')""") delegate.defaultGroovyScript("""import hudson.slaves.EnvironmentVariablesNodeProperty import jenkins.model.Jenkins Jenkins.get().globalNodeProperties.get(EnvironmentVariablesNodeProperty.class).envVars.get('PRODUCT_REPOSITORY_DEFAULT')""") delegate.multiSelectDelimiter(',') delegate.projectName('try-to-upgrade-dependencies') } } } }
The final result:
<hudson.model.ParametersDefinitionProperty> <parameterDefinitions> <com.cwctravel.hudson.plugins.extended__choice__parameter.ExtendedChoiceParameterDefinition plugin="[email protected]"> <name>PRODUCT_REPO_URL</name> <description>ssh URL of the product repository</description> <quoteValue>false</quoteValue> <saveJSONParameterToFile>false</saveJSONParameterToFile> <visibleItemCount>10</visibleItemCount> <type>PT_SINGLE_SELECT</type> <groovyScript>import hudson.slaves.EnvironmentVariablesNodeProperty import jenkins.model.Jenkins Jenkins.get().globalNodeProperties.get(EnvironmentVariablesNodeProperty.class).envVars.get('PRODUCT_REPOSITORIES')</groovyScript> <defaultGroovyScript>import hudson.slaves.EnvironmentVariablesNodeProperty import jenkins.model.Jenkins Jenkins.get().globalNodeProperties.get(EnvironmentVariablesNodeProperty.class).envVars.get('PRODUCT_REPOSITORY_DEFAULT')</defaultGroovyScript> <multiSelectDelimiter>,</multiSelectDelimiter> <projectName>try-to-upgrade-dependencies</projectName> </com.cwctravel.hudson.plugins.extended__choice__parameter.ExtendedChoiceParameterDefinition> </parameterDefinitions> </hudson.model.ParametersDefinitionProperty>