如何正确编写关于Jenkins管道Jenkinsfile中的BooleanParameter的if语句?

时间:2016-08-08 15:08:50

标签: jenkins jenkins-pipeline

我正在设置Jenkins管道Jenkins文件,我想检查是否设置了布尔参数。

这是文件的相关部分:

node ("master") {
        stage 'Setup' (
                [[$class: 'BooleanParameterValue', name: 'BUILD_SNAPSHOT', value: 'Boolean.valueOf(BUILD_SNAPSHOT)']],

据我所知,这是访问booleanparameter的方法,但我不知道如何陈述IF语句本身。

我正在考虑做类似的事情:

if(BooleanParameterValue['BUILD_SNAPSHOT']){...

请写这句话的正确方法是什么?

3 个答案:

答案 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,但可能是buildSnapshotisBuildSnapshot,因为它是一个参数,而不是常量。

答案 1 :(得分:8)

管道参数可以通过3种方式访问​​布尔参数:

  1. 作为裸参数,例如:isFoo

  2. env映射中,例如:env.isFoo

  3. 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'){ ... }

相关问题