Maven clean install在以下位置生成新的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]存档HTML报告... [htmlpublisher]在BUILD级别/ var / lib / jenkins / workspace / Docs_LoadTest / target / jmeter / reports / *存档到/ var / lib / jenkins / jobs / Docs_Pipeline / builds / 10 / htmlreports / Docs_Loadtest_Dashboard错误:指定的HTML目录'/ var / lib / jenkins / workspace / Docs_LoadTest / target / jmeter / reports / *'不存在 .
即使我们尝试以下选项也没有奏效
/ 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_ * _ *
2 回答
HTML Publisher plugin似乎不懂通配符 . 您可以在管道中执行的操作是使用Linux的复制命令,因为它可以使用通配符 .
这会将
[Docs_LoadTest]/jmeter/reports
文件夹中所有目录的内容复制到本地工作区中的jmeter_results
文件夹:请注意,您必须清除
Docs_LoadTest
文件夹中的目标文件夹和两次运行之间的管道,否则将使用此解决方案复制多个报告 .A better solution:
将在Docs_LoadTest中应用此技巧并使用“发布工件”和“复制工件”功能 . 这解决了必须硬编码到另一个作业的路径并且即使管道在Docs_LoadTest之外的另一个从站上执行也能工作 . 这确实需要Copy Artifacts plugin .
假设
Docs_LoadTest
是一个自由式工作:Execute Shell
构建步骤,将结果复制到固定文件夹,例如jmeter_results
:mkdir -p target/jmeter_results/ cp -r target/jmeter/reports/*/. target/jmeter_results/
target/jmeter_results/*
在您的管道中:
target/jmeter_results
文件夹:step ([$class: 'CopyArtifact', projectName: 'Docs_LoadTest', filter: 'target/jmeter_results/*']);
publishHTML([allowMissing: false, alwaysLinkToLastBuild: true, keepAll: true, reportDir: 'target/jmeter_results', reportFiles: 'index.html', reportName: 'Docs Loadtest Dashboard' ])
我遇到了类似的问题,只是我想发布多个报告 .
我最后做的是我添加了简单的groovy脚本来迭代报告目录中的文件 . 您可以使用相同/类似的方法来获取文件名 .
注意:此示例用于声明性管道 . 关于readFile功能的文档 .