本文基于debian9.6,redhat及其他linux命令可能略有不同。
一.配置jmeter和ant
a.使用wget命令下载jmeter和ant,并将其解压;
b.配置jm和ant环境变量;
c.准jmeter脚本;
d.设置build.xml
进入ant的bin目录下,用vi打开并编辑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="/home/bangbang/CI/apache-jmeter-5.0" />
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="/home/bangbang/CI/result" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="/home/bangbang/CI/result" />
<!-- 生成的报告的前缀-->
<property name="ReportName" value="Report" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/Report${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/Report${time}.html" />
<!-- 输出生成的报告名称和存放路径-->
<echo message="${jmeter.result.jtlName}"/>
<echo message="$JMeterTask{jmeter.result.htmlName}"/>
<echo message="${jmeter.result.html.dir}"/>
<target name="all" depends="run,report"/>
<target name="run">
<!--加载jar包,解决显示时间问题-->
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
<fileset dir="${jmeter.home}/extras" includes="ant-jmeter*.jar"/>
</path>
</target>
<target name="test">
<taskdef
name="jmeter"
classpathref="jmeter.classpath"
classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
<testplans dir="/home/bangbang/CI/apache-jmeter-5.0/extras" includes="Test.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</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.shanhe.me.xsl">
<!--显示dateReport的时间-->
<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>
二.安装配置jenkins
https://www.jianshu.com/p/845f267aec52
三.配置jenkins
a.下载jenkins插件
进入Manage Jenkins->Manage Plugins,下载插件Email Extension Plugin、 Email Extension Template Plugin。下载完成后需要重启jenkins。
b.配置系统邮箱
进入Manage Jenkins->System Configure,找到Extended E-mail Notification和E-mail Notification,按照下图设置:
note: qq邮箱测试报401,此错误是因为qq邮箱未开启smtp服务,登录网页版qq邮箱,进入设置->账户,找到POP/IMAP…服务,开启POP3或IMAP服务,上图中的密码需输入此处的授权码。我在使用163邮箱,提示554 DT,在163网站上查看错误提示,是因为测试邮箱包含"Test"等字样,导致系统将邮件判断未垃圾邮件。
c.配置job
1.进入New Item->输入item name->Freestyle project->点击OK
2.找到build,Add build step,选择Invoke Ant,Targets与build.xml的target一致,Build File填写本地build.xml路径。
3.Post-build Actions->Add post-build actions-> E-mail Notification
4.Add post-build actions-> Editable Email Notification->Attachments,填入jmeter生成html报告的地址**/*.html,其他选项暂时默认
5.点击Advanced Settings,Triggers->Send to列表中,add Recipient List,Recipient List中,填写接收报告的邮箱地址,若要填写多个邮箱,中间用","隔开。Attachments一栏和上面一样。
保存,退出,回到jenkins主页面,build刚才建立的项目。
运行报错,JAVA_HOME is not defined correctly,这是因为在jenkins未指定java:
解决方法:
进入Manage Jenkins->Global Tool Configuration->JDK->Add Jdk,取消install automatically,手动设置java home。
相同的方法,设置ant home。
再次回到jenkins主页,build项目,可以看到,这次运行jmeter脚本成功了,
查看Console Output开头,发现一个error,
java.io.FileNotFoundException: jmeter.log (Permission denied) java.io.FileNotFoundException: jmeter.log (Permission denied)
```jmeter log 是权限问题 ,我是将jmeter文件放在了/home/{usr}/CI的目录下,用户 jenkins无权限执行这个文件。
解决方法:
进入${jmeter_home}/bin目录下,将jmeter.log的执行权限给jenkins用户, sudo chown jenkins.jenkins jmeter.log。
查看邮件,发现jenkins发送的报告里面,并没有附件报告,上面配置email中的Attachments,该Attachments是以workpase为基本路径,这里采用粗暴简单的方法解决这个问题,将build.xml中生成报告的路径,修改为jenkins的workspace的路径。如下:
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="/var/lib/jenkins/workspace/{你的项目名称}" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="/var/lib/jenkins/workspace/{你的项目名称}" />
最后运行项目:
三.设置定时任务
进入创建的项目->Build Triggers->勾选Build periodically,我这里设置的是此任务每五分钟执行一次,* * * * * 分别表示分时天月年。
linux定时任务设置:
http://qa.taobao.com/?p=9189
至此,jmete+ant+jenkins持续继承做测试就算完成了。