groovy 如何确保Jenkins管道阶段始终执行,即使前一个阶段失败也是如此?

cbeh67ev  于 2022-11-01  发布在  Jenkins
关注(0)|答案(3)|浏览(181)

我正在寻找一个Jenkinsfile的例子,有一个步骤,总是执行,即使前一个步骤失败。
我想确保在失败的情况下存档一些构建结果,并且我需要能够在最后有一个始终运行的步骤。
我如何才能做到这一点?

jum4pzuy

jum4pzuy1#

我们转而使用Jenkinsfile声明性管道,它可以让我们做以下事情:

pipeline {
    agent any
    stages {
        stage('Test') {
            steps {
                sh './gradlew check'
            }
        }
    }
    post {
        always {
            junit 'build/reports/**/*.xml'
        }
    }
}

参考文献:
Jenkins Pipeline Syntax

qzlgjiam

qzlgjiam2#

try {
         sh "false"
    } finally {

        stage 'finalize'
        echo "I will always run!"
    }
chhqkbe1

chhqkbe13#

另一种可能性是将parallel区段与lock结合使用。例如:

pipeline {
    stages {
        parallel {
            stage('Stage 1') {
                steps {
                    lock('MY_LOCK') {
                        echo 'do stuff 1'
                    }
                }
            }
            stage('Stage 2') {
                steps {
                    lock('MY_LOCK') {
                        echo 'do stuff 2'
                    }
                }
            }
        }
    }
}

如果为并行部分设置了快速失败选项,则并行部分中的并行阶段仅中止同一并行部分中的其他阶段。请参阅文档。

相关问题