Jenkins——应用篇——插件使用——Extended E-mail Notification Plugin

来源:互联网 发布:淘宝男风时尚生活假货 编辑:程序博客网 时间:2024/06/13 09:36

本文是Jenkins应用系统文章的一部分,大部分来自工作和学习中的实践,部分内容来自官方文档和网友的文章,引用的文章会在“参考资料”部分附上原始链接,如无意中侵犯您的权利,请联系QQ:46106962,如需要进一步的交流请加入QQ群:(Jenkins学习交流)469536515。转载和使用请注明出处。

前言

在Jenkins的使用中邮件提醒是一个常用功能,Jenkins默认安装了Mailer Plugin插件用于实现此功能,但Mailer Plugin功能简单不能满足一些复杂需求,如:自定义邮件标题、内容等。Extended E-mail Notification(ext mail)是一个功能更为齐全,使用也更为复杂的插件,本文总结了本人的使用经验和“Jenkins学习交流”群中大家常遇到的问题,如有错误环境交流。
根据使用经验和“Jenkins学习交流”群中大家常遇到的问题,建议大家在配置和使用此Extended E-mail Notification时着重注意以下5个点:
  1. 发件人邮箱和系统管理员邮箱相同
  2. 根据邮箱服务提供商确定SMTP服务器,如:126的SMTP是smtp.126.com、163的SMTP是smtp.163.com
  3. 根据邮箱服务提供商确定是否使用SMTP认证、是否使用SSL协议以及SMTP端口
  4. 根据邮箱服务提供商确定“Password”是邮箱的登录密码还是专用于第三方工具发邮件的验证码,如:QQ和163为验证码,126为登录密码
  5. 勾选“Enable Debug Mode”,以开启Extended E-mail Notification的调试功能,这样可以在构建日志中增加更多与Extended E-mail Notification相关的日志
  6. ext mail插件并没有像Mailer Plugin一样提供smtp配置的测试功能(很多人会误用Mailer Plugin的测试功能),只能通过在Job中使用后测试配置是否正确

配置

这里只介绍本人认为重要的配置,并不包含所有配置项,将其分为“基础配置”和“扩展配置”两部分。

基础配置

基础配置是使用Extended E-mail Notification的基础,对于刚接触的人来说大部分的配置问题也现出在这里,而这部分配置与Jenkins的默认邮件通知插件Mailer Plugin的配置是相同的,请参考博客Jenkins——应用篇——插件使用——Mailer Plugin。内容如下:
Extended E-mail Notification基础配置
点击上图中的“Advanced...”展开后如下:
Extended E-mail Notification基础配置

扩展配置

Extended E-mail Notification配置
配置说明
  1. Default Context Type
    可选项有“text/plain”、“text/html”,是邮件正文的格式。是邮件标准协议的一部分,涉及到邮箱客户端如何解析邮件内容,非本文的核心内容,不做进一步说明,概括来说“text/plain”指邮件正文为纯文本格式,“text/html”指邮件内容可以包含html标签且能被邮箱客户端正确解析、显示。实际工作只“text/html”更为常用。
  2. Default Recipients
    默认邮件通知接收人,如果Job没有重新设置“Recipients”,插件以发送邮件时将发送给这里的收件人。在Job中可以使用$DEFAULT_RECIPIENTS包含默认收件人并增加新的收件人,如:$DEFAULT_RECIPIENTS,123456@qq.com。收件人列表中还可以包含“cc”和“bcc”前缀,分别表示抄送和暗送,如:cc:123456@qq.com,bcc:78910@qq.com。
  3. Reply To List
    回复邮件时的收件人列表,是邮件标准协议的一部分,也和邮箱客户端的实现有关,由于超出本文的内容范围,不做详细说明。其作用是当邮件通知收件人使用邮箱客户端回复邮件时邮件时自动设置收件人邮箱列表,如设置为“45678@qq.com,23456789@qq.com”,邮件通知的收件人是123456@qq.com,当123456@qq.com回复收到的邮件时,45678@qq.com,23456789@qq.com将出现在收件人列表中,在job中可以使用$DEFAULT_REPYTOW,并增加新的邮箱。
  4. Default Subject
    邮件标题,可以使用构建中的环境变量,从而使标题的设置更灵活且表达更为丰富的内容。
  5. Default Content
    邮件内容,可以使用构建中的环境变量。是我们在实际使用中最重要的一部分,会在“使用”一节给出示例。
