我对Jenkins HTML Publisher插件有一个奇怪的问题,其中在Jenkins中查看时,删除了我添加到报告中的所有精美CSS。如果我将报告下载到本地,则可以看到CSS格式。Jenkins中是否有一个允许查看CSS的设置?
我在Jenkins中的HTML发布者设置:
在詹金斯中显示我的报告页面:
当我的报告页面显示在本地时:
Answers:
找出问题。在这里与其他用户共享。
由于詹金斯(Jenkins)中的内容安全策略,CSS被删除。(https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy)
默认规则设置为:
sandbox; default-src 'none'; img-src 'self'; style-src 'self';
此规则集导致以下结果:
要放松此规则,请转到
单击左侧的脚本控制台,然后键入以下命令:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
然后按运行。如果在“结果”标题下看到输出为“结果:”,则保护功能已禁用。重新运行您的构建,您可以看到存档的新HTML文件将启用CSS。
在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'
“不安全直插” -允许使用内联源元件,例如样式属性,的onclick或脚本标签机构(依赖于它被施加到源的上下文中)和javascript:的URI。
用法:
default-src 'unsafe-inline'
“不安全-EVAL” -允许不安全动态代码评估例如JavaScript的eval()
用法:
default-src 'unsafe-eval'
数据: -允许通过数据方案加载资源(例如Base64编码的图像)。
用法:
img-src 'self' data:
请在此处详细了解内容安全政策
<object type="image/svg+xml" data="imgs/lifecycle-diagram.svg"><span class="alt">lifecycleDiagram</span></object>
(用于嵌入式plantuml图的交互式asciidoctor spring-rest文档的结果),则需要将object-src设置为self。通知转义:JENKINS_JAVA_OPTIONS='-Djava.awt.headless=true -Dhudson.security.HudsonPrivateSecurityRealm.ID_REGEX="^[a-zA-Z0-9_.-]+$" -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox; default-src '\''none'\''; img-src '\''self'\''; style-src '\''self'\''; object-src '\''self'\'';"'
vi /etc/default/jenkins
了变量JAVA_ARGS
转到“管理Jenkins”->“脚本控制台”,然后运行以下命令:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' data:;")
(以下解决方案适用于Windows。)
永久性的解决方法是更改其中的一行[Jenkins directory]\jenkins.xml
(对我来说是C:\Jenkins\jenkins.xml
)
<executable>java.exe</executable>
<arguments>[arguments are here]</arguments>
将以下参数添加到以空格分隔的参数列表中:
-Dhudson.model.DirectoryBrowserSupport.CSP=
然后重新启动Jenkins服务以获取更改。
-Dfile.encoding=UTF-8
了论点
对于Ubuntu 14版本,有用的是特殊的插件:
https://wiki.jenkins-ci.org/display/JENKINS/Startup+Trigger-开始在詹金斯启动工作
https://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin-运行系统Groovy脚本
我做了一份工作,从詹金斯重新启动开始并设置了参数。
并添加了系统Groovy脚本来设置参数。 System.setProperty(“ hudson.model.DirectoryBrowserSupport.CSP”,“沙箱; img-src'self';”)
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 *")
要进行永久设置,请创建一个Groovy脚本文件$ JENKINS_HOME / init.groovy或目录$ JENKINS_HOME / init.groovy.d /中的任何.groovy文件,其内容如下:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox allow-scripts; default-src 'self'; img-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline';")
systemctl重新启动詹金斯
打开jenkins.xml文件并复制如下参数。它将永久修复。完成后,重新启动计算机。
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox allow-scripts; default-src 'self'; style-src 'self' 'unsafe-inline';" -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments
在CentOS上,以下解决方案(在另一个答案的注释中建议)是唯一对我有用的解决方案:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' data:;")
我的特定问题是Serenity BDD报表中缺少图像/ css。执行完这些步骤后,我的Serenity报告正确渲染了所有图像/ css,包括在此更改之前执行的构建报告。该解决方案也适用于任何已发布的基于html的报告。
现在做出回应已经为时已晚,但可以分享。
我在Tomcat上部署的詹金斯(Jenkins)上苦苦挣扎,尝试执行脚本,这样做很有帮助,但是如果重新启动tomcat,它就会消失。
通过在tomcat的catalina.properties中设置属性来进行永久修复。
属性文件:tomcat_installation_dir / conf / catalina.properties只需复制以下行,最后将其粘贴到catalina.properties中即可(您可以将其设置为任何位置,以免与现有属性混淆)
-Dhudson.model.DirectoryBrowserSupport.CSP =“”
要使用Jenkins-X永久设置系统属性myvalues.yaml
,请在当前目录中创建文件,其内容如下:
jenkins:
Master:
JavaOpts: >
-Dhudson.model.DirectoryBrowserSupport.CSP=
然后重新启动jenkins-x平台,可以通过升级它来完成:
$ jx upgrade platform --always-upgrade
# Presumably jx.exe is used if on Windows (not tested)
为了避免实际升级平台,只需强行将其升级到相同版本:
$ version=$(jx version --no-version-check\
| grep 'jenkins x platform' | sed -e 's/^jenkins.\+ //')
$ jx upgrade platform --version ${version} --always-upgrade