jenkins+ant+jmeter运行Jenkins时报错

问题

jenkins+ant+jmeter运行Jenkins时报错

报错信息

Started by timer
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/jmeterTest
[script] $ /opt/Ant/apache-ant-1.10.13/bin/ant -file build.xml run
Buildfile: /opt/JMeter/apache-jmeter-5.5/script/build.xml

run:

test:
[jmeter] Executing test plan: /opt/JMeter/apache-jmeter-5.5/script/查询磅单.jmx ==> /opt/JMeter/apache-jmeter-5.5/result/jtl/TestReport20230304_0536.jtl
[jmeter] Creating summariser


[jmeter] Created the tree successfully using /opt/JMeter/apache-jmeter-5.5/script/查询磅单.jmx
[jmeter] Starting standalone test @ 2023 Mar 4 17:36:02 CST (1677922562730)
[jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
[jmeter] summary + 1 in 00:00:01 = 1.4/s Avg: 547 Min: 547 Max: 547 Err: 0 (0.00%) Active: 1 Started: 1 Finished: 0
[jmeter] summary + 10 in 00:00:13 = 0.8/s Avg: 1325 Min: 122 Max: 10284 Err: 0 (0.00%) Active: 0 Started: 1 Finished: 1
[jmeter] summary = 11 in 00:00:14 = 0.8/s Avg: 1254 Min: 122 Max: 10284 Err: 0 (0.00%)
[jmeter] Tidying up … @ 2023 Mar 4 17:36:16 CST (1677922576828)
[jmeter] … end of run

report:

BUILD FAILED
/opt/JMeter/apache-jmeter-5.5/script/build.xml:22: The following error occurred while executing this line:
/opt/JMeter/apache-jmeter-5.5/script/build.xml:45: specify the stylesheet either as a filename in style attribute or as a nested resource

Total time: 16 seconds
Build step ‘Invoke Ant’ marked build as failure
[htmlpublisher] Archiving HTML reports…
[htmlpublisher] Archiving at PROJECT level /opt/JMeter/apache-jmeter-5.5/result/html to /var/lib/jenkins/jobs/jmeterTest/htmlreports/HTML_20Report
Finished: FAILURE

环境 build.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<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="/opt/JMeter/apache-jmeter-5.5/script" includes="*.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="yyyyMMdd_hhmm"/></tstamp>
    <xslt 
          classpathref="xslt.classpath"
          force="true"
          in="${jmeter.result.jtlName}"
          out="${jmeter.result.htmlName}"
          style="${jmeter.home}/extras/jmeter-results-shanhe-me.xsl">
          <!--style="${jmeter.home}/extras/jmeter-results-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>

Jenkins配置


要确保确保样式表文件路径正确

image
应该是没问题?

检查一下jmeter.home参数是否正确

顺便清空一下{jmeter.result.html.dir}


应该是对的

还是相同的报错吗,因为 这个错误是说在 xslt 标签中没有正确指定样式表文件

都是报这个,我不用Jenkins执行 是正常的。

同个服务器直接运行是正常的是吧

是的 正常的

那我感觉就是环境变量的差异了,可能你在jenkins上有些变量跟服务器的对不上的


那些配置? 试了很久 没找到原因

在xml把变量都打印看看
<echo message="The value of my.variable is ${my.variable}" />

直接在标签里面加这段代码? 换是我要一个个加

把报错那里的代码加一下吧,然后用jenkins构建

copy那边让它能强行覆盖


这样吗? 试了好像不行

那要不copy语句放到外面去执行

我把copy那部分注释掉 都不行

把你现在ant的脚本再发一次