有時我們使用HTML Publisher Plugin插件時,在jenkins點開html report,會發現沒有帶任何的css或js樣式,這是因為Jenkins 1.641 / Jenkins 1.625.3將Content-Security-Policy標題引入了Jenkins 提供的靜態文件(具體來說,DirectoryBrowserSupport)。此標題設置為非常限制的默認權限集,以保護Jenkins用戶免受工作空間/userContent或歸檔工件中的惡意HTML / JS文件的干擾。默認的設置是:
默認規則設置為:
sandbox; default-src 'none'; img-src 'self'; style-src 'self';
此規則集導致以下內容:
- 根本不允許JavaScript
- 不允許插件(對象/嵌入)
- 不允許內聯CSS或其他網站的CSS
- 沒有允許來自其他網站的圖片
- 不允許幀
- 不允許使用網絡字體
- 不允許XHR / AJAX
- 等等
詳細:
sandbox
限制了頁面可以執行的一些操作,類似於sandbox
iframe上設置的屬性。有關禁止的完整列表,請參閱此網站。該屬性不被廣泛支持。default-src 'none'
probihits加載腳本,AJAX / XHR / WebSockets / EventSources的URL,字體,插件對象,媒體和框架(圖像和樣式也將被禁止,但可以通過下面描述的更具體的規則進行)。img-src 'self'
允許加載由詹金斯提供的其他文件的圖像。禁止內聯圖像定義。style-src 'self'
允許從Jenkins提供的其他文件加載樣式表。禁止內聯樣式表。
請參閱content-security-policy.com以獲取有關此標題及其可能值的引用。
所以需要我們在jenkins中做如下設置:
確保將HTML Publisher Plugin更新到1.10版,以使其與內容安全策略配合使用
進入系統管理->腳本執行行->輸入下面的命令:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
點擊下面的運行按鈕,不生效的話,多運行幾次。
還可以做如下配置:
Set a custom value for the header:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox; default-src 'self';")
Unset the header:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
Set the header to the default:
System.clearProperty("hudson.model.DirectoryBrowserSupport.CSP")
Find out the current header value:
System.getProperty("hudson.model.DirectoryBrowserSupport.CSP")
更多信息參見官網介紹:
https://wiki.jenkins.io/display/JENKINS/Configuring+Content+Security+Policy
用瀏覽器翻譯了一下,作為參考: