2017-04-12 84 views
0

我有以下詹金斯管道腳本運行JMeter的測試,並從JTL文件詹金斯管道 - 的JMeter業績報告

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 
+0

你確定你需要使用\\。我在命令中使用\。你可以查看這個鏈接http://qainsights.com/integrate-apache-jmeter-jenkins/ –

+0

@NaveenKumarNamachivayam是的,我需要使用\\,因爲它在Jenkins管道作業中的groovy腳本 – RanPaul

回答