Jmeter(maven) 不在 jenkins 上 运行 但在本地 运行
Jmeter(maven) doesn't run on jenkins but runs locally
我创建了一个测试项目 (maven) 来测试 REST API 的性能。我正在使用 Jmeter 插件
这是我的 pom 片段
<build>
<plugins>
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>2.5.0</version>
<executions>
<execution>
<id>jmeter-tests</id>
<goals>
<goal>jmeter</goal>
</goals>
</execution>
</executions>
<configuration>
<resultsDirectory>/tmp/jmeter</resultsDirectory>
</configuration>
</plugin>
</plugins>
</build>
我的项目中有一个这样的 JenkinsFile
pipeline {
agent any
environment {
BRANCH_NAME = "${env.PIPELINE_BRANCH_NAME}"
}
stages {
stage('SCM checkout') {
steps {
.......
}
}
stage('Execute Jmeter tests') {
steps {
echo '****************************************\r*** Execute Jmeter tests'
withMaven(jdk: 'JDK 8', maven: 'aer Maven 3') {
sh 'mvn jmeter:jmeter'
performanceReport parsers: [[$class: 'JMeterParser', glob: '/tmp/jmeter/**/*.jtl']], sourceDataFiles: "/tmp/jmeter/*.jtl", modePerformancePerTestCase: true, failBuildIfNoResultFile:true
}
}
}
}
}
当我在 Jenkins 上触发构建时,构建成功,我在控制台输出中看到了这一点
.......
[INFO] Creating summariser <summary>
[INFO] Created the tree successfully using /mypath/....../testFiles/mytest.jmx
[INFO] Starting the test @ Fri Aug 24 21:51:37 CEST 2018 (1535140297393)
[INFO] Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
[INFO] summary = 0 in 00:00:00 = ******/s Avg: 0 Min: 9223372036854775807 Max: -9223372036854775808 Err: 0 (0.00%)
[INFO] Tidying up ... @ Fri Aug 24 21:51:40 CEST 2018 (1535140300073)
[INFO] ... end of run
[INFO] Completed Test: /global/otdci/apps/build_server/jenkins/jobs/SCMAER/jobs/SCMAER-TEST-performancetesting/workspace/target/jmeter/testFiles/MaterialGroup.jmx
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.012 s
[INFO] Finished at: 2018-08-24T21:51:40+02:00
[INFO] Final Memory: 20M/615M
[INFO] ---------------------------------------------
问题是,它什么也没做。性能趋势图不显示任何内容。
如果我 运行 在我的本地机器上使用同一个项目,它工作得很好。我在日志中看到类似这样的内容,证实了这一点。而且生成的输出文件(.jtl 文件)也是正确的。
[INFO] Starting the test @ Fri Aug 24 22:02:21 CEST 2018 (1535140941482)
[INFO] Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
[INFO] summary + 177 in 00:00:08 = 21.2/s Avg: 184 Min: 117 Max: 1366 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary + 910 in 00:00:30 = 30.4/s Avg: 165 Min: 115 Max: 3205 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary = 1087 in 00:00:38 = 28.4/s Avg: 168 Min: 115 Max: 3205 Err: 0 (0.00%)
[INFO] summary + 964 in 00:00:30 = 32.1/s Avg: 154 Min: 110 Max: 3193 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary = 2051 in 00:01:08 = 30.0/s Avg: 162 Min: 110 Max: 3205 Err: 0 (0.00%)
[INFO] summary + 966 in 00:00:30 = 32.1/s Avg: 156 Min: 113 Max: 3199 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary = 3017 in 00:01:38 = 30.7/s Avg: 160 Min: 110 Max: 3205 Err: 0 (0.00%)
[INFO] summary + 948 in 00:00:30 = 31.7/s Avg: 157 Min: 114 Max: 3194 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary = 3965 in 00:02:08 = 30.9/s Avg: 159 Min: 110 Max: 3205 Err: 0 (0.00%)
[INFO] summary + 862 in 00:00:30 = 28.6/s Avg: 170 Min: 115 Max: 3226 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary = 4827 in 00:02:38 = 30.5/s Avg: 161 Min: 110 Max: 3226 Err: 0 (0.00%)
[INFO] summary + 185 in 00:00:06 = 30.1/s Avg: 178 Min: 115 Max: 3191 Err: 0 (0.00%) Active: 0 Started: 5 Finished: 5
[INFO] summary = 5012 in 00:02:45 = 30.5/s Avg: 162 Min: 110 Max: 3226 Err: 0 (0.00%)
[INFO] Tidying up ... @ Fri Aug 24 22:05:06 CEST 2018 (1535141106249)
[INFO] ... end of run
这是我的测试计划的片段
知道为什么 运行ning 不在 Jenkins 上吗?任何调试这个的指针?
对于面临相同问题的任何人。这是解决方案以及我是如何找到它的。
首先问题很简单。在我的测试计划 (jmx) 中,我将 csv 文件用作 'CSV Data Set Config'。我放了这样的东西
inputFiles\materialstamm.csv
这在我的本地机器上运行良好,因为我在 windows 上 运行。而且它在 Jenkins 上不起作用,因为它是一台 Unix 机器。在我将其更改为
之后
inputFiles/materialstamm.csv
我的 jenkins 构建 运行 正确启动。
现在到了找出问题的地步。这非常困难,因为 Jmeter 在构建过程中没有报告任何内容。即使我启用了 Maven 调试。
因为它无法加载我的数据集(通过 csv 文件),所以它只是跳过这个并假设没有数据,最终构建的状态为 成功,但没有任何 report/result。
诀窍是寻找 Jmeter 日志文件。 Jmeter在...../workspace/target/jmeter/logs/testplanname.log.
下生成日志文件
但是我没有控制台访问 jenkins 机器,而且我在 Jenkins 上默认没有看到工作区文件夹 UI。 This
答案帮助我获得了工作区文件夹。当我检查那里的日志时,它清晰可见,因为 jmeter 抛出一个异常,说它找不到 csv 文件。
我创建了一个测试项目 (maven) 来测试 REST API 的性能。我正在使用 Jmeter 插件
这是我的 pom 片段
<build>
<plugins>
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>2.5.0</version>
<executions>
<execution>
<id>jmeter-tests</id>
<goals>
<goal>jmeter</goal>
</goals>
</execution>
</executions>
<configuration>
<resultsDirectory>/tmp/jmeter</resultsDirectory>
</configuration>
</plugin>
</plugins>
</build>
我的项目中有一个这样的 JenkinsFile
pipeline {
agent any
environment {
BRANCH_NAME = "${env.PIPELINE_BRANCH_NAME}"
}
stages {
stage('SCM checkout') {
steps {
.......
}
}
stage('Execute Jmeter tests') {
steps {
echo '****************************************\r*** Execute Jmeter tests'
withMaven(jdk: 'JDK 8', maven: 'aer Maven 3') {
sh 'mvn jmeter:jmeter'
performanceReport parsers: [[$class: 'JMeterParser', glob: '/tmp/jmeter/**/*.jtl']], sourceDataFiles: "/tmp/jmeter/*.jtl", modePerformancePerTestCase: true, failBuildIfNoResultFile:true
}
}
}
}
}
当我在 Jenkins 上触发构建时,构建成功,我在控制台输出中看到了这一点
.......
[INFO] Creating summariser <summary>
[INFO] Created the tree successfully using /mypath/....../testFiles/mytest.jmx
[INFO] Starting the test @ Fri Aug 24 21:51:37 CEST 2018 (1535140297393)
[INFO] Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
[INFO] summary = 0 in 00:00:00 = ******/s Avg: 0 Min: 9223372036854775807 Max: -9223372036854775808 Err: 0 (0.00%)
[INFO] Tidying up ... @ Fri Aug 24 21:51:40 CEST 2018 (1535140300073)
[INFO] ... end of run
[INFO] Completed Test: /global/otdci/apps/build_server/jenkins/jobs/SCMAER/jobs/SCMAER-TEST-performancetesting/workspace/target/jmeter/testFiles/MaterialGroup.jmx
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.012 s
[INFO] Finished at: 2018-08-24T21:51:40+02:00
[INFO] Final Memory: 20M/615M
[INFO] ---------------------------------------------
问题是,它什么也没做。性能趋势图不显示任何内容。
如果我 运行 在我的本地机器上使用同一个项目,它工作得很好。我在日志中看到类似这样的内容,证实了这一点。而且生成的输出文件(.jtl 文件)也是正确的。
[INFO] Starting the test @ Fri Aug 24 22:02:21 CEST 2018 (1535140941482)
[INFO] Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
[INFO] summary + 177 in 00:00:08 = 21.2/s Avg: 184 Min: 117 Max: 1366 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary + 910 in 00:00:30 = 30.4/s Avg: 165 Min: 115 Max: 3205 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary = 1087 in 00:00:38 = 28.4/s Avg: 168 Min: 115 Max: 3205 Err: 0 (0.00%)
[INFO] summary + 964 in 00:00:30 = 32.1/s Avg: 154 Min: 110 Max: 3193 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary = 2051 in 00:01:08 = 30.0/s Avg: 162 Min: 110 Max: 3205 Err: 0 (0.00%)
[INFO] summary + 966 in 00:00:30 = 32.1/s Avg: 156 Min: 113 Max: 3199 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary = 3017 in 00:01:38 = 30.7/s Avg: 160 Min: 110 Max: 3205 Err: 0 (0.00%)
[INFO] summary + 948 in 00:00:30 = 31.7/s Avg: 157 Min: 114 Max: 3194 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary = 3965 in 00:02:08 = 30.9/s Avg: 159 Min: 110 Max: 3205 Err: 0 (0.00%)
[INFO] summary + 862 in 00:00:30 = 28.6/s Avg: 170 Min: 115 Max: 3226 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary = 4827 in 00:02:38 = 30.5/s Avg: 161 Min: 110 Max: 3226 Err: 0 (0.00%)
[INFO] summary + 185 in 00:00:06 = 30.1/s Avg: 178 Min: 115 Max: 3191 Err: 0 (0.00%) Active: 0 Started: 5 Finished: 5
[INFO] summary = 5012 in 00:02:45 = 30.5/s Avg: 162 Min: 110 Max: 3226 Err: 0 (0.00%)
[INFO] Tidying up ... @ Fri Aug 24 22:05:06 CEST 2018 (1535141106249)
[INFO] ... end of run
这是我的测试计划的片段
对于面临相同问题的任何人。这是解决方案以及我是如何找到它的。
首先问题很简单。在我的测试计划 (jmx) 中,我将 csv 文件用作 'CSV Data Set Config'。我放了这样的东西
inputFiles\materialstamm.csv
这在我的本地机器上运行良好,因为我在 windows 上 运行。而且它在 Jenkins 上不起作用,因为它是一台 Unix 机器。在我将其更改为
之后inputFiles/materialstamm.csv
我的 jenkins 构建 运行 正确启动。
现在到了找出问题的地步。这非常困难,因为 Jmeter 在构建过程中没有报告任何内容。即使我启用了 Maven 调试。
因为它无法加载我的数据集(通过 csv 文件),所以它只是跳过这个并假设没有数据,最终构建的状态为 成功,但没有任何 report/result。
诀窍是寻找 Jmeter 日志文件。 Jmeter在...../workspace/target/jmeter/logs/testplanname.log.
下生成日志文件但是我没有控制台访问 jenkins 机器,而且我在 Jenkins 上默认没有看到工作区文件夹 UI。 This 答案帮助我获得了工作区文件夹。当我检查那里的日志时,它清晰可见,因为 jmeter 抛出一个异常,说它找不到 csv 文件。