如何运行post->;Jenkins文件中声明性管道中的failure元素是否仅存在条件?

如何运行post->;Jenkins文件中声明性管道中的failure元素是否仅存在条件?,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我有一个声明性管道,我想定义一个全局post->failure元素,它只在某些分支上执行。它应该在所有阶段之后执行,以便捕获管道中的任何故障。我希望使用导入的方法(例如,从其他groovy脚本),即,而不是示例中显示的echo命令 我的目标是创建一个通知,它只发生在一组特定的分支上,并且只发生在管道中的任何阶段失败的情况下 pipeline { agent any stages { stage('Compile') { steps {

我有一个声明性管道,我想定义一个全局
post
->
failure
元素,它只在某些分支上执行。它应该在所有阶段之后执行,以便捕获管道中的任何故障。我希望使用导入的方法(例如,从其他groovy脚本),即,而不是示例中显示的
echo
命令

我的目标是创建一个通知,它只发生在一组特定的分支上,并且只发生在管道中的任何阶段失败的情况下

pipeline {
    agent any
    stages {
        stage('Compile') {
            steps {
                ...
            }
        }
        /* ... other stages ... */
    }
    post {
        success {
            echo 'whole pipeline successful'
        }
        failure {
            echo 'pipeline failed, at least one step failed'
        }
    }
}
,就像
步骤
,但是步骤是afaik命令(搜索了一个小时,没有找到定义),这意味着我不能在
或嵌套步骤时使用
(可能吗?我也搜索了几个小时)


我不能用linter来处理这个问题,因为它们都局限于语法检查,而不检查管道逻辑。我尝试了
/pipeline model converter/validate
URL,这很痛苦,因为它不能在web sureface中使用,而在postman中,您需要通过反复试验来接近OAuth身份验证。甚至没有用于验证的Docker映像。

您可以在
post
块中使用
script
块来执行Groovy语句。例如:

post {
    failure {
        script {
            if (env.GIT_BRANCH == 'dev') {
                echo 'pipeline failed'
                // email...
            }
        }
    }
}