Jenkins - Publish Coverage Report

Hein_nieH

Bekanntes Mitglied
Hallo,

ich nutze Jenkins 2.249.3 und habe das cobertura plugin installiert.
Die coverage.xml wird auch erzeugt.

Nun möchte ich mir das Ergebnis gerne anzeigen lassen.
Dazu habe ich diverse Beiträge gegurgelt.
Es soll in Jenkins in der Konfiguration des Projektes unter
Post-Build-Aktions eine Checkbox "Publish coverage report" geben.
Bei der von mir verwendeten Jenkins-Version scheint das nicht der Fall zu sein.
Hat jemand eine Idee wie ich den Coverage Report in Jenkins anzeigen kann?

Gruss Hein_nieH
 
Kannst du mal einen Screenshot des Dropdowns bei Post-Build-Aktions zeigen?

Moinsen,

ich habe mal ein Screenshot von den Einstellungen rangehängt.
Ich finde leider keine Option, um den Button zur Darstellung der Testabdeckung anzuzeigen.
Langsam beginne ich an mir selbst zu zweifeln 🙄

Gruss Hein_ nieH
 

Anhänge

Hier noch eine ergänzende Info von der Konsolenausgabe.
Die vorletzte Zeile macht mich stutzig 😳

[INFO] Instrumentation was successful.
[INFO] NOT adding cobertura ser file to attached artifacts list.
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ Git-Test ---
[INFO] Using 'Cp1252' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\E7470\Documents\GitRepository\Git-Test\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ Git-Test ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ Git-Test ---
[INFO] No tests to run.
[INFO]
[INFO] <<< cobertura-maven-plugin:2.5.1:cobertura (default-cli) < [cobertura]test @ Git-Test <<<
[INFO]
[INFO]
[INFO] --- cobertura-maven-plugin:2.5.1:cobertura (default-cli) @ Git-Test ---
[INFO] Cobertura 1.9.4.1 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file
Cobertura: Loaded information on 1 classes.
Report time: 55ms

[INFO] Cobertura Report generation was successful.
[INFO] Cobertura 1.9.4.1 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file
Cobertura: Loaded information on 1 classes.
Report time: 116ms

[INFO] Cobertura Report generation was successful.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.020 s
[INFO] Finished at: 2020-12-25T10:55:13+01:00
[INFO] ------------------------------------------------------------------------
Publishing Coverage report....
No reports were found 😳
Finished: SUCCESS
Vielleicht hat jemand eine Idee ...
Gruss Hein_nieH
 
Wenn keine Tests ausgeführt werden, gibt es keine Coverage.

Was passiert den, wenn du mvn test auf der Konsole ausführst? Wie sehen deine Tests aus? Liegen die src/test/java, heißen Test am Ende und sind Junit Tests?
 
Wenn keine Tests ausgeführt werden, gibt es keine Coverage.

Hallo,

ich habe zwei Tests eingebaut.
Eine coverage.xml wird auch erzeugt.

Nach meiner Logik sollte Jenkins dann auch den Report anzeigen. Und genau das bekomme ich nicht hin ☹️
So schön wie das im Buch "Jenkins - The definitive guide" erklärt ist klappt es bei mir leider nicht 😬

Gruss Hein_nieH
 

Anhänge

Also laut der Log-Ausgabe werden keine Tests ausgeführt.


Wo liegt denn der generierte Cobertura-Report? Bin mir nicht sicher, ob der Pfad mit Site passt
 
Ich bin mir nicht sicher, ob die Angabe mit \ im Pfad in Jenkins zum Report richtig ist oder doch entweder der normale / oder doppelte Backslashes hin müssen - würde ich mal probieren.
 
In normalen Pfaden gehen (unter windows) sowohl slash als auch backslash, aber in dem Pattern könnte der Backslash falsch sein
 
Zumindest würde ich in dem Report File Path mal den normalen Schrägstrich versuchen. Das ist dort kein "normaler" Pfad, kann sein, dass deshalb der Backslash Probleme macht.

