首页 文章

Groovy DSL for Extended选择参数插件

提问于
浏览
0

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

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

善意的帮助 .

2 回答

  • 1

    几个月前我经历了同样的过程 . 我发现这篇文章非常有用 - http://www.devexp.eu/2014/10/26/use-unsupported-jenkins-plugins-with-jenkins-dsl .

    这是一个示例代码段:

    configure {
        project->
            project / 'properties' << 'hudson.model.ParametersDefinitionProperty' {
            parameterDefinitions {
                'com.cwctravel.hudson.plugins.extended__choice__parameter.ExtendedChoiceParameterDefinition' {
                    name 'TARGET_ENVS'
                    quoteValue 'false'
                    saveJSONParameterToFile 'false'
                    visibleItemCount '15'
                    type 'PT_CHECKBOX'
                    value "${deployTargets}"
                    multiSelectDelimiter ','
                    projectName "${jobName}"
                }
            }
        }
    }
    

    本文建议在DSL作业定义的末尾添加“configure”代码块,但这对我不起作用 . 我最终把代码块放在定义的开头 .

    祝好运

  • 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>
    

相关问题