2016-03-03 20 views
32

Ho uno strano problema con il plug-in Jenkins HTML Publisher, in cui tutti i fantasiosi CSS che ho aggiunto al rapporto vengono rimossi quando visualizzati in Jenkins . Se scarico il report su local, sono in grado di vedere la formattazione CSS. C'è un ambiente in Jenkins che consente di visualizzare i CSS?Jenkins - HTML Publisher Plugin - Nessun CSS viene visualizzato quando il report viene visualizzato in Jenkins Server

mie HTML Impostazioni editore a Jenkins:

enter image description here

mio Report Pagine quando visualizzata in Jenkins:

enter image description here

mio rapporto pagina quando viene visualizzata in locale:

enter image description here

+0

Possibile duplicato di [Jenkins HTML Publisher Plugin: nessun collegamento esterno con Jenkins 1.643] (http://stackoverflow.com/questions/34681852/jenkins-html-publisher-plugin -no-external-links-with-jenkins-1-643) –

risposta

67

Capito il problema. Condivisi qui per altri utenti.

Il CSS viene rimosso a causa della politica di sicurezza del contenuto in Jenkins. (https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy)

La regola di default è impostato su:

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

questa regola nel seguente:

  • No Javascript permesso a tutti i
  • Nessun plugin (oggetto/embed) consentito
  • Nessun CSS in linea o CSS da altri siti consentito
  • No i maghi provenienti da altri siti autorizzati
  • Nessun fotogramma permesso
  • Nessun font web autorizzati
  • No XHR/AJAX permesso, ecc

Per rilassarsi questa regola, andare a Gestisci console Jenkins-> Script e digitare il seguente comando:

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

e Premere Esegui. Se vedi l'output come "Risultato:" sotto l'intestazione "Risultato", la protezione è disabilitata. Rieseguire la tua build e puoi vedere che i nuovi file HTML archiviati avranno il CSS abilitato.

+0

Grazie !!! Mi ha davvero aiutato a risolvere questo problema css che ho avuto con jenkins. –

+6

C'è un modo per impostarlo in modo permanente? – Steerpike

+1

@Steerpike Mi sono chiesto cosa volevi dire e poi ho scoperto che il css era bloccato al riavvio di Jenkins. Così ho creato un lavoro Jenkins che esegue il comando ogni 12 ore. Sembra fare il trucco. – Aeropher

5

(la seguente soluzione è per Windows.)

una correzione permanente è quello di cambiare una linea in [Jenkins directory]\jenkins.xml (per me è a C:\Jenkins\jenkins.xml)

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

Aggiungere il seguente argomento alla separate da spazi: elenco degli argomenti:

-Dhudson.model.DirectoryBrowserSupport.CSP= 

Quindi riavviare il servizio Jenkins per ritirare la modifica.

3

È possibile risolvere questo problema utilizzando il comando Groovy come specificato nella risposta di Vall.

L'effetto è attivo fino al riavvio di Jenkins e in seguito è necessario ripetere l'operazione.

Una soluzione per risolvere questo problema è configurare un lavoro che farà questo per voi ogni volta che jenkins si avvia.

È possibile eseguire questa operazione utilizzando Startup Trigger plugin.

Dopo averlo installato, creare un nuovo lavoro e si avrà una nuova casella di controllo sotto la sezione Build Triggers che si dovrà verificare.

quindi aggiungere un Execute sistema di script Groovy passaggio di generazione con il comando:

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

Salva e tutto dovrebbe funzionare.

1

Per Ubuntu 14 versione disponibile era plugin speciali:

https://wiki.jenkins-ci.org/display/JENKINS/Startup+Trigger - Per avviare lavoro su Jenkins all'avvio

https://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin - Per eseguire lo script del sistema Groovy

e ho fatto un lavoro, che inizia il Jenkins riavvia e imposta parametr.

set to start build after Jenkins is ran

E sistema aggiunto lo script Groovy per impostare parametr. Run System Groovy script System.setProperty ("hudson.model.DirectoryBrowserSupport.CSP", "sandbox; img-src 'sé';")

+0

Sebbene l'esecuzione del lavoro sia completata correttamente, non abilita la visualizzazione CSS per i miei report. Ho eseguito lo stesso script groovy nella "Script Console" e questo ha funzionato bene. Cos'altro posso fare? Lo script groovy di questo lavoro non sta cambiando la proprietà del vero genitore Jenkin. – frakman1

+0

@ frakman1 in questo momento il mio script Groovy ha questo aspetto: System.setProperty ("hudson.model.DirectoryBrowserSupport.CSP", "") Ma questo è tutto e tutto funziona. Forse non hai un utente amministratore? – abiab

+0

Grazie per la risposta. Alla fine l'ho fatto funzionare. Dovevo invece usare questo script: 'System.setProperty (" hudson.model.DirectoryBrowserSupport.CSP "," sandbox allow-same-origin allow-scripts; default-src 'self'; script-src * 'unsafe-eval' ; img-src *; style-src * 'unssafe-inline'; font-src * ")' – frakman1

3

In CentOS, per consentire le immagini nel rapporto del HTML

  • sudo vi /etc/sysconfig/jenkins
  • set seguendo 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:;\""

Questo funzionerà anche dopo il riavvio del server jenkin.

direttiva

default-src: Il default-src è la politica di default per il caricamento di contenuti come JavaScript, immagini, CSS, font, richieste AJAX, cornici, HTML5 media

img-src:Definisce fonti di immagini valide.

Valore Origine

'sé' -Consente risorse carico dalla stessa origine (stesso schema, host e la porta).

Usage: default-src 'self'

'insicuro-inline'-consente l'utilizzo di elementi di origine in linea, come attributo di stile, onclick, o gli organismi tag script (dipende dal contesto della sorgente viene applicato a) e javascript: URI.

Usage: default-src 'unsafe-inline'

'insicuro-eval'-consente la valutazione dinamica del codice non sicuro, come JavaScript eval()

Usage: default-src 'unsafe-eval'

dati:-Consente il caricamento delle risorse tramite lo schema di dati (ad esempio immagini codificate Base64).

Usage: img-src 'self' data:

prega di fare riferimento più sulla politica di sicurezza dei contenuti here

+0

l'unico che funziona per me – Adiii

-1

On Debian/Ubuntu, in aptitude installations:

  • sudo vi /etc/default/jenkins
  • Aggiungi -Dhudson.model.DirectoryBrowserSupport.CSP= a JAVA_ARGS (ad es. JAVA_ARGS="-Dhudson.model.DirectoryBrowserSupport.CSP=")
  • Riavviare Jenkins - service jenkins restart

Questo è stato sufficiente per me, ma per la lista completa dei parametri vedere this answer.

0

È troppo tardi per rispondere ma ha pensato di condividere.

Ero alle prese con Jenkins schierato su Tomcat, ho provato l'esecuzione della sceneggiatura, aiuta ma se ne va se Tomcat viene riavviato.

Effettuata la correzione permanente impostando la proprietà in catalina.properties in tomcat. il file

Proprietà: tomcat_installation_dir/conf/catalina.properties basta copiare incollare la seguente riga nel catalina.properties all'ultimo (è possibile impostare ovunque proprio per evitare di perdere le proprietà esistenti)

-Dhudson.model .DirectoryBrowserSupport.CSP = ""

0

Ho avuto gli stessi problemi dopo aver aggiunto HTTPS al mio jenkins.Se hai lo stesso problema, la soluzione è semplice: imposta l'URL di Jenkins in modo che utilizzi il protocollo HTTPS anziché HTTP. Può essere configurato tramite la configurazione di jenkins -> jenkins url

Problemi correlati