什么是publishHtml reportFiles参数语法

时间:2017-06-30 14:14:36

标签: jenkins jenkins-pipeline

我正在尝试通过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的说明我应该可以指定多个文件。但是语法是什么?

6 个答案:

答案 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'
] )
  • reportFiles :第一个标签(测试结果)显示第一个reportFiles-TestResults.html,而第二个标签(覆盖率)显示第二个reportFiles-coverage / index.html。
  • 报告标题:此处的报告标题是标签的名称。
  • reportName 是在作业页面上看到的链接,该链接链接到已发布的html。

enter image description here

答案 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 但是:

publishHTML([
  reportName: 'Newman Report'
  reportDir: 'reports',
  reportFiles: "${dir('reports') { findFiles(glob: '**/*.html').join(',') ?: 'Not found' }}",
  allowMissing: true,
  alwaysLinkToLastBuild: true,
  keepAll: true,
])