如何在JEnkinsfile中的git分支的基础上运行post条件?

如何在JEnkinsfile中的git分支的基础上运行post条件?,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,如果当前正在构建的分支是主分支,我将尝试向代码审阅者发送带有附件的电子邮件通知,但是如果分支不是主分支,那么我希望向提交代码但没有附件的开发人员发送电子邮件 if "${env.BRANCH_NAME}" == "master "{ post { always { emailext( subject: "Build ${env.JOB_NAME} - ${currentBuild.displayName} ${currentBu

如果当前正在构建的分支是主分支,我将尝试向代码审阅者发送带有附件的电子邮件通知,但是如果分支不是主分支,那么我希望向提交代码但没有附件的开发人员发送电子邮件

if "${env.BRANCH_NAME}" == "master "{
    post {

        always {
            emailext(

        subject: "Build ${env.JOB_NAME} - ${currentBuild.displayName} ${currentBuild.result}",
        body: """Build ${currentBuild.result}
            ${env.JOB_URL}
            """,
        recipientProviders: [[$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']]
    )
        }
    } 
    }
    else {
        post {

        always {
            emailext(

        subject: "Build ${env.JOB_NAME} - ${currentBuild.displayName} ${currentBuild.result}",
        body: """Build ${currentBuild.result}
            ${env.JOB_URL}
            """,
        recipientProviders: [[$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']]
    )
        }
    } 
我没有得到有效的节定义:“if(${env.BRANCH\u NAME}”==“master”){ 邮政{ 詹金斯的错误,有人能帮我完成吗。
另外,还可以向代码审阅者发送电子邮件通知,这些审阅者将代码从github合并到分支,而不是开发人员。

我遵循@arnaud claudel提供的链接,但它仍然显示一些错误,但一旦我对代码进行了如下微调,它现在就可以正常工作了

post { 
        always { 
            script {
                    if ("${env.BRANCH_NAME}" == 'master') {
                        emailext(
                         attachmentsPattern: "**/*_SC.sql",
                         subject: "Build ${env.JOB_NAME} - ${currentBuild.displayName} ${currentBuild.currentResult}",
                         body: """Build ${currentBuild.result}
                                    ${env.JOB_URL}
                               """,
                         to: 'admin@admin.com'
                     )
                    } else {
                        emailext(
                          subject: "Build ${env.JOB_NAME} - ${currentBuild.displayName} ${currentBuild.currentResult}",
                          body: """Build ${currentBuild.result}
                                     ${env.JOB_URL}
                                """,
                         recipientProviders: [[$class: 'DevelopersRecipientProvider']]
                         )
                    }
                }
        }
    }
诀窍是在代码中添加脚本{},这样里面的脚本就可以为声明性post语句运行


对于linux系统,${env.BRANCH\u NAME}可以替换为env.BRANCH\u NAME。我的系统基于windows,因此必须使用${env.BRANCH\u NAME}作为一个env变量来获取分支的名称。

请看一看,我得到了以下错误,因为我试图在post中使用if语句而不是步骤:在第275行第4列需要一个步骤。if(env.branch_name==“master”){^我只是想知道是否有一种方法可以在帖子中包含if逻辑,这是在所有的阶段之后。我对链接中的代码做了一点修改,现在它工作得很好。很高兴听到这个消息!请发布新代码作为答案,它可能会帮助别人