【问题标题】:How to run post condtion on the basis of git branch in JEnkinsfile?如何在 JEnkinsfile 中基于 git 分支运行 post condtion?
【发布时间】:2019-08-22 23:55:27
【问题描述】:

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

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']]
    )
        }
    } 

我得到 Not a valid section definition: "if ("${env.BRANCH_NAME}" == "master"){ 邮政 { 詹金斯的错误,谁能帮我完成这件事。 还有是否可以向代码审查员发送电子邮件通知,他们将代码从 github 合并到分支而不是开发人员。

【问题讨论】:

  • 看看this
  • 我收到以下错误,因为我试图在帖子中使用 if 语句而不是步骤:预计步骤 @ 第 275 行,第 4 列。 if (env.BRANCH_NAME == 'master') { ^ 只是想知道是否有一种方法可以在帖子中包含所有阶段之后的 if 逻辑。
  • 我对链接中的代码做了一点改动,现在它运行良好。
  • 很高兴听到!请发布新代码作为答案,它可能对某人有所帮助

标签: jenkins jenkins-pipeline


【解决方案1】:

我点击了@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']]
                         )
                    }
                }
        }
    }

诀窍是在代码中添加 Script{},以便可以为声明性 post 语句运行其中的脚本。

"${env.BRANCH_NAME}" 可以替换为 env.BRANCH_NAME 用于 linux 系统。我的系统是基于 Windows 的,所以必须使用 ${env.BRANCH_NAME} 作为环境变量来获取分支的名称。

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    相关资源
    最近更新 更多