更新 :这似乎是在 Pipeline: Declarative
中引入的错误插件版本 1.3.5
- 降级到 1.3.4.1
解决了这个问题。票证创建于:
在远程执行器上使用时如何获得构建的真实状态?
困境:
currentBuild.result
为 NULL 和 currentBuild.currentResult
是成功在远程执行器上执行构建时如何访问实际失败?
代码 View :
pipeline {
agent any
stages {
stage("test run") {
steps {
sh "exit 1"
}
}
}
post {
always {
echo "I always run: ${currentBuild.result} <> ${currentBuild.currentResult}"
}
success {
echo "I'm successful: ${currentBuild.result} <> ${currentBuild.currentResult}"
}
failure {
echo "I failed: ${currentBuild.result} <> ${currentBuild.currentResult}"
}
fixed {
echo "I'm fixed!: ${currentBuild.result} <> ${currentBuild.currentResult}"
}
}
}
和输出:
[Pipeline] Start of Pipeline
[Pipeline] node
Running on build-096575a3-e6af-4fff-9ca1-84cc46ba4b86-f9b8d29c in /var/vcap/data/jenkins-slave/workspace/test-job
[Pipeline] {
[Pipeline] stage
[Pipeline] { (test run)
[Pipeline] sh
+ exit 1
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Declarative: Post Actions)
[Pipeline] echo
I always run: null <> SUCCESS
[Pipeline] echo
I failed: null <> SUCCESS
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 1
Finished: FAILURE
最佳答案
(针对我的问题发布“官方答案”):
这是 Pipeline: Declarative
中引入的“错误”插件版本 1.3.5
- 降级到 1.3.4.1
解决了这个问题。票证创建于:
用户和开发人员之间就这是否真的是一个错误进行了反复讨论。开发人员建议不要使用
currentBuild.result
(不再)但许多人指出这是 BC 中断并导致了很多问题。问题已标记
Critical
- 可能会回滚或重新开发以更好地实现。如果您依赖此功能,请选择
currentBuild.result
或 currentBuild.currentResult
,我建议发布您对这个错误的评论。
关于Jenkins:即使构建失败,管道也始终返回 "SUCCESS",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54992368/