jenkins的基本使用——解決html樣式問題


一. jenkins未展示css樣式的原理

官方解釋:https://stackoverflow.com/questions/35783964/jenkins-html-publisher-plugin-no-css-is-displayed-when-report-is-viewed-in-j

簡單來說,就是jenkins出於安全考慮,禁止了css和js的加載

詳細原因:

Jenkins中配置的CSP(Content Security Policy)

這是Jenkins的一個安全策略,默認會設置了默認的權限權限集:sandbox; default-src 'none'; img-src 'self'; style-src 'self';

防止Jenkins用戶在workspace、/userContent、archived artifacts中受到惡意HTML/JS文件的攻擊。

在該配置下,只允許加載:

  • Jenkins服務器上托管的CSS文件
  • Jenkins服務器上托管的圖片文件

而如下形式的內容都會被禁止:

  • JavaScript
  • plugins (object/embed)
  • HTML中的內聯樣式表(Inline style sheets),以及引用的外站CSS文件
  • HTML中的內聯圖片(Inline image definitions),以及外站引用的圖片文件
  • frames
  • web fonts
  • XHR/AJAX
  • etc.

 

二. 解決方案

1. 臨時方案1:

官網中也寫明了解決方案,不過這個解決方案是臨時的,jenkins重啟后就失效了

 

 翻譯成中文就是:進入Jenkins》Manage Jenkins》Script Console》輸入如下命令,點擊運行,重新構建項目后的報告就可以展示樣式了

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

 

2. 臨時方案2

如果Jenkins為war包,也就是部署到tomcat上這種,可以通過java命令運行解決

關閉jenkins,命令行直接運行:java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar D:\Jenkins\jenkins.war,路徑根據自己的jenkins.war路徑修改

不過這個方案也是臨時的,tomcat重啟后就不生效了

 

3. 永久解決方案1

修改catalina.bat文件,找到tomcat/bin下的catalina.bat文件,直接在文件中添加如下命令:

set CATALINA_OPTS="-Dhudson.model.DirectoryBrowserSupport.CSP=\"\""

 

 添加完成后,需要重啟tomcat,這樣就可以永久有效了

 

4. 永久解決方案2

1)安裝插件startup-trigger-plugin和Groovy,安裝方式參考文檔:https://www.cnblogs.com/leslie12956/p/13186158.html

2)新建一個job,該job專門用於Jenkins啟動時執行的配置命令;每次jenkins啟動都會自動執行該job

3)在構建觸發器模塊下,勾選Build when job nodes start;

 4)在增加構建步驟,增加Execute system Groovy script,輸入命令:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")

 

注意: 我們的方法中,都是把安全策略設置為空,這樣其實是有安全隱患的,實際應用中,可以根據自己的項目需要進行設置,詳細的配置可參考:https://content-security-policy.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM