詹金斯管道中的Jacoco报道

use*_*011 35 groovy jenkins jacoco jenkins-plugins

任何人都可以建议是否有办法在Jenkins管道中执行Jacoco?我已经下载了插件但是我没有在'Pipeline Syntax'中获得Jacoco选项,这是Pipeline脚本帮助.

提到此URL:https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin,其中没有jenkins jacoco管道的信息

小智 28

在尝试搜索互联网以获得如何执行此操作的简单示例后,我最终在Jenkins实例中找到了"步骤"工具.

它知道如何根据您安装的插件和模块生成Jenkinsfile管道代码片段.

它的长短是基本条目看起来像:

stage('Build') {
     steps {
        sh './jenkins_build.sh'
        junit '*/build/test-results/*.xml'
        step( [ $class: 'JacocoPublisher' ] )
     }
}
Run Code Online (Sandbox Code Playgroud)

jenkins文档确实需要更新一些单行示例.

Jenkins 2.32.x的示例


use*_*838 26

jacoco管道步骤配置使用以下格式:

step([$class: 'JacocoPublisher', 
      execPattern: 'target/*.exec',
      classPattern: 'target/classes',
      sourcePattern: 'src/main/java',
      exclusionPattern: 'src/test*'
])
Run Code Online (Sandbox Code Playgroud)

或者使用更简单的声明性管道语法:

jacoco( 
      execPattern: 'target/*.exec',
      classPattern: 'target/classes',
      sourcePattern: 'src/main/java',
      exclusionPattern: 'src/test*'
)
Run Code Online (Sandbox Code Playgroud)

您可以在JaCoCo Pipeline Steps Reference中找到更多选项


phi*_*rse 16

从Jacoco插件2.2.1开始,您现在可以使用 jacoco(execPattern: 'target/jacoco.exec')

我个人有几个不同的Jacoco文件用于不同的执行,并希望支持Maven和Gradle(所以build/target/目录),所以我使用jacoco(execPattern: '**/*.exec').

参考:https://github.com/jenkinsci/jacoco-plugin/pull/83

  • 警告:如果您没有指定类模式或排除模式,那么 Jenkins 会将您的测试类包含在覆盖率报告中,这会完全扭曲数字。对于 gradle 构建,这就是我现在使用的: `jacoco(execPattern: '**/build/jacoco/**.exec', classPattern: '**/classes/*/main')` (3认同)