2016-03-03 96 views
32

Jenkins HTML Publisher插件有一個奇怪的問題,其中在Jenkins中查看時,我添加到報表中的所有花哨CSS都被剝離。如果我將報告下載到本地,我可以看到CSS格式。 Jenkins中有一個允許CSS被查看的設置嗎?Jenkins - HTML Publisher Plugin - 在Jenkins服務器中查看報告時不顯示CSS

我的HTML出版商設置在詹金斯:

enter image description here

我的報告頁面時,在詹金斯顯示:

enter image description here

我的報告頁面時,在本地顯示:

enter image description here

+0

可能重複[詹金斯HTML發佈者插件:沒有外部鏈接與詹金斯1.643](http://stackoverflow.com/questions/34681852/jenkins-html-publisher-plugin -no-external-links-with-jenkins-1-643) –

回答

67

找出問題所在。在此分享給其他用戶。

由於Jenkins中的內容安全策略,CSS被剝離出來。 (https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy

默認的規則設置爲:

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

此規則集結果如下:

  • 沒有使用Javascript允許在所有
  • 無插件(對象/嵌入)允許
  • 沒有內嵌CSS或允許其他網站的CSS
  • 否i從其他 網站法師允許
  • 無框架允許
  • 沒有Web字體允許
  • 沒有XHR/AJAX允許等

放寬此規則,請轉到管理Jenkins->腳本控制檯和鍵入以下命令:

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

並按運行。如果在「結果」標題下看到輸出爲「結果:」,則保護被禁用。重新運行你的構建,你可以看到歸檔的新HTML文件將啓用CSS。

+0

謝謝!它真的幫我解決了我和詹金斯之間的這個CSS問題。 –

+6

有沒有辦法永久設置它? – Steerpike

+1

@Steerpike我想知道你的意思,然後發現重新啓動詹金斯後,css被阻止。所以我創建了一個每12小時運行一次命令的Jenkins作業。似乎要做的伎倆。 – Aeropher

5

(以下解決方案適用於Windows)。

一個永久的解決辦法是改變行[Jenkins directory]\jenkins.xml(對我來說這是在C:\Jenkins\jenkins.xml

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

以下參數添加到空格分隔參數列表:

-Dhudson.model.DirectoryBrowserSupport.CSP= 

然後重新啓動Jenkins服務以接收更改。

3

您可以通過在Vall的回答指定使用常規命令解決這個問題。

效果是一直到詹金斯重新啓動後,你必須再次做。

解決這個問題的一個解決方案是配置工作時詹金斯啓動,會爲你做到這一點。

您可以通過使用Startup Trigger plugin來完成此操作。

安裝完成後,創建一個新的作業,您將需要檢查構建觸發器部分下的新複選框。

然後加入用命令的執行系統Groovy腳本生成步驟:

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

保存,一切都應該工作。

1

的Ubuntu版本14有益的是特殊的插件:

https://wiki.jenkins-ci.org/display/JENKINS/Startup+Trigger - 要在詹金斯啓動開始工作

https://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin - 要運行系統Groovy腳本

而且我做了一個工作,這對詹金斯開始重新啓動並設置參數。

set to start build after Jenkins is ran

而且增加系統的Groovy腳本設置parametr。 Run System Groovy script System.setProperty( 「hudson.model.DirectoryBrowserSupport.CSP」, 「沙箱; IMG-src的 '自我';」)

+0

儘管運行作業成功完成,但它並未啓用報告的CSS顯示。我在「腳本控制檯」中運行完全相同的groovy腳本,並且運行良好。我還可以做些什麼?這項工作的groovy腳本並沒有改變實際的Jenkin的父母的財產。 – frakman1

+0

@ frakman1在這一刻我的Groovy腳本看起來像這樣 - System.setProperty(「hudson.model.DirectoryBrowserSupport.CSP」,「」) 但是,這一切,一切正常。也許你沒有管理員用戶? – abiab

+0

謝謝你的迴應。我最終得到它的工作。我不得不使用這個腳本:'System.setProperty(「hudson.model.DirectoryBrowserSupport.CSP」,「sandbox allow-same-origin allow-scripts; default-src'self'; script-src *'unsafe-eval' ; img-src *; style-src *'unsafe-inline'; font-src *「)' – frakman1

3

CENTOS,以使得在HTML報告圖像

  • sudo vi /etc/sysconfig/jenkins
  • 以下組中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:;\""

即使在重新啓動jenkin服務器後,這也可以工作。

指令

默認-SRC默認-SRC是加載內容,如JavaScript,圖片,CSS,字體,AJAX請求,框架,HTML5媒體

這樣的默認策略

IMG-SRC:定義圖像的有效來源。

源值

'自我' -來自同一產地(相同的方案,主機和端口)允許加載資源。

用法:default-src 'self'

「不安全內聯」 - 允許使用內聯源元件,例如風格屬性的,的onclick或腳本標籤體(依賴於它被施加到源的上下文)和javascript:URI。

用法:default-src 'unsafe-inline'

'不安全-EVAL' - 允許不安全動態代碼評估例如JavaScript的eval()

用法:default-src 'unsafe-eval'

數據: - 允許通過數據方案加載資源(例如Base64編碼圖像)。

用法:img-src 'self' data:

請參考有關內容安全策略here

+0

唯一一個適合我的工具 – Adiii

-1

於Debian/Ubuntu,在aptitude installations

  • sudo vi /etc/default/jenkins
  • 添加-Dhudson.model.DirectoryBrowserSupport.CSP=JAVA_ARGS(例如JAVA_ARGS="-Dhudson.model.DirectoryBrowserSupport.CSP="
  • 重啓詹金斯 - service jenkins restart

這是足以讓我,但參數的完整列表,請參閱this answer

0

現在回覆已經太遲了,但還是想分享。

我一直在與Jenkins部署在Tomcat中掙扎,試圖執行腳本,它有助於但是如果tomcat重新啓動就會消失。

通過在tomcat中設置catalina.properties中的屬性進行永久修復。

屬性文件:tomcat_installation_dir/conf目錄/ catalina.properties 只要複製粘貼catalina.properties下面的線在最後(你可以設置它的任何地方只是爲了不與現有的性質混亂)

-Dhudson.model .DirectoryBrowserSupport.CSP =「」

0

在向我的jenkins添加HTTPS後,我遇到了同樣的問題。如果您遇到同樣的問題,該解決方案很簡單 - 將您的Jenkins url設置爲使用HTTPS協議而不是HTTP。它可以通過詹金斯配置配置 - >詹金斯url