web-dev-qa-db-fra.com

Couverture Jacoco dans le pipeline Jenkins

Quelqu'un peut-il suggérer s'il existe un moyen d'exécuter Jacoco dans un pipeline Jenkins? J'ai téléchargé le plug-in mais je ne trouve pas l'option pour Jacoco dans la "Syntaxe du pipeline", qui est l'aide du script Pipeline.

A référé cette URL: https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin qui n'a aucune information pour un pipeline jenkins jacoco

35
user5917011

Après avoir essayé de parcourir Internet pour trouver un exemple simple expliquant comment faire cela, j’ai finalement trouvé l’outil "step" dans notre instance Jenkins.

Il sait comment générer des extraits de code de pipeline Jenkinsfile en fonction des plug-ins et des modules que vous avez installés.

En résumé, l'entrée de base ressemble à ceci:

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

La documentation de jenkins nécessite vraiment une mise à jour avec des exemples one-liner.

Example from Jenkins 2.32.x

27
Jeffrey Zampieron

La configuration de l'étape de pipeline jacoco utilise ce format:

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

Ou avec une syntaxe plus simple pour le pipeline déclaratif:

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

Vous pouvez trouver plus d'options dans le Référence des étapes du pipeline JaCoCo

23
user2688838

À partir du plugin Jacoco 2.2.1, vous pouvez maintenant utiliser jacoco(execPattern: 'target/jacoco.exec')

Personnellement, j'ai plusieurs fichiers Jacoco pour différentes exécutions et je voulais prendre en charge les répertoires Maven et Gradle (donc les répertoires build/ Et target/), Et j'utilise donc jacoco(execPattern: '**/*.exec').

Référence: https://github.com/jenkinsci/jacoco-plugin/pull/8

16
phillipuniverse

Si vous regardez un liste des plugins compatibles avec pipeline , vous constaterez que Jenkins JaCoCo Plugin a été rendu compatible , mais sans aucune mise à jour de la documentation, sauf entrée dans changelog :

Version 2.1.0 (29 septembre 2016)

JENKINS-27120 Ajout du support de flux de travail pour l'éditeur JaCoCo

probablement parce que son utilisation est simple et semblable à celle de nombreuses autres étapes:

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

La meilleure façon d’utiliser le plugin de Jacoco jenkins est de générer l’exécutable ( jacoco.exec ) dans l'application, puis en pointant l'emplacement de ce fichier dans le pipeline. Bien que pour un projet multi-module, la configuration serait légèrement différente, voir: Couverture de code Jacoco pour un projet multi-module maven

Le pipeline Jenkins ressemblerait à ceci:

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