我正在设置Jenkins管道Jenkins文件,我想检查是否设置了布尔参数。
这是文件的相关部分:
node ("master") {
stage 'Setup' (
[[$class: 'BooleanParameterValue', name: 'BUILD_SNAPSHOT', value: 'Boolean.valueOf(BUILD_SNAPSHOT)']],
据我所知,这是访问booleanparameter的方法,但我不知道如何陈述IF语句本身。
我正在考虑做类似的事情:
if(BooleanParameterValue['BUILD_SNAPSHOT']){...
请写这句话的正确方法是什么?
答案 0 :(得分:10)
答案实际上比这更简单!
根据{{3}},如果你定义一个布尔参数isFoo
,你可以在你的Groovy中使用它的名字来访问它,所以你的脚本实际上看起来像:
node {
stage 'Setup'
echo "${isFoo}" // Usage inside a string
if(isFoo) { // Very simple "if" usage
echo "Param isFoo is true"
...
}
}
顺便说一句,你可能不应该调用你的参数BUILD_SNAPSHOT
,但可能是buildSnapshot
或isBuildSnapshot
,因为它是一个参数,而不是常量。
答案 1 :(得分:8)
管道参数可以通过3种方式访问布尔参数:
作为裸参数,例如:isFoo
在env
映射中,例如:env.isFoo
在params
地图中,例如:params.isFoo
如果您使用1)或2)访问isFoo
,则它将具有字符串值(“ true”或“ false”)。
如果使用3)访问isFoo
,它将具有布尔值。
因此,在脚本中测试isFoo
参数的最简单的方法(IMO)是这样的:
if (params.isFoo) {
....
}
或者,您可以像这样测试它:
if (isFoo.toBoolean()) {
....
}
或
if (env.isFoo.toBoolean()) {
....
}
需要toBoolean()
才能将"true"
字符串转换为布尔值true
,而将"false"
字符串转换为布尔值false
。
答案 2 :(得分:0)
仅仅做if(isFoo){...}
并不能保证它能正常工作:)为了安全起见,请使用if(isFoo.toString()=='true'){ ... }