Jenkins + Ant + Jmeter 对项目的接口进行CI持续集成的配置 外加发送邮件 sendEmail
Step1:安装Jenkins,从指定git上拉代码【安装步骤忽略】
Step2:在项目安装的linux server上安装Ant 和Jmeter,我都安装在了自己的目录上,如下图
Step3:编写build文件,注意更改一下自己的邮箱和server name
<?xml version="1.0" encoding="utf-8"?> <project name="autotest" default="all" basedir="/opt/jmxfile/shownow"> <property name="JMeter.home" value="/opt/jmeter5.1.1"/> <property name="mail_to" value="test@xxx.com"/> <property name="ReportName" value="ShowNow_CI_Report"/> <property name="ComputerName" value="118:25:182:23"/> <tstamp> <format property="time" pattern="yyyyMMddhhmm"/> </tstamp> <target name="all"> <antcall target="runJmxFiles"/> <antcall target="genReport"/> <antcall target="sendEmail"/> </target> <target name="runJmxFiles" depends=""> <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/> <jmeter jmeterhome="${JMeter.home}" resultlog="${basedir}/Result/${ReportName}${time}.jtl"> <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本 --> <testplans dir="${basedir}" includes="*.jmx"/> </jmeter> </target> <!-- 解决不显示时间的问题 --> <path id="xslt.classpath"> <fileset dir="${JMeter.home}/lib" includes="xalan-2.7.2.jar"/> <fileset dir="${JMeter.home}/lib" includes="serializer*.jar"/> </path> <target name="genReport" depends=""> <xslt classpathref="xslt.classpath" force="true" in="${basedir}/Result/${ReportName}${time}.jtl" out="${JMeter.home}/extras/${ReportName}${time}.html" style="${JMeter.home}/extras/jmeter-results-detail-report_21.xsl"> <param name="showData" expression="${show-data}"/> <param name="titleReport" expression="${ReportName}${time}"/> <param name="dateReport" expression="${ReportName}${time}"/> </xslt> </target> <target name="sendEmail"> <mail mailhost="smtp.qq.com" mailport="25" user="xxx@foxmail.com" password="xxxx" subject="国际站Shownow重点链路脚本 Jmeter Report!" messagemimetype="text/html" tolist="${mail_to}"> <from address="xxx@foxmail.com"/> <fileset dir="${JMeter.home}/extras/"> <include name="${ReportName}${time}.html"/> </fileset> <message>This email was sent automatically by ANT + Jmeter. <br> If there are any questions, please contact with xxx. Thank you! <br></message> </mail> </target> </project>
Step4:放置一个jmx工程到指定目录,我这边是到目录 /home/jasqia/apache-jmeter4.0/jmxfile/ikea
Step5:在服务器上运行试试看:
/home/jasqia/apache-ant-1.10.3/bin/ant -file /home/jasqia/apache-jmeter4.0/jmxfile/ikea/build.xml
下图是我埋坑之后,运行成功的结果啦 ^_^
Step6:在Jenkins上配置,在重启tomcat中间件后,自动运行该接口测试工程并发送邮件:
the Last Step: 立即部署,运行之后检查邮箱收到的邮件,我这边成功收到,测试报告是附件形式发送的。 开森 ^_^
总结一下过程中遇到的问题:
Error 1: 如下截图,很明显的错误
没有将jmeter中的ant包放到ant的lib目录下,具体目录是在jmeter的extras目录下的ant-jmeter-1.1.1.jar,复制或者剪切到ant的lib下即可
Error2: [xslt] /home/jasqia/apache-jmeter4.0/jmxfile/ikea/xxx Fatal Error! Premature end of file.【大概描述】
没有将jmeter property文件中的output类型从csv更新成xml,并将之前的#去除
Error3:javax email minepackage【大概描述】
我下的ant安装包不带mail的jar包,需要找寻一下再去放ant的lib下
以后我会将各种坑进行截屏的 哈哈哈
![](https://images.cnblogs.com/cnblogs_com/qianjinyan/910455/o_jasmine%20love.gif)