Den*_*boy 5 jenkins jenkins-pipeline
我正在使用声明性管道。这部分的工作原理:
steps {
script {
if ('xxx' == 'cloud') {
sh 'xxx'
} else {
sh 'xxx'
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我想使用when遵循更具声明性的管道语法。我尝试过这样的事情:
stage ('Newman run') {
when {
expression { "xxx" == "cloud" }
}
steps {
echo 'Use proxy for cloud'
sh 'xx'
}
when {
expression { "cloud" == "cloud" }
}
steps {
echo 'Do not use proxy (non-cloud)'
sh 'xxx'
}
Run Code Online (Sandbox Code Playgroud)
但这没有用。如何在声明性管道中的a 之后指定一种“ else”语句。when或者如果这不起作用,推荐的方法是什么?
可能重复如何在 Jenkins 的声明性管道中执行简单的 if 语句
您发布的第一个片段是一个很好的方法。您可以在第二阶段使用“not”指令,如下所示:
stage('then') {
when {
<condition>
}
steps {
...
}
}
stage('else') {
when {
not {
<condition>
}
}
steps {
...
}
}
Run Code Online (Sandbox Code Playgroud)
但这看起来并不比将其包装在“脚本”语句中更好,因为您甚至会维护该条件两次。它是出现在您的管道中的两个独立的阶段。
因此,请保留脚本块内的 if-then-else。
理由:声明式管道的想法是保持简单,而不包含复杂的算法。当您想在 Jenkinsfile 中使用 if 语句、循环等时,问问自己是否在做正确的事情。使用这些东西如果一般来说没有错的话,但可能有一个更简单的解决方案可以解决您的问题。
| 归档时间: |
|
| 查看次数: |
10393 次 |
| 最近记录: |