前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hey, man, you break the build!Jenkins邮件你收到了吗?

Hey, man, you break the build!Jenkins邮件你收到了吗?

作者头像
DevOps在路上
发布2024-06-17 13:50:58
820
发布2024-06-17 13:50:58
举报
文章被收录于专栏:DevOps实践之路DevOps实践之路

上一篇文章,我们提到了持续集成失败要立即修复。“反馈”是DevOps三要素之一的,那么流水线失败的通知邮件就算是其中一种反馈动作。 本文帮助jenkins新手,利用Email Extension插件,配置jenkisn邮件反馈,让团队快速收到构建情况。文章末尾有惊喜!

安装Email Extension

可能会发现有两个E-mail Notification,一个是Extended E-mail Notification另一个是E-mail Notification。前者是安装Jenkins时顺便安装的插件,后者是自带的。自带的E-mail Notification功能较弱。

本文主要介绍Email Extension, 它允许您配置电子邮件通知的各个方面。您可以自定义电子邮件的发送时间、接收者以及电子邮件的内容。

  • https://plugins.jenkins.io/email-ext/
  • https://www.jenkins.io/blog/2017/02/15/declarative-notifications/

配置管理员邮箱

需要在Jenkins Location中配置系统管理员邮件地址,否则会出现下面测试发送邮件会出现553 Mail from must equal authorized user

配置SMTP服务器

进入系统管理->系统设置->Extended E-email Notification,进行如下配置并测试是否发送成功。

插入发送邮件片段

该插件打包了两个 Jelly 脚本,您也可以编写自己的脚本。有两个开箱即用的默认 Jelly 脚本:一种是为 HTML 电子邮件设计的,另一种是为文本电子邮件设计的。

也可以自定义Jelly 脚本,将脚本放置在 ${JENKINS_HOME}/email-templates/,详见 https://github.com/jenkinsci/email-ext-plugin

代码语言:javascript
复制
Text-only Jelly script
${JELLY_SCRIPT,template="text"}

HTML Jelly script
${JELLY_SCRIPT,template="html"}

使用默认模板

代码语言:javascript
复制
stage('Email') {
    steps {
        script {
            def mailRecipients = 'XXX@xxxxx.xxx-domain'
            def jobName = currentBuild.fullDisplayName
            emailext body: '''${SCRIPT, template="groovy-html.template"}''',
            mimeType: 'text/html',
            subject: "[Jenkins] ${jobName}",
            to: "${mailRecipients}",
            replyTo: "${mailRecipients}",
            recipientProviders: [[$class: 'CulpritsRecipientProvider']]
        }
    }
}

自定义邮件模板

代码语言:javascript
复制
....
post {
        always
        {
            echo 'Send build result to members'
            emailext (
                mimeType: 'text/html',
                attachLog: true,
                compressLog: true,
                subject: '$DEFAULT_SUBJECT',
                body: '$DEFAULT_CONTENT',
                to: 'xxx@xxxx.com.cn'
            )
        }
    }

也可以通过共享库中封装一个email.groovy,新建文件src/org/devops/email.groovy, 在pipeline中通过Load方法调用。

代码语言:javascript
复制

//email.groovy
def Email(status,emailUser)
{
    emailext body: """<!DOCTYPE html>
    <html>
    <head><metacharset="UTF-8"></head> 
    <bodyleftmargin="8 "marginwidth="0" topmargin="8"marginheight="4"offset="0">
    <imgsrc="http://192.168.1.200:8080/static/0eef74bf/images/headshot.png">
    <table width="95%"cellpadding="0"cellspacing="0"
    style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
    <tr>
    <td><br/><b>
    <font color="#0B610B">构建信息</font>
    </b></td></tr>
    <tr>
    <td><ul>
    <li>项目名称:${JOB_NAME}</li>
    <li>构建编号:${BUILD_ID}</li>
    <li>构建状态: ${status} </li>
    <li>项目地址:<ahref="${BUILD_URL}">${BUILD_URL}</a></li><li>构建日志:
    <a href="${BUILD_URL}console">${BUILD_URL}console</a>
    </li></ul></td>
    </tr>
    <tr>
    </table>
    </body>
    </html> """,
        subject: "Jenkins-${JOB_NAME}项目构建信息 ",to: emailUser
}

return this 

//.....
// jenkinsfile

    script {
        def exampleModule = load 'src/org/devops/email.groovy'
        exampleModule.sendEmail("${currentBuild.result}", "${MAILRECIPIENTS}")
    }

完整示例

最后放上完整实例,这是一个空壳的jenkins pipeline模板,标准流程设计好了,只需要加入业务逻辑就可以了。

https://gitee.com/devops-samples/pipeline-template

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps在路上 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装Email Extension
  • 配置管理员邮箱
  • 配置SMTP服务器
  • 插入发送邮件片段
    • 使用默认模板
      • 自定义邮件模板
      • 完整示例
      相关产品与服务
      持续集成
      CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档