代码执行失败,导致管道后失败

问题描述 投票:1回答:1

我正在使用脚本化管道来构建管道,并且从https://jenkins.io/doc/pipeline/tour/post/中可以看到,对于声明性管道,我们可以使用post操作。

类似地,我在声明性管道中尝试-

node {
        stage("Stage 1") {
                script {
                    FAILED_STAGE=env.STAGE_NAME
                    echo "stage 1"
                }
        }
        stage("Stage 2") {
                script {
                    FAILED_STAGE=env.STAGE_NAME
                    echo "stage 2"
                    error "failed for some reason."
                }
        }
        stage("Stage 3") {
                script {
                    FAILED_STAGE=env.STAGE_NAME
                    echo "stage 3"
                }
    }
    post {
        failure {
            echo "Failed stage name: ${FAILED_STAGE}"
        }
    }
}

但是即使管道失败,我也看不到执行后的失败块。您能否帮助您了解脚本化管道是否具有某些不同的语法?

jenkins groovy jenkins-pipeline jenkins-groovy
1个回答
0
投票

您使用的是scripted pipeline,而不是declarative pipeline(请参见区别here)。语法完全不同,因此您不能在脚本化管道(如您的管道)中使用后阶段(声明性管道已存在)。

您在这里有两个选择。

  1. 您将scripted pipeline转换为declarative pipeline(请参见语法here),并像在问题解答中使用的一样简单地使用post-stage。 (我希望使用此选项)

  1. post-stage中由您自己的scripted pipeline代替finally-block(请参阅this SO问题以寻求帮助)
© www.soinside.com 2019 - 2024. All rights reserved.