如果一个阶段或步骤也失败,请执行所有阶段和步骤

时间:2019-02-05 07:55:56

标签: jenkins-pipeline

我正在设置下面将提到的Jenkins管道。如果第一阶段失败了,我的构建就会中止,但是我要执行第一阶段的所有阶段和阶段中提到的步骤。

pipeline {
agent none

stages {
    stage("build and test the project") {
        agent {
            docker "coolhub/vault:jenkins"
        }
        stages {
           stage("build") {
               steps {
                   sh 'echo "build.sh"'
               }
           }
           stage("test") {
               steps {
                   sh 'echo "test.sh" '
               }
           }
        }
    }
  }
}

我想执行所有阶段以及阶段中提到的所有步骤。 毕竟,阶段要执行,然后最终需要中止詹金斯的工作,并显示失败的阶段和步骤。

2 个答案:

答案 0 :(得分:0)

是的,除了尝试在脚本中捕获块外,目前没有办法做到这一点。 更多信息,请访问Ignore failure in pipeline build step

stage('someStage') {
    steps {
        script {
            try {
                build job: 'system-check-flow'
            } catch (err) {
                echo err
            }
        }
        echo currentBuild.result
    }
}

答案 1 :(得分:0)

在hakamairi的回答中,该阶段未标记为失败。现在可以使阶段失败,继续执行管道并选择构建结果:

pipeline {
    agent any
    stages {
        stage('1') {
            steps {
                sh 'exit 0'
            }
        }
        stage('2') {
            steps {
                catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
                    sh "exit 1"
                }
            }
        }
        stage('3') {
            steps {
                sh 'exit 0'
            }
        }
    }
}

在上面的示例中,所有阶段都将执行,管道将成功,但是阶段2将显示为失败:

Pipeline Example

您可能已经猜到了,可以随意选择buildResultstageResult,以防不稳定或其他原因。您甚至可以使构建失败并继续执行管道。

只需确保您的Jenkins是最新的,因为这是一个相当新的功能。