【发布时间】:2017-06-26 05:35:35
【问题描述】:
在我的 Jenkins 多管道项目中,我有一个这样的输入步骤:
input message: 'Merge', parameters: [[$class: 'BooleanParameterDefinition', defaultValue: true, description: '', name: "Merge ${branchConfig.merge} to ${env.BRANCH_NAME}?"]]
我通过调用这个 url 开始这项工作:
http://user:api-token@awesome.jenkins.de/job/myTest/job/dev/build
现在我想添加一个像这样的 GET 参数:
http://user:api-token@awesome.jenkins.de/job/myTest/job/dev/build?skipInput=true
我现在的问题是,如何在 groovy 中获取这个参数?
更新:在第一条评论之后,我做了以下事情:
// Add parameter to skip MergeInput.
properties([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'BooleanParameterDefinition', name: 'skipMergeInput', defaultValue: false]]]])
并像这样调整输入:
input message: 'Merge', parameters: [[$class: 'BooleanParameterDefinition', defaultValue: params.skipMergeInput, description: '', name: "Merge ${branchConfig.merge} to ${env.BRANCH_NAME}?"]]
当我现在开始工作时,它会显示一个弹出窗口,询问应设置的值。但无论我决定什么,输入总是错误的。我正在尝试找出问题所在,然后会更新我的帖子。
更新 2: 所以我继续调试。我在我的 groovy 脚本中添加了以下内容:
// Add parameter to skip MergeInput.
def doMerge = properties([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'BooleanParameterDefinition', name: 'doMerge', defaultValue: true]]]])
println doMerge;
输出返回 NULL,当我在做类似的事情时
println params.doMerge
它告诉我 params 没有定义。知道出了什么问题吗?
更新 3:
调用网址:/job/dg_test/job/master/buildWithParameters?test=true
Groovy 脚本:
properties([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'BooleanParameterDefinition', name: 'test', defaultValue: false]]]])
println params.test
结果:
No such property: params for class: groovy.lang.Binding
【问题讨论】:
标签: url jenkins groovy parameters