首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Jenkins pipeline Jenkinsfile中正确地编写一条关于BooleanParameter的if语句?

问如何在Jenkins pipeline Jenkinsfile中正确地编写一条关于BooleanParameter的if语句?
EN

Stack Overflow用户
提问于 2016-08-08 23:08:50
回答 3查看 52.4K关注 0票数 16

我正在设置一个Jenkins管道Jenkinsfile,我想检查是否设置了setting参数。

以下是文件的相关部分:

代码语言:javascript
复制
node ("master") {
        stage 'Setup' (
                [[$class: 'BooleanParameterValue', name: 'BUILD_SNAPSHOT', value: 'Boolean.valueOf(BUILD_SNAPSHOT)']],

据我所知,这是访问boolean参数的方法,但我不确定如何声明IF语句本身。

我在考虑做一些像这样的事情:

代码语言:javascript
复制
if(BooleanParameterValue['BUILD_SNAPSHOT']){...

请告诉我这句话的正确写法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-08 23:20:14

答案其实比这简单得多!根据pipeline documention,如果您定义了一个布尔参数isFoo,您可以在Groovy中仅使用它的名称来访问它,因此您的脚本实际上将如下所示:

代码语言:javascript
复制
node {
   stage 'Setup'
   echo "${isFoo}"   // Usage inside a string
   if(isFoo) {       // Very simple "if" usage
       echo "Param isFoo is true"
       ...
   }
}

顺便说一句,你可能不应该叫你的参数BUILD_SNAPSHOT,而应该叫buildSnapshot或者isBuildSnapshot,因为它是一个参数,而不是常量。

票数 14
EN

Stack Overflow用户

发布于 2020-04-14 08:05:09

您的管道脚本可以通过以下三种方式访问布尔参数:

作为纯参数的

  1. ,例如:isFoo

来自env.isFoo映射的

  1. ,例如:env

来自params.isFoo映射的

  1. ,例如:params

如果您使用1)或2)访问isFoo,它将有一个字符串值( "true“或"false")。

如果你使用3)访问isFoo,它将有一个布尔值。

因此,测试脚本中的isFoo参数的最不容易混淆的方法如下:

代码语言:javascript
复制
if (params.isFoo) {
   ....
}

或者,您可以像这样测试它:

代码语言:javascript
复制
if (isFoo.toBoolean()) {
   ....
}​​​​​​​​​​​​​​​​​​

或

代码语言:javascript
复制
if (env.isFoo.toBoolean()) {
   ....
}​​​​​​​​​​​​​​​​​​

需要使用toBoolean()将"true"字符串转换为布尔true,并将"false"字符串转换为布尔false。

票数 16
EN

Stack Overflow用户

发布于 2019-04-24 00:41:50

简单地执行不能保证其正常工作的if(isFoo){...} :)为了安全起见,使用if(isFoo.toString()=='true'){ ... }

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38832723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档