用于扩展选择参数插件的Groovy DSL

时间:2017-10-24 01:45:45

标签: jenkins groovy

我使用groovy DSL将我的Jenkins作业配置转换为代码。能够转换除扩展选择参数插件配置之外的所有代码。

我是一个groovy脚本,它执行一些API调用并获取值并作为选择返回到作业中的defied参数。我已经对它进行了测试并且工作正常。但是,当我尝试将其自动化/转换为Groovy DSL时,我没有从插件获得足够的支持,而是找不到任何可以帮助我解决这种情况的文档。

请帮助。

1 个答案:

答案 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(&apos;PRODUCT_REPOSITORIES&apos;)</groovyScript>
      <bindings></bindings>
      <groovyClasspath></groovyClasspath>
      <defaultGroovyScript>import hudson.slaves.EnvironmentVariablesNodeProperty
import jenkins.model.Jenkins

Jenkins.get().globalNodeProperties.get(EnvironmentVariablesNodeProperty.class).envVars.get(&apos;PRODUCT_REPOSITORY_DEFAULT&apos;)</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>