Maven clean install在以下位置生成新的html文件
在/ var / lib中/ 詹金斯 </跨度> /workspace/Docs_LoadTest/target/jmeter/reports/DocsJmeterTests_20170601_151330/index.html
这里’’’){publishHTML([allowMissing:false, alwaysLinkToLastBuild:true, keepAll:是的, reportDir: “在/ var / lib中/ 詹金斯 </跨度> / workspace / Docs_LoadTest / target / jmeter / reports鈥
该 HTML Publisher插件 似乎不懂通配符。您可以在管道中执行的操作是使用Linux的复制命令,因为它可以使用通配符。
这复制了。中所有目录的内容 [Docs_LoadTest]/jmeter/reports 文件夹到 jmeter_results 本地工作区中的文件夹:
[Docs_LoadTest]/jmeter/reports
jmeter_results
sh 'cp -r /var/lib/jenkins/workspace/Docs_LoadTest/target/jmeter/reports/*/. target/jmeter_results/'
请注意,您必须清除目标文件夹中的两个 Docs_LoadTest 文件夹和两次运行之间的管道,否则将使用此解决方案复制多个报告。
Docs_LoadTest
的 更好的解决方案: 强>
将在Docs_LoadTest中应用此技巧并使用“发布工件”和“复制工件”功能。这解决了必须硬编码到另一个作业的路径并且即使管道在Docs_LoadTest之外的另一个从站上执行也能工作。这确实需要 复制Artifacts插件 。
假设 Docs_LoadTest 是一个自由式工作:
添加一个 Execute Shell 构建步骤将结果复制到固定文件夹,例如 jmeter_results :
Execute Shell
mkdir -p target/jmeter_results/ cp -r target/jmeter/reports/*/. target/jmeter_results/
然后添加Archive Artifacts Post Build Archive Step并将以下文件存档:
target/jmeter_results/*
在您的管道中:
使用“复制工件”步骤将文件复制到 target/jmeter_results 本地工作区中的文件夹:
target/jmeter_results
step ([$class: 'CopyArtifact', projectName: 'Docs_LoadTest', filter: 'target/jmeter_results/*']);
将调用更改为HTML发布者以使用此文件夹:
publishHTML([allowMissing: false, alwaysLinkToLastBuild: true, keepAll: true, reportDir: 'target/jmeter_results', reportFiles: 'index.html', reportName: 'Docs Loadtest Dashboard' ])
我遇到了类似的问题,只是我想发布多个报告。
我最后做的是我添加了简单的groovy脚本来迭代报告目录中的文件。您可以使用相同/类似的方法来获取文件名。
stage('publish reports') { steps { unstash 'source' script { sh 'ls target/jmeter/reports > listFiles.txt' def files = readFile("listFiles.txt").split("\\r?\\n"); sh 'rm -f listFiles.txt' for (i = 0; i < files.size(); i++) { publishHTML target: [ allowMissing:false, alwaysLinkToLastBuild: false, keepAll:true, reportDir: 'target/jmeter/reports/' + files[i], reportFiles: 'index.html', reportName: files[i] ] } } } }
注意:此示例用于声明性管道。关于。的文件 READFILE 功能。