Allerdings: dein Log sagt, dass keine Tests ausgeführt wurden. Das solltest du als erstes mal fixen.


Nach meiner Logik sollte Jenkins dann auch den Report anzeigen. Und genau das bekomme ich nicht hin ☹️
So schön wie das im Buch "Jenkins - The definitive guide" erklärt ist klappt es bei mir leider nicht 😬
Das Buch ist vermutlich ein paar Jahre alt, seit dem gab es unzählige Jenkins und Plugin-Updates – da ist es nicht überraschend, dass es völlig anders aussieht 🙂
Die Checkbox gibt es nicht mehr, das Auswählen in dem Dropdown-Menü reicht aus.
 
Und, was noch dazu kommt: Cobertura ist quasi tot, da gab es seit 5(?) Jahren kein neues Release, das wird also mit allem neuerem Code nicht mehr laufen.
 
Hallo,

habe tatsächlich in der pom einen Pfad falsch deklariert.
Jetzt werden die Tests auch durchgeführt.


Running as SYSTEM
Baue in Arbeitsbereich C:\Windows\system32\config\systemprofile\AppData\Local\Jenkins\.jenkins\workspace\Test_Git_Jenkins_x
The recommended git tool is: NONE
No credentials specified
> C:\Program Files (x86)\Git\bin\git.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> C:\Program Files (x86)\Git\bin\git.exe config remote.origin.url C:\Users\E7470\Documents\GitRepository\ # timeout=10
Fetching upstream changes from C:\Users\E7470\Documents\GitRepository\
> C:\Program Files (x86)\Git\bin\git.exe --version # timeout=10
> git --version # 'git version 2.29.2.windows.2'
> C:\Program Files (x86)\Git\bin\git.exe fetch --tags --force --progress -- C:\Users\E7470\Documents\GitRepository\ +refs/heads/*:refs/remotes/origin/* # timeout=10
> C:\Program Files (x86)\Git\bin\git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
Checking out Revision 65d5c32e5cfdf8f8480ca80ed39ce5eaa7d1b844 (refs/remotes/origin/master)
> C:\Program Files (x86)\Git\bin\git.exe config core.sparsecheckout # timeout=10
> C:\Program Files (x86)\Git\bin\git.exe checkout -f 65d5c32e5cfdf8f8480ca80ed39ce5eaa7d1b844 # timeout=10
Commit message: "Test xxx"
> C:\Program Files (x86)\Git\bin\git.exe rev-list --no-walk 65d5c32e5cfdf8f8480ca80ed39ce5eaa7d1b844 # timeout=10
[Test_Git_Jenkins_x] $ cmd.exe /C "mvn -f C:\Users\E7470\Documents\GitRepository\Git-Test\pom_Jenkins.xml cobertura:cobertura && exit %%ERRORLEVEL%%"
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------------< Git-Test:Git-Test >--------------------------
[INFO] Building Git-Test 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] >>> cobertura-maven-plugin:2.5.1:cobertura (default-cli) > [cobertura]test @ Git-Test >>>
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ Git-Test ---
[INFO] Using 'Cp1252' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ Git-Test ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to C:\Users\E7470\Documents\GitRepository\Git-Test\target\main
[INFO]
[INFO] --- cobertura-maven-plugin:2.5.1:instrument (default-cli) @ Git-Test ---
[INFO] Cobertura 1.9.4.1 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file
Cobertura: Loaded information on 1 classes.
Instrumenting 2 files to C:\Users\E7470\Documents\GitRepository\Git-Test\target\generated-classes\cobertura
Cobertura: Saved information on 1 classes.
Instrument time: 69ms

[INFO] Instrumentation was successful.
[INFO] NOT adding cobertura ser file to attached artifacts list.
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ Git-Test ---
[INFO] Using 'Cp1252' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\E7470\Documents\GitRepository\Git-Test\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ Git-Test ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to C:\Users\E7470\Documents\GitRepository\Git-Test\target\test
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ Git-Test ---
[INFO] Surefire report directory: C:\Users\E7470\Documents\GitRepository\Git-Test\target\surefire-reports

-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running test.de.volkerPutzar.HalloWeltTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.056 sec

Results :

Tests run: 2, Failures: 0, Errors: 0, Skipped: 0

[INFO]
[INFO] <<< cobertura-maven-plugin:2.5.1:cobertura (default-cli) < [cobertura]test @ Git-Test <<<
[INFO]
[INFO]
[INFO] --- cobertura-maven-plugin:2.5.1:cobertura (default-cli) @ Git-Test ---
[INFO] Cobertura 1.9.4.1 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file
Cobertura: Loaded information on 1 classes.
Report time: 45ms

[INFO] Cobertura Report generation was successful.
[INFO] Cobertura 1.9.4.1 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file
Cobertura: Loaded information on 1 classes.
Report time: 116ms

[INFO] Cobertura Report generation was successful.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.528 s
[INFO] Finished at: 2020-12-25T13:45:06+01:00
[INFO] ------------------------------------------------------------------------
Publishing Coverage report....
No reports were found
Finished: SUCCESS
 
Ich bin mir nicht sicher, ob die Angabe mit \ im Pfad in Jenkins zum Report richtig ist oder doch entweder der normale / oder doppelte Backslashes hin müssen - würde ich mal probieren.

Hallo,

das Zeichen \ wird von Jenkins automatisch gesetzt.
Gruss Hein_neiH
 
So ich bin durch Experimentieren jetzt einen Schritt weiter gekommen.
Dir Ursache, dass der von cobertura erzeugte Report-File in Jenkins nicht angezeigt wurde liegt darin, dass der Report File (coverage.xml)
- zwar im Repository ( C:\Users\E7470\Documents\GitRepository\Git-Test ) im Unterverzeichnis Target-site-cobatrua-coverage.xml erzeugt wird
- jedoch nicht im workspace ( C:\Windows\SysWOW64\config\systemprofile\AppData\Local\Jenkins\.jenkins\workspace\Test_Git_Jenkins_x\Git-Test)
von Jenkins
Im Workspace gibt es nur den Subfolder "src".

Ich Habe den Subfolder target (und alles darunter) vom Repository in den Workspace kopiert (Option aufräumen abgeschaltet) und dann kam in Jenkins auch der Button zum Anzeigen des Coverage-Report zum vorschein.

Habe jetzt im pom.xml für cobertura mit dem Tag "outputDirectory" den Ausgabeort auf den workspace gesetzt und nun funktioniert es.
Es wäre schön gewesen, wenn es ohne dieses workarround geklappt hätte.

Gruss Hein
 
Du solltest niemals den Workspace anfassen und selber darin irgendwas verändern, das wird vom Job angelegt und sollte auch nur durch diesen verändert werden – wenn das nötig ist, ist der Job falsch konfiguriert.

Auch solltest du niemals in der pom absolute Pfade angeben, die sollten immer relativ zum und im Projekt- oder Build-Verzeichnis sein – auch da gilt, wenn man da absolute Pfade oder Pfade außerhalb "über" dem Projektverzeichnis angeben muss, hat man irgendwo was falsch gemacht.

Die Nutzung eines einzelnen rein lokalen Repos würde ich da auch sehr kritisch sehen – das führt nur zu komischen "Fehlern" und noch komischeren "Work-Arounds", die bei richtiger Nutzung nicht auftreten und/oder nicht möglich sind, aktuell lernst du da nur Dinge die falsch sind.


Du kannst mal deine gesamte pom.xml und die gesamte Job-Konfiguration zeigen, irgendwas scheint da sehr verdreht zu sein.
 
Alternativ kann ich später auch mal 'ne Anleitung schreiben, wie man das gesamte Projekt von git über Maven bis Jenkins aufsetzt, das funktioniert dann auch mit den neusten Versionen der ganzen Dinge...
 

Neue Themen


Zurück
Oben