如何解决为什么条件在詹金斯管道阻塞时不起作用?
我坚持了!在表达式的前面,以便它的计算结果为true,但是跳过了该阶段。
pipeline {
agent any
environment
{
REQUIRED_REPO_CLEAN = false
REQUIRED_REPO_SYNC = true
}
stages {
stage('Hello') {
steps {
echo 'Hello World'
echo "${env.REQUIRED_REPO_CLEAN}"
echo "${env.REQUIRED_REPO_SYNC}"
}
}
stage('Hello1') {
when {
allOf {
expression { params.REQUIRED_REPO_SYNC }
expression { params.REQUIRED_REPO_CLEAN }
}
}
steps {
echo 'Hello World1'
echo "${env.REQUIRED_REPO_CLEAN}"
echo "${env.REQUIRED_REPO_SYNC}"
}
}
stage('Hello2') {
when {
allOf {
expression { params.REQUIRED_REPO_SYNC }
expression { !(params.REQUIRED_REPO_CLEAN) }
}
}
steps {
echo 'Hello World2'
echo "${env.REQUIRED_REPO_CLEAN}"
echo "${env.REQUIRED_REPO_SYNC}"
}
}
}
}
这是我跑步时的输出。
[Pipeline] { (Hello)
[Pipeline] echo
Hello World
[Pipeline] echo
false
[Pipeline] echo
true
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Hello1)
Stage "Hello1" skipped due to when conditional
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Hello2)
Stage "Hello2" skipped due to when conditional
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
如果您观察到以上输出,则两个阶段都将跳过,因为条件返回为false。 但是,对于第二阶段,Hello2,我保持!在第二个表达式前面,因此它应该为真。 我在第一段代码环境块中为这些值分配了值。
我也尝试了以下部分。
when {
allOf {
expression { params.REQUIRED_REPO_SYNC }
not{expression { params.REQUIRED_REPO_CLEAN }}
}
when {
allOf {
expression { params.REQUIRED_REPO_SYNC }
expression { return params.REQUIRED_REPO_CLEAN != True}
}
如果我将它们作为参数添加到Jenkins UI中,而不是在环境部分中添加,则只有它可以工作。因此,我更改了tp env.REQUIRED_REPO_CLEAN而不是params.REQUIRED_REPO_CLEAN。但这也不起作用,因为它当时同时在两个阶段中运行。 一些值将保留在参数中,而某些值将保留在环境节点中。两种情况下如何处理?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。