03Jenkins配置邮件发送测试报告

1、插件下载

在设置Email之前我们需要下载两个插件: Email Extension , Email Extension Template ,这两个插件可以帮助我们进行邮件的编写发送以合格式化

  • 系统管理 -> 插件管理 中下载插件:
  • 2、设置Email(Jenkins自带)

    2.1 底子信息查询

    找到所要设置邮箱的底子信息,这里以QQ邮箱为例

    1. 通过网页端QQ邮箱的设置进入到邮箱客户端设置页面
    2. 找到邮箱的底子信息

    2.2 Jenkins邮件通知设置

    1. 在Jenkins: 系统管理->系统设置 中,最底部找到 邮件通知 ,打开 高级
    2. 填入设置信息后如下:
    3. 留意到在设置的下方有个"通过发送测试邮件测试设置",我们可以讲其勾选,填入邮箱地点,点击 Test configuration 来先测试一下邮件的发送

    2.3 踩坑时候

  • 假如根据上面的方法,点击 Test configuration 会出现以下报错:
  • javax.mail.AuthenticationFailedException: 535 Login Fail. Please enter your authorization code to login. More information in http://service.mail.qq.com/cgi-bin/ help ?subtype=1&&id=28&&no=1001256 复制代码

    这是由于使用QQ邮箱登录,需要填入的是QQ邮箱的授权码,这是用于登录第三方客户端的专用密码。详细的获取方法可参考:

    service.mail.qq.com/cgi-bin/hel…
  • 修改完授权码后,再次测试,很大概又会收到如下报错:
  • java.net.SocketException: Connection closed by remote host 复制代码

    这是由于我们还需要在设置

    Jenkins Location

    中设置

    系统管理员邮件地点

    ,此地点要和

    邮件通知

    中的

    用户名

    同等

    2.4 结果验收

    做完了上述步骤后再次测试可以看到邮件发送成功

    3、设置Email(Extended E-mail Notification)

    记得文章一开头提到的下载Extended插件,没错,Jenkins系统设置里还可以通过 Extended E-mail Notification 对邮件发送进行模板格式的自定义

    3.1 底子信息设置

    底子信息设置与上述同等,唯一要留意的是这里需要重新天生一个授权码

    3.2 模板格式设置

    这里重要就是设置展示的模板格式,常用的格式化的参数有:

    - $BUILD_STATUS – 构建结果 - $PROJECT_NAME – 构建脚本名称 - $BUILD_NUMBER – 构建脚本编号 - $JOB_DESCRIPTION – 构建项目描述 - $CAUSE – 脚本启动缘故 - $BUILD_URL – 脚本构建详情URL地点 复制代码

    这里选择以HTML的格式展示,填入模板:

    < hr /> (主动化构建邮件,无需回答!) < br /> < hr /> 项目名称:$PROJECT_NAME < br /> < br /> 项目描述:$JOB_DESCRIPTION < br /> < br /> 运行编号:$BUILD_NUMBER < br /> < br /> 运行结果:$BUILD_STATUS < br /> < br /> 触发缘故:${CAUSE} < br /> < br /> 构建日记地点: < a href = "${BUILD_URL}console" > ${BUILD_URL}console </ a > < br /> < br /> 构建地点: < a href = "$BUILD_URL" > $BUILD_URL </ a > < br /> < br /> 详情:${JELLY_SCRIPT,template="html"} < br /> < hr /> 复制代码

    3.3 触发条件设置

    我们还可以在 Default Triggers 中根据自己的需要设置邮件的触发条件

    这里为了防备由于构建不停实验结果均为失败而造成的邮件轰炸,可以设置邮件仅第一次或第二次构建结果为失败时才发送邮件,后续失败的邮件将不再发送

    3.4 结果验收

    1. 在构建的使命设置中,选择" Editable Email Notification "
    2. 设置邮件发送至 Recipient List 中设置的邮件地点
    3. 保存后构建项目,察看结果,邮件发送成功

    jenkins发送邮件

    我们用jenkins集成测试( Jenkins+GitLab+Python主动化测试连续集成 )构建使命实行完成后,可以将测试结果通过邮件情势发送至相关职员,告知本次项目构建结果。

    一、开启邮箱SMTP服务

    这里我用的是网易163邮箱,登录163邮箱->设置->POP3/SMTP/IMAP->开启POP3/SMTP服务

    获取授权码,通过发送手机短信情势,获取163邮箱授权码,等下我们在jenkins设置要用(留意仅展示一次,留意保存)

    二、设置jenkins邮件功能

    1、安装Email Extension Plugin插件

    进入jenkins控制台,通过系统管理->管理插件->可选插件,选择Email Extension Plugin,直接安装

    2、系统设置

    通过系统管理→系统设置,进行邮件设置:

    a、设置jenkins地点和管理员邮箱地点

    b、设置发件人等信息

    ps:这里的发件人邮箱地点牢记要和系统管理员邮件地点保持同等(固然,也可以设置专门的发件人邮箱,视详细环境而定)

    c、设置邮件内容模版

    附:邮件内容模板(Default Content),也可以自己去网上找

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>${ENV, var="JOB_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> 本邮件由系统主动发出,无需回答!<br/> 列位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br> <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></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>构建状态: ${BUILD_STATUS}</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> <h4><font color="#0B610B">失败用例</font></h4> <hr size="2" width="100%" /> $FAILED_TESTS<br/> <h4><font color="#0B610B">近来提交(#$SVN_REVISION)</font></h4> <hr size="2" width="100%" /> <ul> ${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"} </ul> 具体提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/> </td> </tr> </table> </body> </html>

    d、设置Jenkins自带的邮件功能

    完成设置,保存即可

    3、项目设置

    a、进入项目设置界面

    b、设置构建后操作模块,新增Editable Email Notification

    详细的设置信息如下

    选择邮件触发种类

    三、构建触发邮件测试

    1、项目界面,选择立刻构建即可

    2、察看控制台输出信息

    构建并发送邮件成功

    3、察看邮件及其内容

    前言:

    首先,要有一个用来发送的邮箱,首选网易!参考: http://www.cnblogs.com/EasonJim/p/6051636.html ,这里我注册了网易的免费企业邮箱。

    而且我新建没多个邮箱用来对应差别的Job。

    本领:

    先确保邮箱的smtp功能能正常使用,如今jenkins机器上装一个foxmail,确定能正常收发。

    许多种环境邮箱种类许多,先用最简单的网易邮箱设置好后,测试收发正常。待正常后再换成特定的企业邮箱来设置。

    正题:

    Jenkins发送邮件有几种设置方法:

    1、使用内置的邮件插进(使用全局的设置,只能有一个吸收方)

    2、使用邮件扩展插件【 Email Extension Plugin 】(使用全局的设置,能有多个吸收方,但是只能有一个发送方)

    3、使用邮件扩展插件【 Email Extension Plugin 】+Groovy脚本(实现每个Job对应差别的发送邮件,多个发送方)

    4、开发邮件转发中间件要么使用Foxmail这些工具来转发(每个Job发送到对应的邮箱,然后中间件负责转发到成员列表的邮箱。对发送插件没什么要求,只要能发送即可)

    5、走国际路线,使用【Googole网上论坛】即groups.google.com(通过约请实现进入群组,然后jenkins只要发送邮件到这个群组油箱即可)

    详细操作: 留意:操作涉及的邮箱为163免费企业邮箱 1、使用内置的邮件插进

    【系统管理】->【系统设置】->【邮件通知】->【高级】,设置如下:

    参照如上设置,勾选【通过发送测试邮件测试设置】进行发送设置。

    假如出现“Failed to send out e-mail”,那么说明没有设置好【系统管理员邮件地点】

    设置【系统管理员邮件地点】时,要和SMTP认证的用户名保持同等,否则无法发送。

    上面的发送时有个小本领,【表现的名称 <邮件地点>】(中间有个空格),这样的情势发送后会在邮件提示窗口表现邮件的别名。

    最后,在Job页面上增长【增长构建后操作步骤】->【E-mail Notification】,设置要接受人的邮箱,很显然,这里只能写一个人的地点,且设置单一。假如要发送到多人,可以实验上述第4点开发中间件实现。

    2、使用邮件扩展插件

    【系统管理】->【系统设置】->【Extended E-mail Notification】->【高级】,设置如下:

    别的都留空,根据需要设置。

    同样,【Use SMTP Authentication】下的【User Name】也要和【系统管理员邮件地点】保持同等

    设置【系统管理员邮件地点】时,要和SMTP认证的用户名保持同等,否则无法发送。

    最后,在Job页面上增长【增长构建后操作步骤】->【Editable Email Notification】,设置要接受人的邮箱列表

    很显然,这里可以设置多个收件人,且设置点许多,包括构建点的触发发送,都可选择。

    提示:触发点一样平常时always,这样发送的时间不管成功还是失败都市有日记。

    提示2:构建的日记一样平常附带上去,这样方便排查

    3、使用邮件扩展插件+Groovy脚本

    通过上面第2部的设置可以发现,邮件发送人只能设置一个,并且只能是全局的;那么要对应每个Job对应差别的发送人就需要用到Groovy脚本去实现。

    通过研究邮件扩展插件【 Email Extension Plugin 】的源码发现,其提供的接口无法实如今每个Job下动态设置暂时发送人,只能设置到全局的设置上面;假如设置到全局会有一个毛病,好比构建在同一个时间点发送邮件,那么大概存在零界点的环境导致发送人庞杂,不外一样平常构建不会搭建太多,以是也可忽视。

    在Job的【Editable Email Notification】上,打开【Advanced Settings...】,在【Pre-send Script】(Pre-send表现在发送前的事件)上写入设置邮件的Groovy脚本:

    import jenkins.model.* import hudson.model.* import javax.mail.internet.InternetAddress //设置发送邮件的用户名密码 def username="project1@email.com" def password="123456"//写入发送邮件的用户名密码到全局设置上,同时也可以设置smtp server这些选项;这里由于我接纳统一的邮箱服务商,以是只需设置两项 def descriptor1 = Jenkins.instance.getDescriptorByType(hudson.plugins.emailext.ExtendedEmailPublisherDescriptor.class) descriptor1.setSmtpAuthUsername(username) descriptor1.setSmtpAuthPassword(password) descriptor1.save() //写入系统管理员邮件地点到全局设置上 def descriptor2 = Jenkins.instance.getDescriptorByType(hudson.tasks.Mailer.DescriptorImpl.class) descriptor2.setAdminAddress(String.format("JenkinsJobEmail <%s>",username)) descriptor2.save() //经过测试,这个是暂时设置发送人的系统管理员邮件地点,否则上面设置后,发送时还是不会发生改变 def email = new InternetAddress(String.format("JenkinsJobEmail <%s>", username)) msg.setFrom(email) 
    4、开发邮件转发中间件(开发比较庞杂,不提议使用)

    每个Job发送到对应的邮箱,然后中间件负责转发到成员列表的邮箱。

    中间件可以是服务,历程,要么用pythone写一个历程,运行在linux上,通过期间隔断获取指定邮箱的邮件,有新邮件时,再进行转发的特定的邮箱列表。

    本文网址: http://www.edoghaitao.com/p/202091771714_1965_3892094633/home

    推荐阅读

    tags

    最新发布