Jenkins:使用catchError()中止构建

xeufq47z  于 2023-05-22  发布在  Jenkins
关注(0)|答案(1)|浏览(252)

在我的Jenkins脚本管道中,我正在执行一些任务的1个阶段,然后发送Slack消息。如果前一阶段通过或失败,我想发送这些Slack消息,为此,我使用catchError(),它完全按照我的需要工作。当我想中止构建时,问题就出现了。
如果我中止构建,我想完全退出构建,不发送Slack消息,但我的catchError()正在捕获此中止,然后继续管道并发送消息。

stage('first stage with catchError') {
    catchError(buildResult: 'UNSTABLE', stageResult: 'UNSTABLE', catchInterruptions: false) {
        // Do some stuff here and continue the build if anything fails
    }
}

stage('second stage that send slack messages) {
    // Send some Slack messages based on the data produced in the first stage and based on if the tasks were a success or they failed
}

我想我可以使用catchError()中的catchInterruptions选项来中止整个构建(这里是这个函数的文档链接),但显然没有产生我想要的行为。我该怎么做呢?

5vf7fwbs

5vf7fwbs1#

我只是太傻了,误解了文件。我只需要将catchInterruptions选项设置为true(这是默认值)。

catchError(buildResult: 'UNSTABLE', stageResult: 'UNSTABLE', catchInterruptions: true) {
        // Do some stuff here and continue the build if anything fails
    }

OR(因为true是默认值)

catchError(buildResult: 'UNSTABLE', stageResult: 'UNSTABLE') {
        // Do some stuff here and continue the build if anything fails
    }

相关问题