Jmeter + Jenkins + Ant 集成

环境准备

  1. 安装jenkins,并安装插件ant

    java环境与jdk的安装

    jmeter的安装及脚本准备

  2. ant的安装:

    下载 Ant 压缩包并解压

    配置环境变量,在环境变量中新建一个系统变量,输入变量名ANT_HOME,变量值为ANT安装路径:如D:\Ant\apache-ant-1.9.14

    path环境变量中添加:%ANT_HOME%\bin;

  3. 在jenkins中设置全局变量:

    在ant选项中name栏去一个名称,一般为ant

    默认勾选上了Install automatically,需要去除勾选

    ANT_HOME中输入环境变量添加的值:例:D:\Ant\apache-ant-1.9.14

    然后保存

  4. 进入到jmeter\bin,打开 jmeter.properties 文件

    修改jmeter.save.saveservice.output_format=xml(便于后期邮件的发送)

  5. 将 jmeter 下的 extras 中的 ant-jmeter-1.1.1.jar包复制到ant安装路径的lib目录下

    验证:在 jmeter 的 extras 文件夹中 cmd ,输入ant.bat -file build.xml -Dtest=Test

    查看\apache-jmeter-3.\extras目录下是否出现Test.jtl、Test.html文件,若有,则构建成功

  6. jenkins中创建一个自由任务:

    在build中add build step 添加一个 invoke Ant

    在Ant Version 中下拉选择在全局配置中创建的(上面创建的ANT,这里选择ANT)

    点击Advanced,Build File 中填入build.xml文件位置,例:D:\Jmeter\apache-jmeter-5.2.1\extras\build.xml

  7. build.xml文件配置:

<?xml version="1.0" encoding="UTF-8"?>
<!--name名称可自己定义,表示工程名称,default表示默认的情况下为all,从20行代码可以看出,又包含test,report,mail,basedir表示当前目录-->
<project name="接口性能监控" default="all" basedir=".">
 <tstamp>
        <!--当前时间戳-->
        <format property="time" pattern="yyyyMMddhhmm" />
 </tstamp>
	<property name="encoding" value="UTF-8" />
    <!-- 需要改成自己本地的 Jmeter 目录-->
    <property name="jmeter.home" value="E:\202002-03\jmeter8期\apache-jmeter-5.1.1\" />
    <!--value为报告名称,可自行修改-->
    <property name="report.title" value="易捷支付性能监控"/>
    <!-- jmeter生成jtl格式的结果报告的路径-->
    <property name="jmeter.result.jtl.dir" value="${jmeter.home}\worklogs\jtl" />
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="${jmeter.home}\worklogs\html" />
    <!-- 生成的报告的前缀-->
    <property name="ReportName" value="PerformReport" />
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}\${ReportName}${time}.jtl" />
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}\${ReportName}${time}.html" />

    <target name="all">
        <antcall target="test" />
        <antcall target="report" />
		<antcall target="mail" />
    </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="${jmeter.home}\bin\script" includes="jpgc_design.jmx" />
			<testplans dir="${jmeter.home}\bin\script" includes="jpgc_design2.jmx" />

            <property name="jmeter.save.saveservice.output_format" value="xml"/>
        </jmeter>
    </target>

    <path id="xslt.classpath">
        <fileset dir="${jmeter.home}\lib" includes="xalan*.jar"/>
        <fileset dir="${jmeter.home}\lib" includes="serializer*.jar"/>
    </path>


    <target name="report">
        <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>
        <!-- meter-results-detail-report_21.xsl为报告模板,可自定义,提供jmeter-results-detail-report_21.xsl,
        jmeter-results-report_21.xsl选择 -->
        <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="showData" expression="${show-data}"/>

              <param name="dateReport" expression="${report.datestamp}"/>
              <param name="titleReport" expression="${report.title}:${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>
    <!--  发送方邮箱,需开通SMTP服务  -->
	<property name="mail_from" value="[email protected]" />
    <!-- value填写的是授权码  -->
	<property name="password" value="dedasdafewrdf" />
	<!--mail_to:发送列表,value表示接收方邮箱,多个之间逗号间隔  -->

	<property name="mail_to" value="[email protected]" />
    <!--  端口信息  -->
	<property name="mailport" value="25" />
	<!--邮箱需要开通smtp服务-->
	<property name="mailhost" value="smtp.163.com" />

	<target name="mail">

		<loadfile property="report" srcFile="${jmeter.result.htmlName}" encoding="${encoding}" />
		<mail from="${mail_from}" tolist="${mail_to}" mailport="${mailport}" mailhost="${mailhost}" user="${mail_from}" password="${password}" subject="TestReport-${ant.project.name}" messagemimetype="text/html">
			<message>
		     	   			本轮构建的结果如下:
		     	   			${report}
		     	   </message>
		</mail>
    <delete file="${jmeter.result.htmlName}" />
	</target>
</project>

之后就可以在jenkins上构建任务。

猜你喜欢

转载自www.cnblogs.com/zhouxiongjie/p/12597904.html