Extended E-mail Notification配置
配置说明
  1. Enable Debug Mode
    插件安装后默认是未选中状态,这里再次强调一下,在刚接触此插件时一定要勾选此项。
  2. Content Token Reference
    插件可用变量的说明,在定制邮件标题和内容时使用,点击上图中右下角的“?”可以看到所有变量的说明,比较详细,要“使用”一节的示例中将对用到的变量进行说明。
点击上图中的“Default Triggers...”展开插件支持的所有触发方式,如下图:
Extended E-mail Notification配置
本人对“Default Triggers...”的作用有些迷惑,从实际使用来看这里的设置在Job中并不会默认生效,如上图设置了触发方式为“Always”,但在Job中如果不指定触发器并不会发送邮件通知。

使用

在Job的“Post-build Actions”中选择“Editable Email Notification”选项即可使用Extended E-mail Notification插件,本节首先对一些有用配置进行说明,然后再以一个具体的例子说明在Job中的使用方式。

配置说明

  1. Disable Extended Email Publisher
    感觉这是一个很贴心的设置,它使我们可以临时关闭Job的邮件通知功能,偷偷做一些事情而不被发现。在我们想验证自己的一些想法不得不反复的运行Job,而又不想每次都发邮件而打扰别人时,显得很是贴心。
  2. Project Recipient List
    逗号分隔的收件我列表,默认值为$DEFAULT_RECIPIENTS,即上节“扩展配置”中的“Default Recipients”,在这里可以按需要重新设置或增加新的收件人。
  3. Project Reply-To List
    都好分隔的回复邮件收件人列表,默认值为$DEFAULT_REPLYTO,即上节“扩展配置”中的“Reply To List”,修改方式与“Project Recipient List”相同。
  4. Default Subject
    从名称上看和上节“扩展配置”中的“Default Subject”是重复的,但其作用范围不同,“扩展配置”中的是全局的,这里的只在当前Job中有效,且可被“Trigger”中的设置覆盖。
  5. Default Content
    与上节“扩展配置”中“Default Content”的区别同上。
  6. Attachments
  7. 使用建议
    1)有些全局设置不能被触发器继承继承,尽量在每个触发器中单独设置,如"默认收件人"
    2)如果是Maven项目TEST_COUNTS获取测试用例信息,pom中需要配置surefire插件

示例

  1. 以html格式发送送如下内容:邮件内容为项目名称、构建次数、触发原因、构建日志前100行、项目url/构建日志url、项目变更日志、测试用例汇总。
    Job设置中"Content Type"选"Html",将下面模板内容粘贴到"Content"中。
    Html模板:模板由群友QQ]  TUX(4991727)提供
    <!DOCTYPE html><html><head><meta charset="UTF-8"><title>${PROJECT_NAME}-第${BUILD_NUMBER}次构建日志</title></head><body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"    offset="0">    <table width="95%" cellpadding="0" cellspacing="0"        style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">        <tr>            <td>(本邮件是程序自动下发的,请勿回复!)</td>        </tr>        <tr>            <td><h2>                    <font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>                </h2></td>        </tr>        <tr>            <td><br />            <b><font color="#0B610B">构建信息</font></b>            <hr size="2" width="100%" align="center" /></td>        </tr>        <tr>            <td>                <ul>                    <li>项目名称 : ${PROJECT_NAME}</li>                    <li>构建编号 : 第${BUILD_NUMBER}次构建</li>                    <li>触发原因: ${CAUSE}</li>                    <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>                    <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>                    <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>                    <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>                </ul>            </td>        </tr>        <tr>            <td><b><font color="#0B610B">Changes Since Last                        Successful Build:</font></b>            <hr size="2" width="100%" align="center" /></td>        </tr>        <tr>            <td>                <ul>                    <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>                </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="    %p"}            </td>        </tr>        <tr>            <td><b>Test Informations</b>            <hr size="2" width="100%" align="center" /></td>        </tr>        <tr>            <td><pre                    style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">Total:${TEST_COUNTS,var="total"},Pass:${TEST_COUNTS,var="pass"},Failed:${TEST_COUNTS,var="fail"},Skiped:${TEST_COUNTS,var="skip"}</pre>                <br /></td>        </tr>        <tr>            <td><b><font color="#0B610B">构建日志 (最后 100行):</font></b>            <hr size="2" width="100%" align="center" /></td>        </tr>        <tr>            <td><textarea cols="80" rows="30" readonly="readonly"                    style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>            </td>        </tr>    </table></body></html>
    效果图(部分):



0 0