Jenkins 如何在声明性语法中定义仅在生成恢复正常时运行的post步骤

Jenkins 如何在声明性语法中定义仅在生成恢复正常时运行的post步骤,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,在jenkins管道中,可以定义在特定条件下运行的post步骤。我正在将构建状态的通知发送到最重要的通道,我不知道如何在构建失败后恢复稳定时进行报告。“changed”选项也会在构建开始失败时运行,但我想使用“failure”部分来区分发送给mattermost的消息类型 有人知道如何做到这一点吗?所以,当然,在我发布文章之后,我找到了一个可行的解决方案,但我仍然对其他选择感兴趣 changed { script { if (env.CHANGE_ID == null &

在jenkins管道中,可以定义在特定条件下运行的post步骤。我正在将构建状态的通知发送到最重要的通道,我不知道如何在构建失败后恢复稳定时进行报告。“changed”选项也会在构建开始失败时运行,但我想使用“failure”部分来区分发送给mattermost的消息类型


有人知道如何做到这一点吗?

所以,当然,在我发布文章之后,我找到了一个可行的解决方案,但我仍然对其他选择感兴趣

changed {
    script {
        if (env.CHANGE_ID == null && currentBuild.result == null) {

                mattermostSend....
        }
   }
}

您可以通过组合并与当前生成状态进行比较来实现这一点

if(currentBuild.rawBuild.getPreviousBuild()?.getResult().toString() != "SUCCESS" && ( currentBuild.result == "SUCCESS" || currentBuild.result == null ) ) {
    echo "last build failed"
}

需要注意的几件事:currentBuild.result默认为null(这被视为成功),所以如果它为null或“成功”,那么您就可以了。此外,您还需要在jenkinsurl.com/scriptApproval/上的groovy脚本批准页面中列出其中一些对象(它们将在您尝试运行脚本后出现)

Ohhh,声明性管道。太酷了!很高兴他们在我发布的过程中添加了这一点。您在哪里找到了
CHANGE\u ID
currentBuild
的文档?我对声明性管道的最大问题是,文档很浅——不管怎样,就是我找到的那些文档。老实说,我记不得了。只是谷歌搜索。如果你用谷歌搜索上面的代码,你可能会找到它。甚至可能是这样:)