7

需要你的帮助!

我一直致力于将我的自动化测试集成到 Jenkins。我使用 Serenity BDD 和 JBehave。当我手动运行测试时,我的 Serenity 报告显示正常。但是,当我将测试集成到 Jenkins 并尝试通过 Publish HTML Report Plugin 显示报告时,它无法显示饼图并且还缺少其他元素。

知道如何解决这个问题吗?

4

4 回答 4

5

实际上,您不需要降级 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

  • 设置 CORS(管理 Jenkins -> 配置系统 -> CORS 过滤器) 在此处输入图像描述

  • 享受结果:-)

有关内容安全策略的更多详细信息:http ://content-security-policy.com

于 2016-02-09T08:54:52.307 回答
3

我让它在 Ubuntu 16.04 上如下工作

  1. 转到 /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 数据:;\""

  2. 用命令重启詹金斯

    http://localhost:8080/safeRestart

  3. 转到 Jenkins > 管理 Jenkins > 脚本控制台在下面运行

    System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

  4. 关闭现有的 Jenkins 浏览器窗口并以隐身模式打开新的浏览器窗口。

  5. 参考

    Jenkins 内容安全政策

    Jenkins - HTML Publisher Plugin - 在 Jenkins Server 中查看报告时不显示 CSS

于 2018-02-14T16:56:35.343 回答
1

我也一直面临同样的问题。我在脚本控制台中使用了一些代码通过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';")
于 2019-08-05T15:18:01.733 回答
-2

解决了。需要降级詹金斯。

于 2016-01-27T11:29:10.850 回答