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://www.cnblogs.com/qianjinyan/p/9067212.html