我正在使用groovy DSL将我的Jenkins作业配置转换为代码 . 能够转换除扩展选择参数插件配置之外的所有代码 .
我有一个groovy脚本,它执行一些API调用并获取值并作为选择返回到作业中的defied参数 . 我测试过它并且工作正常 . 但是,当我尝试将其自动化/转换为Groovy DSL时,我没有从插件获得足够的支持,而是找不到任何可以帮助我解决这种情况的文档 .
善意的帮助 .
几个月前我经历了同样的过程 . 我发现这篇文章非常有用 - 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”代码块,但这对我不起作用 . 我最终把代码块放在定义的开头 .
祝好运
Job DSL插件允许您将XML配置添加到作业 config.xml 文件 . 您必须使用 configure 闭包,然后指定您想要的任何内容 . 例如,我有这样的配置:
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>
2 回答
几个月前我经历了同样的过程 . 我发现这篇文章非常有用 - http://www.devexp.eu/2014/10/26/use-unsupported-jenkins-plugins-with-jenkins-dsl .
这是一个示例代码段:
本文建议在DSL作业定义的末尾添加“configure”代码块,但这对我不起作用 . 我最终把代码块放在定义的开头 .
祝好运
Job DSL插件允许您将XML配置添加到作业
config.xml
文件 . 您必须使用configure
闭包,然后指定您想要的任何内容 . 例如,我有这样的配置:现在我可以通过添加以下代码来生成它:
最终结果: