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