需要你的帮助!
我一直致力于将我的自动化测试集成到 Jenkins。我使用 Serenity BDD 和 JBehave。当我手动运行测试时,我的 Serenity 报告显示正常。但是,当我将测试集成到 Jenkins 并尝试通过 Publish HTML Report Plugin 显示报告时,它无法显示饼图并且还缺少其他元素。
知道如何解决这个问题吗?
需要你的帮助!
我一直致力于将我的自动化测试集成到 Jenkins。我使用 Serenity BDD 和 JBehave。当我手动运行测试时,我的 Serenity 报告显示正常。但是,当我将测试集成到 Jenkins 并尝试通过 Publish HTML Report Plugin 显示报告时,它无法显示饼图并且还缺少其他元素。
知道如何解决这个问题吗?
实际上,您不需要降级 Jenkins。出现此问题的原因是现代浏览器支持的新内容安全策略标头。正确的分辨率可能如下(CentOS 7 的代码示例和路径):
通过 Jenkins 系统属性配置内容策略标头:
sudo vim /etc/sysconfig/jenkins
set java options as following:
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"sandbox allow-forms allow-scripts; default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';\""
# save and exit
sudo /etc/init.d/jenkins restart
安装 Jenkins CORS 过滤器插件:https ://wiki.jenkins-ci.org/display/JENKINS/Cors+Filter+Plugin
享受结果:-)
有关内容安全策略的更多详细信息:http ://content-security-policy.com
我让它在 Ubuntu 16.04 上如下工作
转到 /etc/default/jenkins 并设置以下值
JAVA_ARGS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"沙盒允许表单允许脚本;默认源“自我”;script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 数据:;\""
用命令重启詹金斯
转到 Jenkins > 管理 Jenkins > 脚本控制台在下面运行
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
关闭现有的 Jenkins 浏览器窗口并以隐身模式打开新的浏览器窗口。
参考
Jenkins - HTML Publisher Plugin - 在 Jenkins Server 中查看报告时不显示 CSS
我也一直面临同样的问题。我在脚本控制台中使用了一些代码通过HTML插件显示范围报告,它可以工作但饼图不可见,然后经过大量探索,最后我也找到了以下代码,我也可以通过它查看饼图在我的范围报告中。进入脚本控制台并运行以下代码;
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src * 'unsafe-inline' 'unsafe-eval'; script-src * 'unsafe-inline' 'unsafe-eval'; connect-src * 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; frame-src *; style-src * 'unsafe-inline';")
解决了。需要降级詹金斯。