Jenkins:即使构建失败,管道也始终返回 "SUCCESS"

标签 jenkins jenkins-pipeline

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

  • https://issues.jenkins-ci.org/browse/JENKINS-56402


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

    困境:
  • 使用声明式管道
  • 构建在远程执行器上运行
  • 构建失败
  • 点击帖子 { 失败 {} }
  • 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解决了这个问题。票证创建于:

  • https://issues.jenkins-ci.org/browse/JENKINS-56402

  • 用户和开发人员之间就这是否真的是一个错误进行了反复讨论。开发人员建议不要使用 currentBuild.result (不再)但许多人指出这是 BC 中断并导致了很多问题。

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

    如果您依赖此功能,请选择 currentBuild.resultcurrentBuild.currentResult ,我建议发布您对这个错误的评论。

    关于Jenkins:即使构建失败,管道也始终返回 "SUCCESS",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54992368/

    相关文章:

    jenkins - 在 Jenkinsfile 中使用 Tuple 时无法批准 RejectedAccessException

    jenkins - Jenkins 管道作业的 Cobertura 代码覆盖率报告

    php - 在 Jenkinsfile 中使用 Clover PHP 和 Checkstyle

    linux - 测试在 Jenkins 上损坏但在本地运行

    linux - 在Jenkins中使用maven exec插件运行nodejs

    bitbucket - Jenkins Bitbucket Branch Source Plugin 如何只构建 master 和 PR?

    maven - Jenkins Pipeline 和 SonarQube 设置

    groovy - 如何获取 Jenkins 上的构建步骤触发的构建的 url?

    java - 执行 Jenkins 构建时出错

    ubuntu - 如何使用 docker SSH 进入正在运行的容器