webentwicklung-frage-antwort-db.com.de

Jacoco-Berichterstattung in der Jenkins-Pipeline

Kann jemand vorschlagen, ob es eine Möglichkeit gibt, Jacoco in einer Jenkins-Pipeline auszuführen? Ich habe das Plugin heruntergeladen, erhalte aber keine Option für Jacoco in der 'Pipeline-Syntax', der Pipeline-Skript-Hilfe.

Verweis auf diese URL: https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin die keine Informationen für eine Jenkins-Jacoco-Pipeline enthält

35
user5917011

Nachdem ich versucht hatte, das Internet nach einem einfachen Beispiel zu durchsuchen, fand ich schließlich das "step" -Tool in unserer Jenkins-Instanz.

Es kann anhand der von Ihnen installierten Plugins und Module Ausschnitte aus dem Jenkinsfile-Pipeline-Code generieren.

Das lange und kurze daran ist, dass der Grundeintrag so aussieht:

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

Die Jenkins-Dokumentation muss unbedingt aktualisiert werden und enthält einige einzeilige Beispiele.

Example from Jenkins 2.32.x

27

Die jacoco-Pipeline-Schrittkonfiguration verwendet dieses Format:

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

Oder mit einer einfacheren Syntax für deklarative Pipeline:

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

Weitere Optionen finden Sie in der JaCoCo Pipeline Steps Reference

23
user2688838

Ab dem Jacoco-Plugin 2.2.1 können Sie nun jacoco(execPattern: 'target/jacoco.exec') verwenden.

Ich persönlich habe ein paar verschiedene Jacoco-Dateien für verschiedene Ausführungen und wollte sowohl Maven als auch Gradle (also die Verzeichnisse build/ Und target/) Unterstützen, also verwende ich jacoco(execPattern: '**/*.exec').

Referenz: https://github.com/jenkinsci/jacoco-plugin/pull/8

16
phillipuniverse

Wenn Sie sich ein Liste der mit der Pipeline kompatiblen Plugins ansehen, werden Sie feststellen, dass das Jenkins JaCoCo-Plugin kompatibel gemacht wurde , jedoch ohne Aktualisierung der Dokumentation, außer Eintrag im Changelog :

Version 2.1.0 (29. September 2016)

JENKINS-27120 Hinzufügen von Workflow-Unterstützung für JaCoCo Publisher

wahrscheinlich, weil seine Verwendung einfach ist und der Verwendung vieler anderer Schritte ähnelt:

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

Die beste Möglichkeit, das Jacoco jenkins Plugin zu verwenden, besteht darin, die ausführbare Datei ( jacoco.exec) in der Anwendung zu generieren und dann auf den Speicherort dieser Datei zu verweisen in der Rohrleitung. Obwohl für ein Multi-Modul-Projekt die Konfiguration leicht abweichen würde, lesen Sie: Jacoco-Codeabdeckung für Multi-Modul-Maven-Projekt

Jenkins Pipeline würde so aussehen:

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