解决Jenkins中无法展示HTML文件样式的问题

通过HtmlRunnerCN.py执行自动化测试生成的Html报告,在jenkins中查看时,会丢失其样式。
原因是因为jenkins的安全设置默认不允许js脚本和css样式的执行。

解决方法为更改jenkins的CSP策略:
之前看到过文章的做法是
System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”, “default-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’; img-src data:;”)
这么做仅仅是将default-src设置为’unsafe-inline’ 和’unsafe-eval’,在早期的jenkins版本中这么设置是可以的,但是在Jenkins 2.150.2这么设置还是不能正常加载js和css(应该也和浏览器有关,因为之前我曾经经历过即使不做设置,用火狐浏览器也是可以正常显示的,但是chrome就不行)

最终的做法是:
将引html中引用的js放到script-src的声明里,把引用的css放到style-src的声明里,多个的话用空格隔开

例如,我在script console中执行如下脚本:
System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”,“sandbox allow-scripts; default-src ‘self’;script-src ‘unsafe-inline’ https://libs.baidu.com/jquery/2.0.0/jquery.min.js https://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js ; img-src dohko.hpeswlab.net ‘self’ data: ; style-src ‘unsafe-inline’ ‘self’ https://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css;”);

设置完成后,可以通过System.getProperty方法查看DirectoryBrowserSupport属性:
System.getProperty(“hudson.model.DirectoryBrowserSupport.CSP”);

Jenkins的默认安全设置不允许js脚本和css样式:
sandbox; default-src ‘none’; img-src ‘self’; style-src ‘self’;
此时网页存在以下限制:
No JavaScript allowed at all
No plugins (object/embed) allowed
No inline CSS, or CSS from other sites allowed
No images from other sites allowed
No frames allowed
No web fonts allowed
No XHR/AJAX allowed

本文参考了网友的文章:https://jingyan.baidu.com/article/219f4bf7bd7028de442d38a1.html
https://www.jianshu.com/p/f1de775bc43e

你可能感兴趣的:(技术)