Jenkins - HTML Publisher插件 - 在Jenkins Server中查看报表时不显示CSS

Val*_*all 68 html css jenkins jenkins-plugins

我在Jenkins HTML Publisher插件中遇到了一个奇怪的问题,在Jenkins中查看时,我添加到报表中的所有奇特的CSS都被删除了.如果我将报告下载到本地,我可以看到CSS格式.Jenkins中是否有允许查看CSS的设置?

我在詹金斯的HTML发布者设置:

在此输入图像描述

在Jenkins中显示我的报告页面:

在此输入图像描述

我在本地显示的报告页面:

在此输入图像描述

Val*_*all 134

找出问题所在.在这里为其他用户分享.

由于Jenkins中的内容安全策略,CSS被剥离.(https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy)

默认规则设置为:

sandbox; default-src 'none'; img-src 'self'; style-src 'self';
Run Code Online (Sandbox Code Playgroud)

此规则集导致以下结果:

  • 完全没有JavaScript允许
  • 不允许插件(对象/嵌入)
  • 没有内联CSS,或允许来自其他网站的CSS
  • 不允许来自其他网站的图片
  • 不允许任何帧
  • 不允许使用网络字体
  • 不允许XHR/AJAX等

要放松这个规则,请转到

  1. 管理詹金斯 - >
  2. 管理节点 - >
  3. 单击设置(齿轮图标) - >
  4. 单击左侧的脚本控制台,然后键入以下命令:

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

然后按运行.如果在"结果"标题下面看到输出为"结果:",则禁用保护.重新运行您的构建,您可以看到存档的新HTML文件将启用CSS.

  • 有没有办法永久设置这个? (13认同)
  • 完全禁用 CSP 并不是很安全。 (3认同)
  • @Steerpike这是正确的,除了它是一个groovy命令,所以你需要在"执行系统Groovy脚本"构建步骤中执行它.然后在"构建触发器"部分下,我选择了"使用此值定期构建":H 12*** (2认同)
  • 更新:管理Jenkins->脚本控制台->粘贴代码 (2认同)

lax*_*089 20

CentOS上,以下解决方案(在另一个答案的评论中建议)是唯一对我有用的解决方案:

  1. 转到:管理 Jenkins > 管理节点和云
  2. 单击节点右侧的齿轮图标(默认情况下只有一个名为 Master 的节点)
  3. 单击左侧的“脚本控制台”
  4. 在控制台窗口中输入以下内容:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' data:;")
  5. 单击运行
  6. 您应该在“结果”部分中看到一些输出,类似于下面的屏幕截图:

脚本控制台结果

我的具体问题是 Serenity BDD 报告中缺少图像/css。执行这些步骤后,我的 Serenity 报告已正确渲染所有图像/css,包括在此更改之前执行的构建的报告。该解决方案也适用于任何已发布的基于 html 的报告。

  • 可能有点晚了,但这对我的 Windows 设置有效。但由于某种原因,我需要单击“运行”两次才能显示预期的输出 (3认同)

jit*_*hew 14

CentOs中,在html报告中启用图像

  • sudo vi /etc/sysconfig/jenkins
  • 设置如下 JENKINS_JAVA_OPTION

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' data:;\""

即使在重新启动jenkins的服务器之后,这也可以工作.

指示

default-src:default-src是加载内容的默认策略,如JavaScript,图像,CSS,字体,AJAX请求,框架,HTML5媒体

img-src: 定义有效的图像源.

来源价值

'self' - 允许从同一个源(相同的方案,主机和端口)加载资源.

用法: default-src 'self'

'unsafe-inline' - 允许使用内联源元素,例如样式属性,onclick或脚本标记正文(取决于应用它的源的上下文)和javascript:URI.

用法: default-src 'unsafe-inline'

'unsafe-eval' - 允许不安全的动态代码评估,例如JavaScript eval()

用法: default-src 'unsafe-eval'

data: - 允许通过数据方案加载资源(例如Base64编码图像).

用法: img-src 'self' data:

在此处详细了解内容安全政策

  • 你应该只启用内联CSS,而不是所有其他不安全的东西 (2认同)
  • 对于我的 ubuntu 安装,我使用了 `vi /etc/default/jenkins` 和变量 `JAVA_ARGS` (2认同)

Som*_*Som 11

转到“管理Jenkins”->“脚本控制台”,然后运行以下命令:

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
Run Code Online (Sandbox Code Playgroud)

  • 将第二个参数修改为 kithinkmatthew 提到的值后,这对我有用,即 `System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' 数据:;")` (5认同)

twa*_*lig 10

(以下解决方案适用于Windows.)

一个永久性的解决方法是改变一条线[Jenkins directory]\jenkins.xml(对我而言C:\Jenkins\jenkins.xml)

<executable>java.exe</executable>
<arguments>[arguments are here]</arguments>
Run Code Online (Sandbox Code Playgroud)

将以下参数添加到以空格分隔的参数列表中:

-Dhudson.model.DirectoryBrowserSupport.CSP=
Run Code Online (Sandbox Code Playgroud)

然后重新启动Jenkins服务以获取更改.

  • 这是对我来说唯一有效的答案,我还在参数中添加了 `-Dfile.encoding=UTF-8` (2认同)

dra*_*osb 6

您可以使用Vall的答案中指定的groovy命令来解决此问题.

效果到位,直到詹金斯重新开始,之后你必须再做一次.

解决此问题的解决方案是配置一个在jenkins启动时为您执行此操作的作业.

您可以使用Startup Trigger插件执行此操作.

安装后,创建一个新作业,您将需要检查" 构建触发器"部分下的新复选框.

然后使用以下命令添加Execute系统Groovy脚本构建步骤:

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
Run Code Online (Sandbox Code Playgroud)

保存,一切都应该工作.


abi*_*iab 5

对于Ubuntu 14版本,有用的特殊插件是:

https://wiki.jenkins-ci.org/display/JENKINS/Startup+Trigger-开始在詹金斯启动工作

https://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin-运行系统Groovy脚本

我做了一份工作,从詹金斯重新启动开始并设置了参数。

将在詹金斯(Jenkins)运行后开始构建

并添加了系统Groovy脚本来设置参数。 运行系统Groovy脚本 System.setProperty(“ hudson.model.DirectoryBrowserSupport.CSP”,“沙箱; img-src'self';”)

  • 感谢您的答复。我最终让它发挥作用。我不得不使用这个脚本: `System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox allowed-same-origin allowed-scripts; default-src 'self'; script-src * 'unsafe-eval' ; img-src *; style-src * '不安全内联'; font-src *")` (2认同)

小智 5

管理 Jenkins --> 脚本控制台

并输入以下命令:

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
Run Code Online (Sandbox Code Playgroud)

然后按运行。如果输出为“结果”,则重新运行构建检查 HTML 报告格式