Jenkins+Jmeter持续集成笔记(四:定时任务和邮件通知)
通过前几篇文章,jmeter+ant+jenkins自动化持续构建的测试平台基本成型。既然要自动化平台,最基本的肯定要实现不经过人工干预,平台会在特定的条件下自动运行测试脚本,并在脚本运行结束后,发送邮件通知用户测试的结果。本文主要介绍如何实现以上两项功能。
还是接着以上一篇笔记中的“test_token”项目为例:
1、构建触发器

构建触发器可以根据自己的需求选择,由图看到有四种类型:
(1)可使用脚本触发远程构建;
(2)其他job构建完成后触发当前job执行构建;
(3)定时周期性构建;
(4)hookplugin检测到源码的push操作就触发构建;
(5)定时检查代码分支是否有变化,如果有变化则执行一次构建。
我的目的是做接口测试自动化,每天定时跑任务并监控API功能是否正常,所以选择Build periodically(定期构建)。日程表一共五个参数:
从左到右分别代表:分 时 天 月 星期
第一个参数代表的是分钟minute,取值0~59;
第二个参数代表的是小时hour,取值0~23;
第三个参数代表的是天day,取值1~31;
第四个参数代表的是月month,取值1~12;
第五个参数代表的是星期week,取值0~7,0和7都代表星期天。
0 7 * * 1,3,5 表示每周一、周三、周五的7点00分执行一次,*代表所有。
2、邮件通知
(1)Jenkins Location配置
jenkins首页->系统管理->系统配置页面
其中Jenkins URL有默认值,最好修改,因为默认地址不安全。
系统管理员邮件地址一定要写,因为这个地址是邮件通知的发信人邮箱,填写方式有两种:
a)直接填写邮箱地址
b)可以加前缀来标识该邮件基本信息,例如:自动化测试邮件<邮箱地址>

(2)Extended E-mail Notification配置
jenkins首页->系统管理->系统配置页面
按照自己实际使用的邮箱进行配置,设置时,点击“高级”展开,使用SMTP认证(Use SMTP Authentication):
根据邮箱服务提供商确定SMTP服务器,如:126的SMTP是smtp.126.com、163的SMTP是smtp.163.com
根据邮箱服务提供商确定是否使用SMTP认证、是否使用SSL协议以及SMTP端口
根据邮箱服务提供商确定“Password”是邮箱的登录密码还是专用于第三方工具发邮件的验证码,如:QQ和163为验证码,126为登录密码

OK,邮箱服务的基本配置已经完成。
接下来的配置相当于是邮件通知的全局配置,对具体job来说,还会进行具体的配置,如果在job中重新配置了这里相同的项目,就会覆盖这里的全局配置。

1)Default Content Type:“text/plain”指邮件正文为纯文本格式,“text/html”指邮件内容可以包含html标签且能被邮箱客户端正确解析、显示。我这里选择“text/html”。
2)Default Subject:邮件标题,可以使用系统中的全局邮件变量来设置。我这里设置的标题格式为:项目名称-BUILD#构建次数-构建状态。
3)勾选“Enable Debug Mode”,以开启Extended E-mail Notification的调试功能,这样可以在构建日志中增加更多与Extended E-mail Notification相关的日志。
(3)Job中的邮件配置
jenkins首页->job"test_token”->配置->构建后操作
在job中配置页面,选择增加构建后操作,选中Editable Email Notification即可。

