针对詹金斯管道工作的Cobertura代码覆盖率报告

ebn*_*ius 42 cobertura jenkins jenkins-pipeline

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

Rom*_*lak 38

有一种方法可以添加管道步骤来发布您的覆盖率报告,但它不会显示在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])
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,Cobertura插件的其中一个参数是它将使用的XML(示例中为"**/coverage.xml").

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

nosetests --with-coverage --cover-xml --cover-package=pkg1,pkg2 --with-xunit test
Run Code Online (Sandbox Code Playgroud)

  • 你太棒了。谢谢。您有与此相关的任何文档的链接吗? (3认同)

hwj*_*wjp 26

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

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

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


chi*_*him 7

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

安装 Cobertura 插件后,您可以在

作业仪表板页面 -> 管道语法 -> 步骤参考

还有一个片段生成器,它对于开始使用非常有用

作业仪表板页面 -> 管道语法

示例命令:

cobertura coberturaReportFile: 'coverage.xml', enableNewApi: true, lineCoverageTargets: '80, 60, 70'
Run Code Online (Sandbox Code Playgroud)

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