我有下面的Jenkins管道脚本来运行JTL测试并从JTL文件中生成一个报告
node('master') {
stage 'Run JMeter Test'
def workspace = pwd()
def jmeterTestFile = 'jenkins_test'
echo "workspace = ${workspace}"
echo "env.WORKSPACE = ${env.WORKSPACE}"
bat "${workspace}\\jmeter\\bin\\jmeter.bat -n -t ${workspace}\\jmeter_scripts\\${jmeterTestFile}.jmx -l ${workspace}\\jmeter_scripts\\${jmeterTestFile}_results.jtl"
step([$class: 'ArtifactArchiver', artifacts: 'CP-Perf-Report.html,**/*.jtl, **/jmeter.log', fingerprint: true])
//perfReport "jmeter_scripts\\${jmeterTestFile}_results.jtl"
performanceReport parsers: [[$class: 'JMeterParser', glob: "jmeter_scripts\\${jmeterTestFile}_results.jtl"]], relativeFailedThresholdNegative: 1.2, relativeFailedThresholdPositive: 1.89, relativeUnstableThresholdNegative: 1.8, relativeUnstableThresholdPositive: 1.5
}最初,我尝试用perfReport "jmeter_scripts\\${jmeterTestFile}_results.jtl"命令创建报告,但它在FileNotFoundException中失败了,所以我尝试了使用performanceReport parsers的替代方法,但即使这样,使用FileNotFoundException还是失败了,但是我可以手动打开c:\tools\jenkins\workspace\PerformanceTesting\jmeter_scripts\jenkins_test_results.jtl文件并查看测试报告。有人能帮我解决这个问题吗?
workspace = c:\tools\jenkins\workspace\PerformanceTesting
[Pipeline] echo
env.WORKSPACE = c:\tools\jenkins\workspace\PerformanceTesting
[Pipeline] step
Archiving artifacts
Recording fingerprints
[Pipeline] step
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
java.io.FileNotFoundException: c:\tools\jenkins\workspace\PerformanceTesting\jmeter_scripts\jenkins_test_results.jtl (The system cannot find the path specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
at hudson.plugins.performance.parsers.ParserDetector.detect(ParserDetector.java:21)
at hudson.plugins.performance.parsers.ParserFactory.getParser(ParserFactory.java:26)
at hudson.plugins.performance.PerformancePublisher.getParsers(PerformancePublisher.java:439)
at hudson.plugins.performance.PerformancePublisher.perform(PerformancePublisher.java:481)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:69)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:59)
at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1$1.call(AbstractSynchronousNonBlockingStepExecution.java:52)
at hudson.security.ACL.impersonate(ACL.java:221)
at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1.run(AbstractSynchronousNonBlockingStepExecution.java:49)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Finished: FAILURE发布于 2017-04-13 04:34:58
我看不到在日志中运行JMeter测试的任何迹象,因此我建议修改管道脚本如下:
\\斜杠转换为/斜杠%WORKSPACE%而不是${workspace}形式的变量参考资料见下列指南:
https://stackoverflow.com/questions/43377945
复制相似问题