首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins:管道总是返回“成功”,即使构建失败。

问Jenkins:管道总是返回“成功”,即使构建失败。
EN

Stack Overflow用户
提问于 2019-03-04 22:12:26
回答 2查看 9K关注 0票数 6

UPDATE:这似乎是在Pipeline: Declarative插件版本1.3.5中引入的一个bug --降级到1.3.4.1解决了这个问题。票证创建于:

在远程执行程序上使用时,如何获得构建的真实状态?

进退两难:

  • 使用声明式管道
  • 构建在远程执行器上运行。
  • 构建失败
  • 命中后{故障{} }
  • currentBuild.result为NULL,currentBuild.currentResult为成功

当在远程执行程序上执行生成时,如何访问实际的失败?

代码视图:

代码语言:javascript
复制
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}"
        }
    }
}

以及产出:

代码语言:javascript
复制
[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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-08 16:18:19

(就我的问题发表“正式答复”):

这是在Pipeline: Declarative插件版本1.3.5中引入的"bug“--降级到1.3.4.1解决了这个问题。票证创建于:

对于这是否真的是一个bug,用户和开发人员之间还有四分之一的问题。devs建议不要再使用currentBuild.result了,但是很多人都指出这是BC中断,造成了很多问题。

问题已标记为Critical --可能会被回滚或重新开发以更好地实现。

如果您依赖这个特性,无论是currentBuild.result还是currentBuild.currentResult,我建议您在这个bug上发表评论。

票数 3
EN

Stack Overflow用户

发布于 2020-01-21 08:31:18

您可以使用“尝试捕捉”:

代码语言:javascript
复制
                        try {
                        sh "exit 1"
                        currentBuild.result = 'SUCCESS'
                        }catch (Exception err) {
                        currentBuild.result = 'FAILURE'
                        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54992368

复制
相关文章

相似问题

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