wake-up-neo.com

Jenkins - HTML Publisher Plugin - Es wird kein CSS angezeigt, wenn der Bericht in Jenkins Server angezeigt wird

Ich habe ein seltsames Problem mit dem Jenkins HTML Publisher-Plugin, bei dem alle fancy CSS, die ich zu dem Bericht hinzugefügt habe, in Jenkins entfernt werden. Wenn ich den Bericht zu local herunterlade, kann ich die CSS-Formatierung sehen. Gibt es in Jenkins eine Einstellung, in der CSS angezeigt werden kann?

Meine HTML Publisher-Einstellungen in Jenkins:

 enter image description here

Meine Berichtsseite bei Anzeige in Jenkins:

 enter image description here

Meine Berichtsseite, wenn in Lokal angezeigt:

 enter image description here

52
Vall

Das Problem herausgefunden. Teilen Sie es hier für andere Benutzer.

CSS wird aufgrund der Inhaltssicherheitsrichtlinie in Jenkins gestrippt. ( https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy )

Die Standardregel lautet:

sandbox; default-src 'none'; img-src 'self'; style-src 'self';

Dieser Regelsatz führt zu folgenden Ergebnissen:

  • Kein JavaScript erlaubt
  • Keine Plugins (Objekt/Einbettung) erlaubt
  • Kein Inline-CSS oder CSS von anderen Websites erlaubt
  • Keine Bilder von anderen Seiten erlaubt
  • Keine Frames erlaubt
  • Keine Webfonts erlaubt
  • Kein XHR/AJAX usw. erlaubt.

Um diese Regel zu lockern, gehen Sie zu

  1. Jenkins verwalten->
  2. Knoten verwalten->
  3. Klicken Sie auf Einstellungen (Zahnradsymbol) ->
  4. klicken Sie links auf die Skriptkonsole und geben Sie den folgenden Befehl ein:

    System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

und drücken Sie Ausführen. Wenn Sie die Ausgabe als 'Ergebnis:' unter der Überschrift "Ergebnis" sehen, ist der Schutz deaktiviert. Führen Sie Ihren Build erneut aus, und Sie können sehen, dass für die neu archivierten HTML-Dateien das CSS aktiviert ist.

127
Vall

(Die folgende Lösung ist für Windows.)

Eine dauerhafte Lösung besteht darin, eine Zeile in [Jenkins directory]\jenkins.xml zu ändern (für mich ist dies bei C:\Jenkins\jenkins.xml)

<executable>Java.exe</executable>
<arguments>[arguments are here]</arguments>

Fügen Sie der durch Whitespace getrennten Liste der Argumente das folgende Argument hinzu:

-Dhudson.model.DirectoryBrowserSupport.CSP=

Starten Sie anschließend den Jenkins-Dienst neu, um die Änderung zu übernehmen.

9
twasbrillig

In CentOs, um Bilder in HTML-Berichten zu aktivieren

  • Sudo vi /etc/sysconfig/jenkins
  • setze folgendes in JENKINS_Java_OPTION

JENKINS_Java_OPTIONS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' data:;\""

Dies funktioniert auch nach dem Neustart des Jenkins-Servers.

Richtlinie

default-src: Die Standard-src ist die Standardrichtlinie zum Laden von Inhalten wie JavaScript, Bilder, CSS, Schriftarten, AJAX -Anfragen, Frames, HTML5-Medien

img-src: _ ​​Definiert gültige Bildquellen. 

Quellwert

'self' - _ ​​Erlaubt das Laden von Ressourcen aus demselben Ursprung (gleiches Schema, Host und Port). 

Verwendung: default-src 'self'

'unsafe-inline' - Ermöglicht die Verwendung von Inline-Quellelementen wie style-Attribut, Onclick oder Skript-Tag-Body (abhängig vom Kontext der Quelle, auf die sie angewendet wird) und javascript: URIs.

Verwendung: default-src 'unsafe-inline'

'unsafe-eval' - Erlaubt unsichere dynamische Code-Auswertung wie JavaScript eval ()

Verwendung: default-src 'unsafe-eval'

data: - Erlaubt das Laden von Ressourcen über das Datenschema (z. B. Base64-kodierte Bilder).

Verwendung: img-src 'self' data:

Weitere Informationen zur Inhaltssicherheitsrichtlinie hier

7
jithinkmatthew

Sie können dies beheben, indem Sie den groovigen Befehl verwenden, wie in Vall s angegeben.

