我使用groovy DSL将我的Jenkins作业配置转换为代码。能够转换除扩展选择参数插件配置之外的所有代码。
我是一个groovy脚本,它执行一些API调用并获取值并作为选择返回到作业中的defied参数。我已经对它进行了测试并且工作正常。但是,当我尝试将其自动化/转换为Groovy DSL时,我没有从插件获得足够的支持,而是找不到任何可以帮助我解决这种情况的文档。
请帮助。
答案 0 :(得分:0)
Job DSL插件使您可以将XML配置添加到作业config.xml
文件中。您必须使用configure
闭包,然后指定所需的内容。例如,我有这样的配置:
<hudson.model.ParametersDefinitionProperty>
<parameterDefinitions>
<com.cwctravel.hudson.plugins.extended__choice__parameter.ExtendedChoiceParameterDefinition plugin="extended-choice-parameter@0.76">
<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>
现在我可以通过添加以下代码来生成它:
configure {
project -> project / 'properties' << 'hudson.model.ParametersDefinitionProperty' {
parameterDefinitions {
'com.cwctravel.hudson.plugins.extended__choice__parameter.ExtendedChoiceParameterDefinition'(plugin: 'extended-choice-parameter@0.76') {
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')
}
}
}
}
最终结果:
<hudson.model.ParametersDefinitionProperty>
<parameterDefinitions>
<com.cwctravel.hudson.plugins.extended__choice__parameter.ExtendedChoiceParameterDefinition plugin="extended-choice-parameter@0.76">
<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>