需要填写的各配置项参数说明:
1)Project Recipient List:这是一个以逗号(或者空格)分隔的收件人邮件的邮箱地址列表。
2)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>
<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>构建日志 : 请查看附件</li>
<li>测试报告 : 请查看附件</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> </table>
</body> </html>
3)Attachments:邮件的附件,我把执行测试脚本生成的html测试报告文件,作为附件随邮件发出去。
注意:这里的写法可以使用通配符来确定文件的路径名称等,但是文件一定要位于workspace目录里面。
由于我之前的job把测试报告放置在/usr/jmeter/apache-jmeter-3.3/TestReport/testToken/html路径下,所以现在要修改一下测试报告输出的路径:
首先确认workspace目录的路径:/var/lib/jenkins/workspace;
接着在workspace目录下创建存放测试报告的新文件夹:
/var/lib/jenkins/workspace/test_token/html
/var/lib/jenkins/workspace/test_token/jtl
最后修改/usr/jmeter/apache-jmeter-3.3/TestScrip目录中的test_token_build.xml文件,把其中测试报告的输出路径修改为新的路径即可。
该参数文本框填写内容为html/*.html,意为在该job的workspace路径下搜索html文件夹中所有以.html为后缀的文件,并把这些文件添加到邮件附件中。
(4)触发器配置
决定什么情况下发送邮件。我配置为Always总是触发,接着send to选择RecipientList,意思是每次构建无论成功与否都发送邮件到上面指定的收件人列表邮箱。
3、测试配置是否成功
构建触发器的日程表填一个马上临近的时间,等待任务自动执行并发送邮件。
邮件结果为:

本章已经把定时任务和邮件通知功能实现了,下一章将会对该平台进行些优化。
Jenkins+Jmeter持续集成笔记(四:定时任务和邮件通知)的更多相关文章
- Jenkins+Jmeter持续集成笔记(二:ANT执行Jmeter脚本)
Jmeter接口测试脚本运行后生成的是jtl(xml)格式的文件,这些文件不具备可读性,所以我们要把他转化为可以阅读的html格式报告. Ant是一个功能强大的打包编译工具.我们使用他的目的是将xml ...
- Jenkins+Jmeter持续集成笔记(五:问题优化)
通过前面的一系列文章,我的API自动化测试平台已经搭建成型,但是要投入具体项目使用时,还有以下几个问题需要优化. 还是接着以上一篇笔记中的“test_token”项目为例: 1.邮件通知问题 (1)问 ...
- Jenkins+Jmeter持续集成笔记(三:集成到Jenkins)
上一篇笔记中已经实现了通过ant工具执行Jmeter测试脚本,并输出html格式测试报告到指定目录. 在本章中,将尝试把这个过程丢进jenkins去执行. 1.Jenkins全局工具配置 登录jenk ...
- Jenkins+Jmeter持续集成笔记(一:环境准备)
整体思路: 通过Jmeter图形界面编写api测试脚本 ant 批量执行Jmeter脚本文件 将其集成到jenkins,设置执行频率与发送测试报告 运行环境 系统 配置 IP Centos7.1 1核 ...
- jenkins jmeter持续集成批处理jmx脚本
这篇文章介绍jenkis jmeter的持续集成,利用jenkins定时任务去批处理执行jmeter的jmx脚本文件,并且生成测试报告 1:jmeter的安装这里我就不在赘述了,如有问题可参考我的jm ...
- RF+Jenkins构建持续集成
引入RF是为了能够快速的开展自动化验收测试,Jenkins而一种持续集成工具,用于监控持续重复的工作,持续的软件版本发布/测试项目,而通过RF+Jenkins可以有利的对RF构建的接口项目进行持续集成 ...
- Jenkins的持续集成
持续集成:不需要人工干预,持久化.重复的运行一个任务.将代码自动的更新到最新,然后自动运行. 新建项目之前要再Jenkins的全局工具配置里面把git的路径设置好.[全局工具配置]-->[Git ...
- 使用jenkins实现持续集成
一.jenkins 介绍 它是一个自动化的周期性的集成测试过程,从检出代码.编译构建.运行测试.结果记录.测试统计等都是自动完成的,无需人工干预: 它需要有专门的集成服务器来执行集成构建: 它需要有代 ...
- [转]使用jenkins实现持续集成
本文转自:https://www.cnblogs.com/zishengY/p/7170656.html 一.jenkins 介绍 它是一个自动化的周期性的集成测试过程,从检出代码.编译构建.运行测试 ...
随机推荐
- nl命令
nl (Number of Lines) 将指定的文件添加行号标注后写到标准输出.如果不指定文件或指定文件为"-" ,程序将从标准输入读取数据. 选项: -b, --body-nu ...
- Python内置函数之classmetho staticmethod
当对类的静态属性进行修改时(不需要借助于对象就行类静态属性的修改) class Goods: discount = 0.5 def __init__(self,name,price): self.na ...
- 经测试,foreach循环比linq的效率高
- HttpClient当HTTP连接的时候出现大量CLOSE_WAIT连接(转)
ESTABLISHED 表示正在进行网络连接的数量 TIME_WAIT 表示表示等待系统主动关闭网络连接的数量 CLOSE_WAIT 表示被动等待程序关闭的网络连接数量 上篇文章给出了解决TIME_W ...
- James Munkres Topology: Theorem 19.6
Theorem 19.6 Let \(f: A \rightarrow \prod_{\alpha \in J} X_{\alpha}\) be given by the equation \[ f( ...
- 根Activity启动过程
--摘自<Android进阶解密> 根Activity启动过程中会涉及4个进程,分别是Zygote进程.Launcher进程.AMS所在进程(SystemServer进程).应用程序进程, ...
- Ubuntu14.04和16.04官方默认更新源sources.list和第三方源推荐(干货!)
不多说,直接上干货! 写在前面:笔者由于还在学校学习,学校没有开发给Linux用的上网客户端,所以只能用在windows系统中通过安装虚拟机运行linux比较方便,但没有外网,只有学校的教育网,所以我 ...
- 20181115 python-第一章学习小结part1
知识点回顾: 什么是编程: 写代码,让计算机执行任务 编程语言的分类与特性: 1.机器语言,即二进制语言,最帖近于机器底层,可以由计算机直接执行,故速度最快,但不适合开发. 2.汇编语言,直接将二进制 ...
- YARN调试过程中的常见问题
执行操作: hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar wordcount /user/today/i ...
- CentOS7 Nginx安装及配置反向代理
背景: Mono (Mono JIT compiler version 5.4.0.201 ) jexus-5.8.2-x64(<CentOS7 安装 jexus-5.8.2-x64>) ...