Jenkins 多分支构建中的邮件配置

Posted 浩码农

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins 多分支构建中的邮件配置相关的知识,希望对你有一定的参考价值。

之前的《Jenkins 多分支构建》解决了多分支项目的构建问题,但是却漏了一个问题,那就是邮件通知。
作为开发,我们的主要精力是集中在开发实现上,所以也不能每次推完代码之后都去等着看构建结果,我们需要在构建失败的时候,Jenkins 能够通知我们去处理,所以邮件配置是不可少的。
在简单的 Freestyle 项目中,我们可以进行如下配置:

然后在系统设置中配置好邮件通知就好:
Jenkins 多分支构建中的邮件配置

但是当我们使用 Pipeline 时,就需要自己在配置脚本里添加邮件发送的配置了。
由于之前是在 node 里添加构建命令的,它并没有 post 这个 DSL,因此在里面并不能在里面使用 post{...} 配置。但是它可以使用 emailext 方法,因此,我们可以修改一下我们的脚本,当发生异常——即构建失败时,发送邮件到对应的开发者。脚本如下:

node {
    checkout scm
    echo "current branch: $BRANCH_NAME"
    try {
        if (BRANCH_NAME.startsWith("release/")) {
            sh "./gradlew clean -Ppublish assemble -PLOCAL_USERNAME=$LOCAL_USERNAME -PLOCAL_PASSWORD=$LOCAL_PASSWORD"
        } else {
            sh "./gradlew clean assembleTest -PLOCAL_USERNAME=$LOCAL_USERNAME -PLOCAL_PASSWORD=$LOCAL_PASSWORD"
        }
        currentBuild.result = 'SUCCESS'
    } catch (any) {
        currentBuild.result = 'FAILURE'
        throw any
    } finally {
        if (currentBuild.result == 'FAILURE') {
            emailext(
                subject: "Jenkins build is ${currentBuild.result}${env.JOB_NAME} #${env.BUILD_NUMBER}",
                mimeType: "text/html",
                body: """<p>Jenkins build is ${currentBuild.result}${env.JOB_NAME} #${env.BUILD_NUMBER}:</p>
                         <p>Check console output at <a href="${env.BUILD_URL}console">${env.JOB_NAME} #${env.BUILD_NUMBER}</a></p>"""
,
                recipientProviders: [[$class'CulpritsRecipientProvider'],
                                     [$class: 'DevelopersRecipientProvider'],
                                     [$class: 'RequesterRecipientProvider']]

            )
        }
    }
}

以上是所有的相关配置,最后验证我们的配置结果。
提交一下会编译失败的代码,收到邮件如下:
Jenkins 多分支构建中的邮件配置
打开邮件里的链接即可直接查看控制台里的输出,至此大功告成。


以上是关于Jenkins 多分支构建中的邮件配置的主要内容,如果未能解决你的问题,请参考以下文章

八. jenkins参数化构建 git分支

如何限制Jenkins并发多分支管道构建?

Jenkins 多分支构建

jenkins学习10-参数化构建(构建git仓库分支)

Jenkins Pipeline配置根据代码分支及自定义版本号构建打包

在 Jenkins 中使用多分支管道“定期构建”