我在詹金斯有一条多分支管道。 我为要传递给脚本的每个参数定义了多个复选框(超过20个),然后该脚本将启动我的应用程序并运行相应的测试用例(这可能不是最佳解决方案,但此框架是在我加入当前公司之前创建的,不会重构它):
booleanParam(name: 'cluster_number', defaultValue: false, description: '')
booleanParam(name: 'post_cluster_wu', defaultValue: false, description: '')
etc.
我需要收集每个复选框的用户选择(true-false)。我更喜欢像这样循环执行
:sh """
for (element in params) {
// testing:
echo "${element.key} ${element.value}"
}
"""
但不断出现错误:
[Pipeline] End of Pipeline
groovy.lang.MissingPropertyException: No such property: element for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:264)
at org.kohsuke.groovy.sandbox.impl.Checker$6.call(Checker.java:288)
还尝试将循环放在shell脚本之外。到目前为止没有运气。
steps {
echo "username: ${params.OWNER_USERNAME}"
for (element in params) {
echo "${element.key} ${element.value}"
}
...
想知道是否有人可以遍历参数吗? 提前致谢!
答案 0 :(得分:2)
这有效:
pipeline {
agent any
parameters {
booleanParam(name: 'alpha', defaultValue: true)
booleanParam(name: 'beta', defaultValue: true)
booleanParam(name: 'gamma', defaultValue: false)
}
stages {
stage('only') {
steps {
script {
params.keySet().each {
echo "The value of the ${it} parameter is: ${params[it]}"
}
}
}
}
}
}