Ant & Jenkins 执行jmx

Windows下 Ant & Jenkins 执行jmx

  1. ant 下载地址

http://ant.apache.org/bindownload.cgi

  1. 配置环境变量
C:\Users\86158>ant -v
Apache Ant(TM) version 1.9.16 compiled on July 10 2021
Trying the default build file: build.xml
Buildfile: build.xml does not exist!
Build failed

  1. 将以下文件copy 到ant lib 目录下

  2. 创建驱动jmx执行文件:build.xml

<?xml version="1.0" encoding="UTF-8"?>

<project name="ant-jmeter-test" default="run" basedir=".">
    <tstamp>
        <format property="time" pattern="yyyyMMddhhmm" />
		<format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/>
    </tstamp>
    <!-- 需要改成自己本地的 Jmeter 目录-->
    <property name="jmeter.home" value="F:\soft\apache-jmeter-5.4.1" />
    <!-- jmeter生成jtl格式的结果报告的路径-->
    <property name="jmeter.result.jtl.dir" value="C:\Users\86158\Desktop\jmx\report\jtl" />
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="C:\Users\86158\Desktop\jmx\report\html" />
    <!-- 生成的报告的前缀-->
    <property name="ReportName" value="TestReport" />
    <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="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="C:\Users\86158\Desktop\jmx\" includes="01-GET传参.jmx" />
			<testplans dir="C:\Users\86158\Desktop\jmx\" includes="02-用户定义的变量案例.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">
        <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>
  1. 命令行直接执行ant 执行jmx
C:\Users\86158\Desktop\jmx>ant
Buildfile: C:\Users\86158\Desktop\jmx\build.xml

run:

test:
   [jmeter] Executing test plan: C:\Users\86158\Desktop\jmx\01-GET传参.jmx ==> C:\Users\86158\Desktop\jmx\report\jtl\TestReport202207071004.jtl
   [jmeter] Creating summariser <summary>
   [jmeter] Created the tree successfully using C:\Users\86158\Desktop\jmx\01-GET传参.jmx
   [jmeter] Starting standalone test @ Thu Jul 07 22:04:26 CST 2022 (1657202666348)
   [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
   [jmeter] summary =      3 in 00:00:01 =    3.5/s Avg:   730 Min:   730 Max:   730 Err:     0 (0.00%)
   [jmeter] Tidying up ...    @ Thu Jul 07 22:04:27 CST 2022 (1657202667383)
   [jmeter] ... end of run
   [jmeter] Executing test plan: C:\Users\86158\Desktop\jmx\02-用户定义的变量案例.jmx ==> C:\Users\86158\Desktop\jmx\report\jtl\TestReport202207071004.jtl
   [jmeter] Creating summariser <summary>
   [jmeter] Created the tree successfully using C:\Users\86158\Desktop\jmx\02-用户定义的变量案例.jmx
   [jmeter] Starting standalone test @ Thu Jul 07 22:04:28 CST 2022 (1657202668443)
   [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
   [jmeter] summary =      1 in 00:00:01 =    1.5/s Avg:   565 Min:   565 Max:   565 Err:     0 (0.00%)
   [jmeter] Tidying up ...    @ Thu Jul 07 22:04:29 CST 2022 (1657202669312)
   [jmeter] ... end of run

report:
     [xslt] Processing C:\Users\86158\Desktop\jmx\report\jtl\TestReport202207071004.jtl to C:\Users\86158\Desktop\jmx\report\html\TestReport202207071004.html
     [xslt] Loading stylesheet F:\soft\apache-jmeter-5.4.1\extras\jmeter-results-detail-report_21.xsl

BUILD SUCCESSFUL
Total time: 4 seconds

原生报告:

6.优化报告:

下载模板:
copy 到jmeter 以下目录:

7.修复配置文件:

jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
jmeter.save.saveservice.response_data=true
# Save ResponseData for failed samples
jmeter.save.saveservice.response_data.on_error=false
jmeter.save.saveservice.response_message=true
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=true
jmeter.save.saveservice.assertions=true
jmeter.save.saveservice.latency=true
jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.responseHeaders=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.encoding=false
jmeter.save.saveservice.bytes=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.filename=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.idle_time=true
  1. 修改build.xml

遇到的问题:
Ant 运行报错:

D:\Users\win10\Desktop\jmx>ant
Buildfile: D:\Users\win10\Desktop\jmx\build.xml

run:

test:

BUILD FAILED
D:\Users\win10\Desktop\jmx\build.xml:19: The following error occurred while executing this line:
D:\Users\win10\Desktop\jmx\build.xml:25: The <jmeter> type doesn't support nested text data ("       ").

解决:
notepad++ 打开build.xml文件,用ANSI编码查看发现有乱码,删除即可

Linux 下 Ant & Jemkins 执行jmx

1.jenkins 环境安装 JDK,Jmeter,Ant

2.jenkins 下载ant插件

2.1
https://plugins.jenkins.io/ 搜索ant

2.2
将下载好的插件手动安装
2.3
重启jenkins:http://192.168.184.150:8888/reload

3.Global Tool Configuration -> Ant

默认是自动安装,不要勾选:

取消勾选后,自己配置

3.1 如果ant_home 没有配置好,jenkins 会报如下异常:
BUILD FAILED
/var/lib/jenkins/workspace/auto_test/build.xml:21: The following error occurred while executing this line:
/var/lib/jenkins/workspace/auto_test/build.xml:26: taskdef class org.programmerplanet.ant.taskdefs.jmeter.JMeterTask cannot be found
** using the classloader AntClassLoader[]**

Total time: 0 seconds
Build step 'Invoke Ant' marked build as failure
Finished: FAILURE

4.项目配置

4.1 文件来源

目的:从gitlab服务器拉取jmx脚本到jenkis server: /var/lib/jenkins/workspace 路径下

4.2 构建环境

4.3 构建:选择 invoke ant

5.再次构建,发现报错:

BUILD FAILED
/var/lib/jenkins/workspace/auto_test/build.xml:22: The following error occurred while executing this line:
/var/lib/jenkins/workspace/auto_test/build.xml:47: input file /root/test_report/jtl/TestReport202207090911.jtl does not exist

Total time: 0 seconds
Build step 'Invoke Ant' marked build as failure
Finished: FAILURE

原因:保存报告的结果的文件 /root/test_report/jtl/ 的权限不够

6.调整权限后再次构建:

Started by user zhangsan
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/auto_test
The recommended git tool is: NONE
using credential 3d010dc0-2220-4ec1-9a5e-f139c077dce3
 > git rev-parse --resolve-git-dir /var/lib/jenkins/workspace/auto_test/.git # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url http://192.168.184.149:82/test_group/autotest.git # timeout=10
Fetching upstream changes from http://192.168.184.149:82/test_group/autotest.git
 > git --version # timeout=10
 > git --version # 'git version 1.8.3.1'
using GIT_ASKPASS to set credentials gitlab-auth-http
 > git fetch --tags --progress http://192.168.184.149:82/test_group/autotest.git +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
Checking out Revision 2d34e963b1b09f8ef46c3d9a637e766d60c1ee0c (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 2d34e963b1b09f8ef46c3d9a637e766d60c1ee0c # timeout=10
Commit message: "update path"
 > git rev-list --no-walk bf14c30ee7ddd9cd069e4d0e32ce663687dfc53d # timeout=10
[auto_test] $ /opt/ant/bin/ant -file build.xml run
Buildfile: /var/lib/jenkins/workspace/auto_test/build.xml

run:

test:
   [jmeter] Executing test plan: /var/lib/jenkins/workspace/auto_test/01.jmx ==> /root/test_report/jtl/TestReport202207090914.jtl
   [jmeter] WARNING: An illegal reflective access operation has occurred
   [jmeter] WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:/opt/jmeter/lib/xstream-1.4.11.jar) to field java.util.TreeMap.comparator
   [jmeter] WARNING: Please consider reporting this to the maintainers of com.thoughtworks.xstream.core.util.Fields
   [jmeter] WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
   [jmeter] WARNING: All illegal access operations will be denied in a future release
   [jmeter] Creating summariser <summary>
   [jmeter] Created the tree successfully using /var/lib/jenkins/workspace/auto_test/01.jmx
   [jmeter] Starting the test @ Sat Jul 09 09:15:01 CST 2022 (1657329301606)
   [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
   [jmeter] Warning: Nashorn engine is planned to be removed from a future JDK release
   [jmeter] summary +      1 in 00:00:01 =    0.9/s Avg:   841 Min:   841 Max:   841 Err:     0 (0.00%) Active: 3 Started: 3 Finished: 0
   [jmeter] summary +      2 in 00:00:00 =   64.5/s Avg:   850 Min:   843 Max:   857 Err:     0 (0.00%) Active: 0 Started: 3 Finished: 3
   [jmeter] summary =      3 in 00:00:01 =    2.6/s Avg:   847 Min:   841 Max:   857 Err:     0 (0.00%)
   [jmeter] Tidying up ...    @ Sat Jul 09 09:15:03 CST 2022 (1657329303317)
   [jmeter] ... end of run
   [jmeter] Executing test plan: /var/lib/jenkins/workspace/auto_test/02.jmx ==> /root/test_report/jtl/TestReport202207090914.jtl
   [jmeter] WARNING: An illegal reflective access operation has occurred
   [jmeter] WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:/opt/jmeter/lib/xstream-1.4.11.jar) to field java.util.TreeMap.comparator
   [jmeter] WARNING: Please consider reporting this to the maintainers of com.thoughtworks.xstream.core.util.Fields
   [jmeter] WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
   [jmeter] WARNING: All illegal access operations will be denied in a future release
   [jmeter] Creating summariser <summary>
   [jmeter] Created the tree successfully using /var/lib/jenkins/workspace/auto_test/02.jmx
   [jmeter] Starting the test @ Sat Jul 09 09:15:05 CST 2022 (1657329305799)
   [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
   [jmeter] Warning: Nashorn engine is planned to be removed from a future JDK release
   [jmeter] summary =      1 in 00:00:01 =    1.1/s Avg:   674 Min:   674 Max:   674 Err:     0 (0.00%)
   [jmeter] Tidying up ...    @ Sat Jul 09 09:15:07 CST 2022 (1657329307265)
   [jmeter] ... end of run

report:
     [xslt] Processing /root/test_report/jtl/TestReport202207090914.jtl to /root/test_report/html/TestReport202207090914.html
     [xslt] Loading stylesheet /opt/jmeter/extras/jmeter.results.shanhe.me.xsl
     [copy] Copying 2 files to /root/test_report/html

BUILD SUCCESSFUL
Total time: 9 seconds
Finished: SUCCESS

7.下载插件htmlpublisher.hpi 并安装

  1. 配置构建后操作 htmlpublisher


htmlpublisher: 详细介绍参考:https://blog.csdn.net/xuecancan/article/details/78810960

  1. 项目路径下查看 HTML 报告


发现格式丢失:

解决办法:
下载插件:groovy.hpi
增加构建步骤:

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
参考:https://blog.csdn.net/weixin_35642637/article/details/118233135

posted @   chuangzhou  阅读(285)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示