Покрытие Jacoco в трубопроводе Дженкинс

Может ли кто-нибудь предположить, есть ли способ выполнить Якоко в трубопроводе Дженкинса? Я загрузил плагин, но у меня нет возможности для Jacoco в "Синтаксисе трубопровода", который представляет собой справку Pipeline script.

Ссылка на этот URL: https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin который не имеет информации для трубопровода jenkins jacoco

Ответ 1

После попытки поиска в Интернете простого примера того, как это сделать, я в конце концов нашел инструмент "шаг" в нашем экземпляре Jenkins.

Он знает, как создавать фрагменты кода конвейера Jenkinsfile на основе установленных вами модулей и модулей.

Длинным и коротким является то, что основная запись выглядит так:

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

Документация jenkins действительно нуждается в обновлении с некоторыми примерами с одним слоем.

Пример из Jenkins 2.32.x

Ответ 2

Конфигурация шага конвейера jacoco использует этот формат:

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

Или с более простым синтаксисом для декларативного конвейера:

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

Вы можете найти больше опций в Справочнике по JaCoCo Pipeline Steps.

Ответ 3

Начиная с плагина 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

Ответ 4

Если вы посмотрите на список плагинов, совместимых с конвейером, вы увидите, что Jenkins JaCoCo Plugin было совместимо, но без какого-либо обновления документации, кроме запись в журнал изменений:

Версия 2.1.0 (29 сентября 2016 года)

JENKINS-27120 Добавление поддержки Workflow для издателя JaCoCo

возможно потому, что его использование простое и похоже на использование многих других шагов:

step([$class: 'JacocoPublisher', ...])

Ответ 5

Лучший способ использовать плагин Jacoco jenkins - это создать исполняемый файл (jacoco.exec) в приложении, а затем указать местоположение этого файла в конвейере. Хотя для многомодульного проекта конфигурация будет немного отличаться, см. покрытие кода Jacoco для многомодульного проекта maven

Трубопровод Дженкинса будет выглядеть так:

jacoco(
    execPattern: '**/path_to_file/jacoco.exec',
    classPattern: '**/coverage/**',
    sourcePattern: '**/coverage/**',
    inclusionPattern: '**/*.class'
)