jenkins 管道作业的 Cobertura 代码覆盖率报告

Cobertura code coverage report for jenkins pipeline jobs

我正在使用 jenkins 的管道插件,我想为每个 运行 生成代码覆盖率报告并将其与管道 ui 一起显示。有没有我可以使用的插件(例如 Cobertura,但管道似乎不支持它)?

使用指定目录中的 command line cobertura-report 生成报告并将结果作为工件附加。

cobertura-report   [--datafile   file]    --destination  dir  [--format
       html|xml]  [--encoding encoding]  directory [--basedir dir]

有一种方法可以添加管道步骤来发布您的覆盖率报告,但它不会显示在 BlueOcean 界面下。它会正常显示 UI.

pipeline {
    agent any

    stages {
        ...
    }
    post {
        always {
            junit '**/nosetests.xml'
            step([$class: 'CoberturaPublisher', autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: '**/coverage.xml', failUnhealthy: false, failUnstable: false, maxNumberOfBuilds: 0, onlyStable: false, sourceEncoding: 'ASCII', zoomCoverageChart: false])
        }
    }
}

请注意,Cobertura 插件的参数之一是它将使用的 XML(示例中的“**/coverage.xml”)。

如果您使用的是 python,您需要使用如下内容:

nosetests --with-coverage --cover-xml --cover-package=pkg1,pkg2 --with-xunit test

现在您也可以在 Jenkinsfile 中直接使用 cobertura 命令

stage ("Extract test results") {
    cobertura coberturaReportFile: 'path-to/coverage.xml'
}

来源:https://issues.jenkins-ci.org/browse/JENKINS-30700

hwjp 的答案是正确的,但是您可以在命令中添加一些不容易找到的额外参数。

安装 Cobertura 插件后,您可以在

中找到 Cobertura 步骤选项

Job Dashboard Page -> Pipeline Syntax -> Steps Reference

还有一个片段生成器,对于入门非常有用

Job Dashboard Page -> Pipeline Syntax

示例命令:

cobertura coberturaReportFile: 'coverage.xml', enableNewApi: true, lineCoverageTargets: '80, 60, 70'

enableNewApi 是一个很好的设置为 true,因为新的 API 更漂亮 :D 如果代码覆盖率太低,设置覆盖率目标将自动失败