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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/maosidiaoxian/article/details/82622654

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

但是当我们使用 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 的 Email Extension Plugin 插件,所以还得去系统设置里配置这个插件的发件人相关配置。
在 Jenkins 的主界面,进入系统管理,系统设置,然后找到 Extended E-mail Notification,添加与邮件通知类似的配置,如下:
这里写图片描述

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

猜你喜欢

转载自blog.csdn.net/maosidiaoxian/article/details/82622654