前言:前文实现了ant+jmeter,以及jmeter用CSV文件做驱动,本文主要实现Jenkins+ant+jmeter
一、build.xml文件(里边有修改,去掉了发送邮件部分)
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="D:\jmeter\apache-jmeter-3.1" />
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="D:\jmeter\jtl" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="D:\jmeter\html" />
<!-- Name of test (without .jmx) -->
<property name="test" value="Test"/>
<!-- 生成的报告的前缀-->
<property name="ReportName" value="TestReport" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${test}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${test}.html" />
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
<target name="run">
<antcall target="test" />
<antcall target="report" />
</target>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
<testplans dir="D:\jmeter\自动化接口" includes="*.jmx" />
</jmeter>
</target>
<target name="report">
<tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>
<xslt classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
<copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target>
</project>
二、编写jmeter脚本
Paste_Image.png三、Jenkins安装
1.下载最新的版本(一个WAR文件),官方地址:http://Jenkins-ci.org/
2.运行java -jar jenkins.war
3.浏览器输入http://localhost:8080/
4.http://localhost:8080/restart重启Jenkins服务(下载插件重启生效使用)
四、Jenkins配置
1.安装插件Performance plugin(Jmeter报告需要)、Extended E-mail Notification(邮件使用)
(1)系统管理-插件管理-可选插件-直接搜索安装即可
(2)安装后重启Jenkins后生效
2.Jenkins设置ant的环境变量
(1)系统设置-全局工具配置-选择ant安装
(2)配置如图(也可选择自动安装,建议本地安装ant后配置环境变量)
3.Jenkins设置jdk的环境变量,操作如上
Paste_Image.png4.Jenkins设置邮件
(1)系统管理-系统设置-邮件通知设置如图
Paste_Image.png(2)Extended E-mail Notification设置(和邮件通知设置类似)
Paste_Image.png(3)系统管理员邮件配置(Jenkins Location ),如果不配置无法发送邮件,系统管理员的邮箱地址必须和上边的邮箱地址一致
Paste_Image.png五、项目配置
1.创建测试项目
Paste_Image.png2.项目配置
(1)填写项目名称及描述
Paste_Image.png
(2)丢弃旧的构建,勾选后为了避免构建后占用多余的磁盘空间,例如图为保留一天内最大保留5个构建项目
Paste_Image.png(3)勾选参数化构建,选择choiceparameter(此步骤可忽略,是为了方便区分项目设置)
Paste_Image.png
Paste_Image.png
(4)配置工作空间-勾选使用自定义工作空间,目录填写ant的build.xml文件所在目录
Paste_Image.png(5)添加构建步骤操作Execute Windows batch command,填写del "D:\jmeter\jtl"\test.jtl(此命令为删除目录下的test.jtl的命令,因为jmeter生成的jtl报告,名字相同的话不会覆盖而是追加,所以每次运行前需要删除jtl文件)
Paste_Image.png(6)配置Invoke Ant
- Ant Version选择之前配置的ant
- Properties 填写test=xxx,此处xxx为你的jmeter 文件名字(不带.jmx)。
说明:
此处test=xxx的原因,可以查看工作目录extras下的build.xml文件中有这样的一段代码:<property name="test" value="Test"/>,test变量的默认值是Test,我们Properties就是为了给build.xml文件的变量重新赋值的。建议自行了解build.xml文件的结构;
image.png
(7)配置Publish HTML reports(此为复制已经存在的HTML文件到工作目录而不是创建)
- HTML directory to archive:与工作空间相关的HTML报告目录的路径!
- Index page(s) :提供报告目录中的链接的文件,可以为多个!
-
Report title用于显示构建/项目的报告的目录
image.png
(8)配置Publish Performance test result report(Performance Publish插件)相对路径和绝对路径都可
image.png(9)配置邮件 Editable Email Notification
Paste_Image.png邮件触发条件为每次构建后触发
Paste_Image.png邮件内容
<!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">
<div>
<table width="95%" cellpadding="0" cellspacing="0"
style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
<th align="center" colspan="2"><br />
<h2>构建信息</h2>
</th>
</tr>
<tr>
<td>
<ul>
<li>项目名称 : ${PROJECT_NAME}</li><br/>
<li>接口详细测试报告 :<a href="${PROJECT_URL}HTML_Report">${PROJECT_URL}HTML_Report</a></li>
<li>性能详细测试报告 :<a href="${BUILD_URL}performance">${BUILD_URL}performance</a></li>
<li>构建日志:<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>触发原因: ${CAUSE}</li><br />
<li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li><br />
</ul>
</td>
<td>${JELLY_SCRIPT,template="html"}<br/>
</tr>
<tr>
<td colspan="2" align="center"><br />
<h2>测试报告</h2>
</td>
</tr>
</table>
</div>
</body>
</html>
六、立即构建并查看测试报告及邮件
构建
Paste_Image.pngJenkins上查看测试报告
Paste_Image.png Paste_Image.png邮件
Paste_Image.png备注:
-
因为我build.xml中的代码生成的测试报告是以参数${test}.jtl ${test}.html 命名所以当Invoke Ant 中将test=$testscript相当于重新赋值给test,所以生成的测试报告就会以参数化构建过程中的参数test来命名(可查看ant的build.xml文件)
Paste_Image.png - Jenkins使用qq邮箱的话需要开启IMAP/SMTP服务,Jenkins配置设置中密码处填写的应该为授权码而不是密码
请参考:http://service.mail.qq.com/cgi-bin/help?subtype=1&&no=1001256&&id=28 - Jenkins中HTML显示文件不全的问题请参考
https://zhuanlan.zhihu.com/p/28080975
总结:此次搭建该环境,虽然不是很复杂,但是期间也走了很多弯路,目前还有很多不完善的地方,总之,多动手,多理解,加油!
网友评论