Jenkins 管道中的条件后部分

fen*_*e87 0 jenkins

假设我有一个简单的 Jenkins 管道文件,如下所示:

pipeline {
    agent any

    stages {
        stage('Test') {
            steps {
                sh ...
            }
        }

        stage('Build') {
            steps {
                sh ...
            }
        }

        stage('Publish') {
            when {
                buildingTag()
            }

            steps {
                sh ...
                send_slack_message("Built tag")
            }
        }
    }

    post {
        failure {
            send_slack_message("Error building tag")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

由于每天都有很多非标签构建,我不想发送任何有关非标签构建的松弛消息。但对于标签构建,我想发送成功消息或失败消息,无论它在哪个阶段失败。

所以对于上面的例子,我想要:

  1. 当它是标签构建并且阶段“测试”失败时,我将看到“错误构建标签”消息。(本例中为“是”)
  2. 当它是标签构建并且所有阶段都成功时,我将看到“构建标签”消息。(这个例子中也是yes)
  3. 当它不是标签构建时,不会发送任何松弛消息。(示例中的情况并非如此,例如,当“测试”阶段失败时,将会出现“错误构建标签”消息)

据我所知,Jenkins 管道语法中没有“条件后部分”这样的东西,这确实可以帮助我。所以我的问题是,还有其他方法可以做到这一点吗?

小智 5

    post {
        failure {
            script {
                if (isTagBuild) {
                    send_slack_message("Error building tag")
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

whereisTagBuild是区分有标签或无标签构建的任何方式。

您也可以应用相同的逻辑,然后进入send_slack_message("Built tag")后期success阶段。