Der Effekt ist solange wirksam, bis Jenkins neu gestartet wird und danach erneut ausgeführt werden muss.

Sie können dieses Problem lösen, indem Sie einen Job konfigurieren, der dies für Sie ausführt, wenn Jenkins gestartet wird.

Sie können dies tun, indem Sie das Plugin Startup Trigger verwenden. 

Erstellen Sie nach der Installation einen neuen Job, und Sie haben ein neues Kontrollkästchen im Bereich Build Triggers, das Sie überprüfen müssen.

Fügen Sie dann mit dem Befehl einen Groovy-Skript-Buildschritt für das System ausführen hinzu:

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")

Speichern und alles sollte funktionieren.

5
dragosb

Gehen Sie zu "Jenkins verwalten" -> "Skriptkonsole" Und führen Sie den folgenden Befehl aus:

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
4
Som

Für die Ubuntu 14-Version waren spezielle Plugins hilfreich:

https://wiki.jenkins-ci.org/display/JENKINS/Startup+Trigger - Startet den Job beim Start von jenkins

https://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin - Zum Ausführen des System Groovy-Skripts

Und ich habe einen Job gemacht, der mit Jenkins Neustart beginnt und parametriert.

 set to start build after Jenkins is ran

Und fügte ein Groovy-Skript hinzu, um parametr . einzustellen. Run System Groovy script System.setProperty ("hudson.model.DirectoryBrowserSupport.CSP", "Sandbox; img-src 'self';")

3
abiab

Erstellen Sie zum dauerhaften Festlegen einer Groovy-Skriptdatei $ JENKINS_HOME/init.groovy oder eine beliebige .groovy -Datei im Verzeichnis $ JENKINS_HOME/init.groovy.d/mit folgendem Inhalt:

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox allow-scripts; default-src 'self'; img-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline';")

systemctl jenkins neu starten

https://wiki.jenkins.io/display/JENKINS/Post-initialization+script

0
Karen Danielyan

Gehe zu 

Verwalten Sie Jenkins -> Skriptkonsole

und geben Sie den folgenden Befehl ein:

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

drücken Sie dann auf Ausführen. Wenn Sie die Ausgabe als 'Ergebnis' erhalten, führen Sie den Build erneut aus und überprüfen Sie das HTML-Berichtsformat

0
Shailendra

Es ist zu spät um zu antworten, aber gedacht, um es mitzuteilen.

Ich hatte Probleme mit Jenkins, das auf Tomcat installiert wurde, versuchte die Ausführung des Skripts, es hilft, aber wenn Tomcat neu gestartet wird, ist es weg.

Die permanente Korrektur wurde vorgenommen, indem die Eigenschaft in catalina.properties in Tomcat festgelegt wurde.

Eigenschaftendatei: Tomcat_Installationsverzeichnis/conf/catalina.properties Kopieren Sie einfach die letzte Zeile in der Datei catalina.properties.

-Dhudson.model.DirectoryBrowserSupport.CSP = ""

0
Java Developer

Ich hatte die gleichen Probleme, nachdem ich HTTPS zu meinen Jenkins hinzugefügt hatte. Wenn Sie dasselbe Problem haben, ist die Lösung einfach: Setzen Sie Ihre Jenkins-URL so, dass das HTTPS-Protokoll anstelle von HTTP verwendet wird. Es kann über Jenkins Konfiguration -> Jenkins URL konfiguriert werden

0
Ben Yitzhaki

Um die Systemeigenschaft bei Verwendung von Jenkins-X dauerhaft festzulegen, erstellen Sie im aktuellen Verzeichnis die Datei myvalues.yaml mit folgendem Inhalt:

jenkins:
  Master:
    JavaOpts: >
      -Dhudson.model.DirectoryBrowserSupport.CSP=

Starten Sie anschließend die jenkins-x-Plattform neu. Führen Sie dazu ein Upgrade durch:

$ jx upgrade platform --always-upgrade
# Presumably jx.exe is used if on Windows (not tested)

Um zu vermeiden, dass die Plattform tatsächlich aktualisiert wird, müssen Sie lediglich ein Upgrade auf dieselbe Version erzwingen:

$ version=$(jx version --no-version-check\
            | grep 'jenkins x platform' | sed -e 's/^jenkins.\+ //')
$ jx upgrade platform --version ${version} --always-upgrade
0
Gunnar