jenkins 下使用 HTML Publisher 插件后查看 html 报告数据不显示

在部署jenkins持续集成的过程中经常会用到HTML Publisher Plugin插件来显示测试报告。

为了测试报告样式的美观以及易读,测试报告中经常会搭配CSS和JS实现自定义的样式或动画效果。
Jenkins中在访问有自定义样式或动画效果的测试报告时,展示的样式往往会出乎你的想象,面目全非,样式错乱,动画无法展示等等问题。打开浏览器开发工具控制台,可以看到CSS、JS加载失败。
这里写图片描述

这里写图片描述

原因分析
enkins为了避免受到恶意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

解决办法
利用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命令:
代码块语法遵循标准markdown代码,例如:
System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”,”“)
这里写图片描述
立即构建此Job,返回原项目重新构建,再次访问HTML页面,你会惊喜的发现问题已经解决了!!小编在验证过程后,重启了jenkins 直接执行测试JOB 数据也展示了。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