# Jenkins -  Publish Coverage Report



## Hein_nieH (20. Dez 2020)

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


----------



## mrBrown (20. Dez 2020)

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


----------



## Hein_nieH (25. Dez 2020)

> 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


----------



## Hein_nieH (25. Dez 2020)

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 ---*
> ...


Vielleicht hat jemand eine Idee ...
Gruss Hein_nieH


----------



## LimDul (25. Dez 2020)

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?


----------



## Hein_nieH (25. Dez 2020)

> 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


----------



## Hein_nieH (25. Dez 2020)

> 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?


.. je es sind JUnit-Tests. Sie liegen am richtigen Ort ...

Gruss Hein_nieH


----------



## mrBrown (25. Dez 2020)

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


----------



## LimDul (25. Dez 2020)

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.


----------



## mrBrown (25. Dez 2020)

In normalen Pfaden gehen (unter windows) sowohl slash als auch backslash, aber in dem Pattern könnte der Backslash falsch sein


----------



## Hein_nieH (25. Dez 2020)

Hallo,

mmmmh, jetzt muss ich wirklich noch einmal alle Pfade prüfen.
... ich melde mich dann


----------



## mrBrown (25. Dez 2020)

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.




Hein_nieH hat gesagt.:


> 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.


----------



## mrBrown (25. Dez 2020)

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.


----------



## Hein_nieH (25. Dez 2020)

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
> ...


----------



## Hein_nieH (25. Dez 2020)

> 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


----------



## mrBrown (25. Dez 2020)

Hein_nieH hat gesagt.:


> habe tatsächlich in der pom einen Pfad falsch deklariert.


Was für Pfade hast du in der pom.xml angegeben?


----------



## Hein_nieH (26. Dez 2020)

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


----------



## mrBrown (26. Dez 2020)

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.


----------



## mrBrown (26. Dez 2020)

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...


----------



## Hein_nieH (26. Dez 2020)

... das mit der Anleitung wäre nicht schlecht.
Ich bin sicher, das es auch andere Forenmitglieder interessieren würde.

Gruss Hein_nieH


----------

