Jenkins – HTML Publisher Plugin – Er wordt geen CSS weergegeven wanneer het rapport wordt bekeken in Jenkins Server

Ik heb een vreemd probleem met de Jenkins HTML Publisher-plug-in, waarbij alle fraaie CSS die ik aan het rapport heb toegevoegd, wordt verwijderd als ik ze in Jenkins bekijk. Als ik het rapport naar lokaal download, kan ik de CSS-opmaak zien. Is er een instelling in Jenkins waarmee CSS kan worden bekeken?

Mijn HTML-uitgeversinstellingen in Jenkins:

voer hier de afbeeldingsbeschrijving in

Mijn rapportpagina wanneer weergegeven in Jenkins:

voer hier de afbeeldingsbeschrijving in

Mijn rapportpagina indien weergegeven in Lokaal:

voer hier de afbeeldingsbeschrijving in


Antwoord 1, autoriteit 100%

We hebben het probleem gevonden. Deel het hier voor andere gebruikers.

CSS is uitgekleed vanwege het inhoudsbeveiligingsbeleid in Jenkins. (https://wiki.jenkins-ci.org/display/ JENKINS/Configureren+Inhoud+Beveiliging+Beleid)

De standaardregel is ingesteld op:

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

Deze regelset resulteert in het volgende:

  • Geen JavaScript toegestaan ​​
  • Geen plug-ins (object/embed) toegestaan ​​
  • Geen inline CSS of CSS van andere sites toegestaan ​​
  • Geen afbeeldingen van andere
    sites toegestaan
  • Geen frames toegestaan ​​
  • Geen weblettertypen toegestaan
  • XHR/AJAX niet toegestaan, enz.

Als u deze regel wilt versoepelen, gaat u naar

  1. Jenkins-> beheren
  2. Knooppunten beheren->
  3. Klik op instellingen (tandwielpictogram)->
  4. klik op Scriptconsole aan de linkerkant en typ de volgende opdracht:

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

en druk op Uitvoeren. Als u de uitvoer ziet als ‘Resultaat:’ onder de kop ‘Resultaat’, is de beveiliging uitgeschakeld. Voer uw build opnieuw uit en u kunt zien dat de nieuwe gearchiveerde HTML-bestanden de CSS hebben ingeschakeld.


Antwoord 2, autoriteit 14%

In CentOs, om afbeeldingen in html-rapport in te schakelen

  • sudo vi /etc/sysconfig/jenkins
  • stel het volgende 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:;\""

Dit werkt zelfs nadat de server van jenkins opnieuw is opgestart.


Richtlijn

default-src: De standaard-src is het standaardbeleid voor het laden van inhoud zoals JavaScript, afbeeldingen, CSS, lettertypen, AJAX-verzoeken, frames, HTML5-media

img-src:Definieert geldige bronnen van afbeeldingen.

Bronwaarde

‘self ‘ –Laat toe bronnen van dezelfde oorsprong te laden (zelfde schema, host en poort).

Gebruik: default-src 'self'

‘unsafe-inline ‘Staat het gebruik toe van inline bronelementen zoals stijlattributen, onclick of scripttags (afhankelijk van de context van de bron waarop het wordt toegepast) en javascript: URI’s.

Gebruik: default-src 'unsafe-inline'

‘unsafe-eval ‘Laat evaluatie van onveilige dynamische code toe, zoals JavaScript eval()

Gebruik: default-src 'unsafe-eval'

data:Hiermee kunnen bronnen worden geladen via het gegevensschema (bijv. Base64-gecodeerde afbeeldingen).

Gebruik: img-src 'self' data:

Raadpleeg hier

meer informatie over het inhoudsbeveiligingsbeleid


Antwoord 3, autoriteit 9%

Ga naar “Jenkins beheren” -> “Script-console”
en voer het onderstaande commando uit:

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

Antwoord 4, autoriteit 6%

(De volgende oplossing is voor Windows.)

Een permanente oplossing is om een ​​regel in [Jenkins directory]\jenkins.xmlte wijzigen (voor mij is het C:\Jenkins\jenkins.xml)

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

Voeg het volgende argument toe aan de door spaties gescheiden lijst met argumenten:

-Dhudson.model.DirectoryBrowserSupport.CSP=

Herstart vervolgens de Jenkins-service om het wisselgeld op te halen.


Antwoord 5, autoriteit 6%

Je kunt dit oplossen door het groovy commando te gebruiken zoals gespecificeerd in Vall‘s antwoord.

Het effect is aanwezig totdat Jenkins opnieuw opstart en daarna moet je het opnieuw doen.

Een oplossing om dit probleem op te lossen is om een ​​taak te configureren die dit voor u doet wanneer jenkins opstart.

Je kunt dit doen door de Startup Trigger-plug-inte gebruiken.

Nadat je het hebt geïnstalleerd, maak je een nieuwe taak en heb je een nieuw selectievakje onder het gedeelte Build Triggersdat je moet aanvinken.

Voeg vervolgens een bouwstap voor het uitvoeren van een Groovy-script van het systeem toe met het commando:

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

Opslaan en alles zou moeten werken.


Antwoord 6, autoriteit 3%

Voor versie Ubuntu 14 waren speciale plug-ins nuttig:

https://wiki.jenkins-ci.org/display/JENKINS/ Startup+Trigger– Om te beginnen met het opstarten van jenkins

https://wiki.jenkins-ci.org/display/JENKINS/ Groovy+plugin– Om het System Groovy-script uit te voeren

En ik heb een taak gemaakt, die begint bij het opnieuw opstarten van Jenkins en parameters instelt.

set om te beginnen met bouwen nadat Jenkins is uitgevoerd

En toegevoegd systeem Groovy script om parametr in te stellen.
Systeem Groovy-script uitvoeren
System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”, “sandbox; img-src ‘self’;”)


Antwoord 7, autoriteit 2%

Ga naar

Jenkins beheren –> Scriptconsole

en typ het volgende commando:

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

druk vervolgens op Uitvoeren. als je de output krijgt als ‘Resultaat’, voer dan de build opnieuw uit, controleer dan het HTML-rapportformaat


8

Het is te laat om te reageren, maar dacht te delen.

Ik worstelde met Jenkins die op Tomcat wordt geïmplementeerd, probeerde de uitvoering van het script, het helpt, maar gaat weg als Tomcat opnieuw wordt opgestart.

maakte de permanente oplossing door het onroerend goed in Catalina.Properties in Tomcat in te stellen.

Eigenschappen Bestand: Tomcat_Installation_dir / Conf / Catalina.Properties
Kopieer gewoon de onderstaande lijn in Catalina.Properties in de laatste (u kunt het overal instellen om niet te rotzooien met bestaande eigenschappen)

-dhudson.model.directorybrowsersupport.csp = “”


Antwoord 9

Ik had dezelfde problemen nadat ik HTTPS aan mijn jenkins had toegevoegd. Als u hetzelfde probleem ondervindt, is de oplossing eenvoudig: stel uw Jenkins-url in om het HTTPS-protocol te gebruiken in plaats van HTTP. Het kan worden geconfigureerd via jenkins-configuratie -> jenkins-url


Antwoord 10

Voor degenen die de plug-in asciidoctor-maven-plugingebruiken om een ​​HTML-document van het asciidoc-bestand te maken om het verder naar Jenkins te publiceren, update de plug-inconfiguratie, voeg linkcssattribuut:

<configuration>
    <attributes>
        <linkcss>true</linkcss>
    </attributes>
    <backend>html5</backend>
    <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
</configuration>

Antwoord 11

We hebben een veel eenvoudigere oplossing voor het probleem. Tenzij je er echt op staat om de HTML-rapporten te hebben, kun je gewoon de Warnings NG-plug-in gebruiken (wat sowieso een goed idee is):

https://github.com/jenkinsci /warnings-ng-plugin/blob/master/SUPPORTED-FORMATS.md

We gebruiken dit voor CodeNarc (Groovy), maar ook voor Checkstyle, PMD, SpotBugs en Java-waarschuwingen (Java).


Antwoord 12

Ik weet dat dit oud is, maar dit werkte prima voor mij, en het lijkt te worden aanbevolen in de Jenkins-documenten. Ik heb zojuist de bron-root ingesteld op een andere url die vanaf dezelfde locatie wordt aangeboden.

“Het wordt sterk aanbevolen om de bron-URL in te stellen in plaats van Content-Security-Policy aan te passen. De meeste van de onderstaande documentatie is geschreven toen Content-Security-Policy voor het eerst werd geïntroduceerd en wordt bewaard voor gebruik door beheerders kan Jenkins niet instellen om gebruikersinhoud van een ander domein weer te geven.”

Other episodes