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:
Mijn rapportpagina wanneer weergegeven in Jenkins:
Mijn rapportpagina indien weergegeven in Lokaal:
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
- Jenkins-> beheren
- Knooppunten beheren->
- Klik op instellingen (tandwielpictogram)->
-
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.xml
te 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.
En toegevoegd systeem Groovy script om parametr in te stellen.
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-plugin
gebruiken om een HTML-document van het asciidoc-bestand te maken om het verder naar Jenkins te publiceren, update de plug-inconfiguratie, voeg linkcss
attribuut:
<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.”