如何在声明性语法中定义后一步,仅在构建恢复正常时运行

时间:2017-05-10 13:13:11

标签: jenkins jenkins-pipeline

在jenkins管道中,您可以定义在特定条件下运行的后期步骤。我正在向mattermost通道发送构建状态的通知,我无法弄清楚当构建在失败后恢复稳定时如何报告。 “更改”选项也会在构建开始失败时运行,但我想使用“失败”部分来区分发送到mattermost的消息类型。

任何人都知道如何使这项工作?

2 个答案:

答案 0 :(得分:1)

所以,当我发布后,我找到了一个有效的解决方案,但我仍然对其他选项感兴趣

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

                mattermostSend....
        }
   }
}

答案 1 :(得分:0)

您可以通过将https://support.cloudbees.com/hc/en-us/articles/226419147-How-can-I-check-previous-build-status-in-a-Pipeline-Script-与当前构建状态进行比较来实现此目的。

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

需要注意的一些事项:currentBuild.result默认为null(计为成功),所以如果它为null或“SUCCESS”,那么你就是好的。此外,您需要在jenkinsurl.com/scriptApproval/中找到的groovy脚本批准页面中将这些对象列入白名单(在您尝试运行脚本后它们将出现在那里)