Jenkins中HTML報告優化


在部署jenkins持續集成的過程中經常會用到HTML Publisher Plugin插件來顯示測試報告。

為了測試報告樣式的美觀以及易讀,測試報告中經常會搭配CSS和JS實現自定義的樣式或動畫效果。

Jenkins中在訪問有自定義樣式或動畫效果的測試報告時,展示的樣式往往會出乎你的想象,面目全非,樣式錯亂,動畫無法展示等等問題。打開瀏覽器開發工具控制台,可以看到CSS、JS加載失敗。

 

 

原因分析

Jenkins為了避免受到惡意HTML/JS文件的攻擊,會默認將安全策略CSP設置為:

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

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

1、Jenkins服務器上托管的CSS文件

2、Jenkins服務器上托管的圖片文件

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

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

解決辦法

方法一:修改CSP(Content Security Policy)的默認配置,到Jenkins系統管理à腳本命令行,執行以下Groovy命令,然后點擊運行。配置完成后,重新構建原有項目,HTML頁面即可正常顯示。

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

 

 

 

 

然而當你重新啟動jenkins時,你會發現,HTML頁面再次面目全非,CSP恢復為默認配置,因此這個辦法只是臨時方案。

方法二:利用jenkins的Groovy 插件永久解決這個問題

1、Groovy plugin: 可實現直接執行Groovy代碼。

解決步驟如下:

在“構建”模塊,選擇“Execute system Groovy  script”,執行如下Groovy命令:

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

 

 方法三:在linux環境,如果jenkins時通過tomcat容器來啟動的時候,可以通過設置參數來執行,vi /etc/profile

export JAVA_OPTS="-Dhudson.model.DirectoryBrowserSupport.CSP="sandbox; default-src 'self';""

執行: source /etc/profile

重啟jenkins

方法四:在工程配置時,添加構建后操作: Grooy script,執行命令:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

 

 


免責聲明!

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



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