我正在尝试通过Jenkinsfile为Jenkins配置HTML Publisher插件,以发布这样的几个html文件:
publishHTML(
target: [
allowMissing : false,
alwaysLinkToLastBuild: false,
keepAll : true,
reportDir : 'my-project-grails/build/reports/codenarc',
reportFiles : 'test.html',
reportName : "Codenarc Report"
]
)
reportFiles
参数here的说明我应该可以指定多个文件。但是语法是什么?
答案 0 :(得分:6)
“您可以指定多个以逗号分隔的页面,每个页面都是报告页面上的标签页”(来自plugin docs)。
所以我认为是:
reportFiles: 'test.html,other.html'
它可以支持*.html
之类的通配符吗?不,但https://issues.jenkins-ci.org/browse/JENKINS-7139有一些解决方法。
答案 1 :(得分:4)
如果你有几个HTML文件,但不知道他们的名字,也不提前计算,你可以这样做:
def htmlFiles
dir ('reports') {
htmlFiles = findFiles glob: '*.html'
}
publishHTML([
reportDir: 'reports',
reportFiles: htmlFiles.join(','),
reportName: 'Newman Collection Results',
allowMissing: true,
alwaysLinkToLastBuild: true,
keepAll: true])
答案 2 :(得分:0)
原始问题中存在语法问题。 -> reportFiles之后缺少“,”:'test.html' 这导致DSL解释器期望另一个HTML文件
答案 3 :(得分:0)
您可以指定多个文件及其位置。
publishHTML( [
allowMissing: false,
alwaysLinkToLastBuild: false,
keepAll: true,
reportDir: 'build/reports/',
reportFiles: 'TestResults.html, coverage/index.html',
reportTitles: 'Test Results, Coverage',
reportName: 'Test Results Left side link'
] )
答案 4 :(得分:0)
Sebien 使用 findFiles
的回答有效,但它带来了一个大问题。 findFiles
返回一个数组,如果该数组为空并加入,则返回一个空字符串,导致发布工作区下的所有文件。为避免这种情况,请执行以下操作:
def htmlFiles = findFiles glob: '*.html'
htmlFiles = htmlFiles.join(",") ?: "Not Found"
并设置 allowMissing: true
。也无需在 htmlFiles
闭包内定义 dir ('reports')
。
答案 5 :(得分:0)
作为 Sebien's answer 但是:
script
块内publishHTML([
reportName: 'Newman Report'
reportDir: 'reports',
reportFiles: "${dir('reports') { findFiles(glob: '**/*.html').join(',') ?: 'Not found' }}",
allowMissing: true,
alwaysLinkToLastBuild: true,
keepAll: true,
])