如何在Jenkins中借助jmeter-maven-plugin展示JMeter测试性能趋势?
解决Jenkins Performance插件读取jmeter-maven-plugin动态文件名的问题
我来帮你搞定这个头疼的文件名不固定的问题!其实核心思路就是要么让生成的结果文件名固定,要么让Jenkins能精准找到动态生成的文件,下面给你几个实用的方案:
方案1:固定jmeter-maven-plugin的结果文件名(最推荐)
直接在你的pom.xml里配置插件,强制生成固定名称的jtl文件,还能关掉默认的时间戳后缀。修改后的插件配置大概是这样:
<plugin> <groupId>com.lazerycode.jmeter</groupId> <artifactId>jmeter-maven-plugin</artifactId> <version>3.5.0</version> <!-- 替换成你实际使用的插件版本 --> <executions> <execution> <id>run-jmeter-tests</id> <goals> <goal>jmeter</goal> </goals> </execution> </executions> <configuration> <!-- 自定义固定的结果文件名 --> <resultsFileName>jenkins-jmeter-results</resultsFileName> <!-- 关闭自动追加时间戳到文件名 --> <appendResultsTimestamp>false</appendResultsTimestamp> </configuration> </plugin>
配置完之后,每次构建都会生成jenkins-jmeter-results.jtl,直接在Jenkins Performance插件里填写这个固定路径就行,再也不用纠结文件名变化了。
方案2:在Jenkins构建步骤中重命名动态文件
如果没法修改pom.xml的配置,那可以在Jenkins里加一个构建步骤,把最新生成的jtl文件重命名为固定名称。
Linux/macOS环境(Shell脚本步骤)
# 定位到jmeter结果目录,找到最新的jtl文件并重命名 RESULT_DIR="${WORKSPACE}/target/jmeter/results" LATEST_JTL=$(find "$RESULT_DIR" -name "*.jtl" -type f | sort -r | head -1) mv -f "$LATEST_JTL" "$RESULT_DIR/fixed-jmeter-results.jtl"
Windows环境(批处理步骤)
@echo off set RESULT_DIR=%WORKSPACE%\target\jmeter\results for /f "delims=" %%f in ('dir /b /o-d "%RESULT_DIR%\*.jtl"') do ( move /y "%RESULT_DIR%\%%f" "%RESULT_DIR%\fixed-jmeter-results.jtl" exit /b )
之后在Performance插件里指定fixed-jmeter-results.jtl这个路径就可以了。
方案3:用通配符让Performance插件自动匹配
如果以上两种都不适用,还可以在Jenkins Performance插件的配置里用通配符来匹配结果文件。比如把结果文件路径设为**/*.jtl,这样插件会自动扫描所有jtl文件。不过要注意:如果一次构建生成多个jtl文件,插件会全部读取,可能导致结果展示混乱,所以这个方案更适合单次构建只生成一个jtl文件的场景。
额外注意事项
- 确保Jenkins构建用户有足够的权限去访问、修改jmeter结果目录下的文件
- 如果是多模块Maven项目,要调整路径到对应模块的
target/jmeter/results目录下 - 配置完成后,手动触发一次构建,检查结果目录下的文件是否符合预期,再验证Performance插件是否能正常读取展示结果
内容的提问来源于stack exchange,提问作者Caio Dornelles Antunes
相关产品推荐
相关产品推荐

