2016-03-03 91 views
32

Jenkins HTML Publisher插件有一个奇怪的问题,其中在Jenkins中查看时,我添加到报表中的所有花哨CSS都被剥离。如果我将报告下载到本地,我可以看到CSS格式。 Jenkins中有一个允许CSS被查看的设置吗?Jenkins - HTML Publisher Plugin - 在Jenkins服务器中查看报告时不显示CSS

我的HTML出版商设置在詹金斯:

enter image description here

我的报告页面时,在詹金斯显示:

enter image description here

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

enter image description here

+0

可能重复[詹金斯HTML发布者插件:没有外部链接与詹金斯1.643](http://stackoverflow.com/questions/34681852/jenkins-html-publisher-plugin -no-external-links-with-jenkins-1-643) –

回答

67

找出问题所在。在此分享给其他用户。

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

默认的规则设置为:

sandbox; default-src 'none'; img-src 'self'; style-src 'self'; 

此规则集结果如下:

  • 没有使用Javascript允许在所有
  • 无插件(对象/嵌入)允许
  • 没有内嵌CSS或允许其他网站的CSS
  • 否i从其他 网站法师允许
  • 无框架允许
  • 没有Web字体允许
  • 没有XHR/AJAX允许等

放宽此规则,请转到管理Jenkins->脚本控制台和键入以下命令:

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

并按运行。如果在“结果”标题下看到输出为“结果:”,则保护被禁用。重新运行你的构建,你可以看到归档的新HTML文件将启用CSS。

+0

谢谢!它真的帮我解决了我和詹金斯之间的这个CSS问题。 –

+6

有没有办法永久设置它? – Steerpike

+1

@Steerpike我想知道你的意思,然后发现重新启动詹金斯后,css被阻止。所以我创建了一个每12小时运行一次命令的Jenkins作业。似乎要做的伎俩。 – Aeropher

5

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

一个永久的解决办法是改变行[Jenkins directory]\jenkins.xml(对我来说这是在C:\Jenkins\jenkins.xml

<executable>java.exe</executable> 
<arguments>[arguments are here]</arguments> 

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

-Dhudson.model.DirectoryBrowserSupport.CSP= 

然后重新启动Jenkins服务以接收更改。

3

您可以通过在Vall的回答指定使用常规命令解决这个问题。

效果是一直到詹金斯重新启动后,你必须再次做。

解决这个问题的一个解决方案是配置工作时詹金斯启动,会为你做到这一点。

您可以通过使用Startup Trigger plugin来完成此操作。

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

然后加入用命令的执行系统Groovy脚本生成步骤:

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

保存,一切都应该工作。

1

的Ubuntu版本14有益的是特殊的插件:

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

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

而且我做了一个工作,这对詹金斯开始重新启动并设置参数。

set to start build after Jenkins is ran

而且增加系统的Groovy脚本设置parametr。 Run System Groovy script System.setProperty( “hudson.model.DirectoryBrowserSupport.CSP”, “沙箱; IMG-src的 '自我';”)

+0

尽管运行作业成功完成,但它并未启用报告的CSS显示。我在“脚本控制台”中运行完全相同的groovy脚本,并且运行良好。我还可以做些什么?这项工作的groovy脚本并没有改变实际的Jenkin的父母的财产。 – frakman1

+0

@ frakman1在这一刻我的Groovy脚本看起来像这样 - System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”,“”) 但是,这一切,一切正常。也许你没有管理员用户? – abiab

+0

谢谢你的回应。我最终得到它的工作。我不得不使用这个脚本:'System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”,“sandbox allow-same-origin allow-scripts; default-src'self'; script-src *'unsafe-eval' ; img-src *; style-src *'unsafe-inline'; font-src *“)' – frakman1

3

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:;\""

即使在重新启动jenkin服务器后,这也可以工作。

指令

默认-SRC默认-SRC是加载内容,如JavaScript,图片,CSS,字体,AJAX请求,框架,HTML5媒体

这样的默认策略

IMG-SRC:定义图像的有效来源。

源值

'自我' -来自同一产地(相同的方案,主机和端口)允许加载资源。

用法:default-src 'self'

“不安全内联” - 允许使用内联源元件,例如风格属性的,的onclick或脚本标签体(依赖于它被施加到源的上下文)和javascript:URI。

用法:default-src 'unsafe-inline'

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

用法:default-src 'unsafe-eval'

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

用法:img-src 'self' data:

请参考有关内容安全策略here

+0

唯一一个适合我的工具 – Adiii

-1

于Debian/Ubuntu,在aptitude installations

  • sudo vi /etc/default/jenkins
  • 添加-Dhudson.model.DirectoryBrowserSupport.CSP=JAVA_ARGS(例如JAVA_ARGS="-Dhudson.model.DirectoryBrowserSupport.CSP="
  • 重启詹金斯 - service jenkins restart

这是足以让我,但参数的完整列表,请参阅this answer

0

现在回复已经太迟了,但还是想分享。

我一直在与Jenkins部署在Tomcat中挣扎,试图执行脚本,它有助于但是如果tomcat重新启动就会消失。

通过在tomcat中设置catalina.properties中的属性进行永久修复。

属性文件:tomcat_installation_dir/conf目录/ catalina.properties 只要复制粘贴catalina.properties下面的线在最后(你可以设置它的任何地方只是为了不与现有的性质混乱)

-Dhudson.model .DirectoryBrowserSupport.CSP =“”

0

在向我的jenkins添加HTTPS后,我遇到了同样的问题。如果您遇到同样的问题,该解决方案很简单 - 将您的Jenkins url设置为使用HTTPS协议而不是HTTP。它可以通过詹金斯配置配置 - >詹金斯url