问题描述
在Jenkins Pipeline中定义了一个包含复选框多选参数的声明性流水线。他想要通过Jenkins CLI调用该流水线,并将传递给NAMES
参数的值用于选定复选框。然而,在尝试通过Jenkins CLI客户端调用流水线时,却无法正确传递参数值,导致无法实现预期效果。
解决方案
请注意以下操作可能因版本差异而有所不同。
在 Jenkins Pipeline 中使用extendedChoice
类型的参数时,需要注意参数的传递方式。以下是解决方案示例,帮助你正确传递参数值并实现预期效果。
步骤1:修改Jenkins Pipeline
在Jenkins Pipeline的参数定义中,使用 extendedChoice
类型的参数时,将选项保存为一个字符串。因此,在Pipeline中获取参数值后,需要进行解析操作,将其分割成数组以便进一步处理。
pipeline {
agent any
parameters {
extendedChoice(
description: '',
multiSelectDelimiter: ',',
name: 'NAMES',
quoteValue: false,
saveJSONParameterToFile: false,
type: 'PT_CHECKBOX',
value: 'a,b,c', // 示例选项
visibleItemCount: 3
)
}
stages {
stage('Run on all') {
steps {
script {
def arr = params.NAMES.tokenize(',') // 解析参数值为数组
arr.each { t ->
echo "${t}" // 在这里处理每个选项,可以根据需要进行操作
}
}
}
}
}
}
步骤2:使用Jenkins CLI调用Pipeline
使用以下命令调用Jenkins CLI,并传递参数值作为选定的复选框。在这里,我们假设你已经正确配置了Jenkins CLI客户端。
java -jar jenkins-cli.jar -s http://localhost:8080 -auth u:p build "Your Pipeline Name" -p NAMES="a,b,c"
这将调用Jenkins Pipeline,并将选项 “a”、”b” 和 “c” 传递给 NAMES
参数。
补充说明
上述解决方案中,我们首先修改了Jenkins Pipeline,将参数值解析为数组。然后,通过Jenkins CLI调用Pipeline时,使用逗号分隔的方式传递参数值。在Pipeline内部,你可以根据实际需求对参数值进行进一步处理。
请注意,具体操作可能因Jenkins版本而异,建议根据实际情况进行调整和测试。
以上操作将帮助你成功通过Jenkins CLI调用包含extendedChoice
类型参数的Pipeline,并正确传递复选框的选定值。