如何在JEnkinsfile中基于git分支运行后期处理?

达斯拉线

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

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_NAME}“ ==” master“){post {jenkins中的错误,任何人都可以帮助我完成此操作。是否也可以发送电子邮件通知给将代码从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: '[email protected]'
                     )
                    } else {
                        emailext(
                          subject: "Build ${env.JOB_NAME} - ${currentBuild.displayName} ${currentBuild.currentResult}",
                          body: """Build ${currentBuild.result}
                                     ${env.JOB_URL}
                                """,
                         recipientProviders: [[$class: 'DevelopersRecipientProvider']]
                         )
                    }
                }
        }
    }

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

对于Linux系统,“ $ {env.BRANCH_NAME}”可以替换为env.BRANCH_NAME。我的系统基于Windows,因此必须使用$ {env.BRANCH_NAME}作为env变量来获取分支的名称。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章