
Jenkins持续集成——巧妙解决⽆法打开引⽤CSS、JS的
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服务器上托管的图⽚⽂件
以下形式的内容都会被禁⽌:
1、 JavaScript
2、 plugins (object/embed)
3、 HTML中的内联样式表(Inlinestyle sheets),以及引⽤的外站CSS⽂件
4、 HTML中的内联图⽚(Inlineimage definitions),以及外站引⽤的图⽚⽂件
5、 frames
6、 web fonts
7、 XHR/AJAX
解决办法
⽅法⼀:修改CSP(ContentSecurity Policy)的默认配置,到Jenkins系统管理à脚本命令⾏,执⾏以下Groovy命令,然后点击运⾏。配置完成后,重新构建原有项⽬,HTML页⾯即可正常显⽰。
System.setProperty("del.DirectoryBrowserSupport.CSP", "")
然⽽当你重新启动jenkins时,你会发现,HTML页⾯再次⾯⽬全⾮,CSP恢复为默认配置,因此这个办法只是临时⽅案。
⽅法⼆:利⽤jenkins的以下两个插件可以巧妙解决这个问题
1、Startup Trigger: 可实现在Jenkins节点(master/slave)启动时触发构建;
2、Groovy plugin: 可实现直接执⾏Groovy代码。
解决步骤如下:
1、Jenkins中新建⼀个Job,该Job专⽤于Jenkins启动时执⾏的配置命令。
2、在“构建触发器”模块,选择“Buildwhen job nodes start”选项。
3、在“构建”模块,选择“Executesystem Groovy script”,执⾏如下Groovy命令:
System.setProperty("del.DirectoryBrowserSupport.CSP","")
⽴即构建此Job,返回原项⽬重新构建,再次访问HTML页⾯,你会惊喜的发现问题已经解决了!!有⽊有很开⼼。
更多推荐
构建,配置,样式,问题,解决
发布评论