詹金斯管道运行阶段失败

时间:2020-04-23 13:31:15

标签: jenkins jenkins-pipeline jenkins-declarative-pipeline

我的Jenkins pipline脚本有很多try / catch块,可在发生故障时通知我。是否有可能只有在前一个阶段失败后才能运行的阶段?

我当前的脚本看起来像这样。

stage('Stage 1') {
    steps {
        try {
            // do something
        }
        catch(Exception e) {
            bitbucketStatusNotify(buildState: 'FAILED')
            error 'FAILED'
        }
    }
}
stage('Stage 2') {
    steps {
        try {
            // do something
        }
        catch(Exception e) {
            bitbucketStatusNotify(buildState: 'FAILED')
            error 'FAILED'
        }
    }
}
stage('Stage 3') {
    steps {
        try {
            // do something
        }
        catch(Exception e) {
            bitbucketStatusNotify(buildState: 'FAILED')
            error 'FAILED'
        }
    }
}

我想做这样的事情。

stage('Stage 1') {
    steps {
        // do something
    }
}
stage('Stage 2') {
    steps {
        // do something
    }
}
stage('Stage 3') {
    steps {
        // do something
    }
}
stage('Only Run On Failure') {
    steps {
        bitbucketStatusNotify(buildState: 'FAILED')
    }
}

1 个答案:

答案 0 :(得分:1)

要在管道的任何阶段通知故障,请使用post actions。 然后,对于每个管道结果,您可以设置一些后期操作。

不成功的示例(任何以“ SUCCESS”结果结尾的构建):

stages{
    stage('Stage 1') {
        steps {
            // do something
        }
    }
    stage('Stage 2') {
        steps {
        // do something
        }
    }
    stage('Stage 3') {
        steps {
            // do something
        }  
    }
post{
    success{
        bitbucketStatusNotify(buildState: 'SUCCESS')
    } 
    unsuccessful{
        bitbucketStatusNotify(buildState: 'FAILED')
    }    
}