Maven 全新安装在以下位置生成新的 html 文件
/var/lib/jenkins/workspace/Docs_LoadTest/target/jmeter/reports/DocsJmeterTests_20170601_151330/index.html
这里的“DocsJmeterTests_20170601_151330”每次运行都会改变。所以我尝试使用发布 html 报告插件来发布 html 报告。以下是我的管道脚本
node {
build job: 'Docs_LoadTest'
stage('Results') {
publishHTML([allowMissing: false,
alwaysLinkToLastBuild: true,
keepAll: true,
reportDir:
'/var/lib/jenkins/workspace/Docs_LoadTest/target/jmeter/reports/*/',
reportFiles: 'index.html',
reportName: 'Docs Loadtest Dashboard'
])
}
}
运行作业时出现以下错误
[htmlpublisher] Archiving HTML reports...
[htmlpublisher] Archiving at BUILD level /var/lib/jenkins/workspace/Docs_LoadTest/target/jmeter/reports/* to /var/lib/jenkins/jobs/Docs_Pipeline/builds/10/htmlreports/Docs_Loadtest_Dashboard
ERROR: Specified HTML directory '/var/lib/jenkins/workspace/Docs_LoadTest/target/jmeter/reports/*' does not exist.
即使我们尝试了以下选项也不起作用
/var/lib/jenkins/workspace/Docs_LoadTest/target/jmeter/reports/**/ /var/lib/jenkins/workspace/Docs_LoadTest/target/jmeter/reports/DocsJmeterTests_* /var/lib/jenkins/workspace/Docs_LoadTest/target/jmeter/reports/DocsJmeterTests_* _*
最佳答案
HTML Publisher plugin似乎不理解通配符。您可以在 Pipeline 中使用 Linux 的复制命令,因为它可以使用通配符。
这会将 [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 中应用此技巧并使用发布工件和复制工件功能。这可以解决必须硬编码到其他作业的路径的问题,并且即使 Pipeline 在 Docs_LoadTest 之外的另一个从属设备上执行,该方法也可以工作。这确实需要 Copy Artifacts plugin .
假设 Docs_LoadTest
是一个自由式作业:
添加一个
执行Shell
构建步骤,将结果复制到固定文件夹,例如jmeter_results
:mkdir -p 目标/jmeter_results/ cp -r 目标/jmeter/报告/*/。目标/jmeter_results/
然后添加一个存档工件构建后存档步骤,其中包含以下要存档的文件:
目标/jmeter_results/*
在您的管道中:
使用“复制工件”步骤将文件复制到本地工作区中的
target/jmeter_results
文件夹:step ([$class: 'CopyArtifact', 项目名称:'Docs_LoadTest', 过滤器:'target/jmeter_results/*']);
更改对 HTML 发布者的调用以使用此文件夹:
publishHTML([allowMissing: false, 总是LinkToLastBuild:true, 保持全部:真实, 报告目录:'目标/jmeter_results', 报告文件:'index.html', 报告名称:“文档负载测试仪表板” ])
关于Jenkins Pipeline 发布 html 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44306678/