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

时间:2019-10-16 07:15:54

标签: jenkins groovy jenkins-pipeline jenkins-groovy

我正在使用脚本化管道来构建管道,从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}"
        }
    }
}

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

1 个答案:

答案 0 :(得分:0)

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

您在这里有两个选择。

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

  1. post-stage中为您的scripted pipeline实施finally-block(请参见this SO问题以寻求帮助)