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

时间:2016-03-03 22:03:26

标签: html css jenkins jenkins-plugins

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

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

enter image description here

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

enter image description here

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

enter image description here

16 个答案:

答案 0 :(得分:117)

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

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

默认规则设置为:

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

此规则集导致以下结果:

  • 根本不允许使用JavaScript
  • 不允许使用插件(object / embed)
  • 没有内联CSS,或其他网站允许的CSS
  • 没有其他图片 允许的网站
  • 不允许任何框架
  • 不允许使用网络字体
  • 不允许XHR / AJAX等

要放宽此规则,请转到

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

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

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

答案 1 :(得分:10)

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

永久性解决方法是更改​​[Jenkins directory]\jenkins.xml中的一行(对我来说是C:\Jenkins\jenkins.xml

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

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

-Dhudson.model.DirectoryBrowserSupport.CSP=

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

答案 2 :(得分:9)

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&#39;服务器

<强>指令

  

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

img-src: 定义有效的图片来源。

来源值

  

<强>&#39;自我&#39; - 允许从同一来源(相同的方案,主机和端口)加载资源。

     

用法:default-src 'self'

     

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

     

用法:default-src 'unsafe-inline'

     

<强>&#39; unsafe-eval&#39; - 允许不安全的动态代码评估,例如JavaScript eval()

     

用法:default-src 'unsafe-eval'

     

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

     

用法:img-src 'self' data:

请参阅有关内容安全政策here

的更多信息

答案 3 :(得分:7)

转到“管理Jenkins” - &gt; “脚本控制台” 并在命令下运行:

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

答案 4 :(得分:6)

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

在詹金斯重新开始之前效果已经到位,之后你必须重新开始。

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

您可以使用Startup Trigger plugin执行此操作。

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

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

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

保存,一切都应该有效。

答案 5 :(得分:5)

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

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

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

我找到了一份工作,从Jenkins重新开始并设置参数。

set to start build after Jenkins is ran

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

答案 6 :(得分:2)

转到

  

管理Jenkins->脚本控制台

并输入以下命令:

function wodarchive_entry($post_id = null) {
  $termsArray = get_the_terms( $post_id, "category" );
  //Get the terms for this particular item
  $termsString = ""; //initialize the string that will contain the terms

  foreach ( $termsArray as $term ) { // for each term 
    $category_id = $term->parent;//create a string that has all the slugs 
    if($category_id == '203'){
       $termsString .= $term->name.' ';
    }
  }
  echo $termsString;                
}

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

答案 7 :(得分:1)

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

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

Script Console Result

我的特定问题是Serenity BDD报表中缺少图像/ css。执行完这些步骤后,我的Serenity报告已正确渲染了所有图像/ css,包括在此更改之前执行 的内部版本的报告。 此解决方案也适用于任何已发布的基于html的报告。

答案 8 :(得分:0)

回应为时已晚,但想分享。

我在Tomcat上部署Jenkins时遇到了困难,尝试执行脚本,但如果tomcat重新启动它会有所帮助。

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

属性文件:tomcat_installation_dir / conf / catalina.properties 只需复制最后粘贴catalina.properties中的以下行(您可以将其设置为任何地方,以免混淆现有属性)

-Dhudson.model.DirectoryBrowserSupport.CSP = “”

答案 9 :(得分:0)

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

答案 10 :(得分:0)

用于设置的永久创建Groovy脚本文件 $ JENKINS_HOME / init.groovy 或目录 $ JENKINS_HOME / init.groovy中的任何 .groovy 文件。 d / ,其中包含以下内容:

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox allow-scripts; default-src 'self'; img-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline';")

systemctl重新启动詹金斯

https://wiki.jenkins.io/display/JENKINS/Post-initialization+script

答案 11 :(得分:0)

要在使用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

答案 12 :(得分:0)

打开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

答案 13 :(得分:0)

对于那些使用asciidoctor-maven-plugin插件从asciidoc文件生成HTML文档并将其进一步发布到Jenkins的用户,请更新插件配置,添加linkcss属性:

<configuration>
    <attributes>
        <linkcss>true</linkcss>
    </attributes>
    <backend>html5</backend>
    <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
</configuration>

答案 14 :(得分:0)

我们有一个更简单的解决方案。除非你真的坚持使用 HTML 报告,否则你可以只使用警告 NG 插件(无论如何这是一个好主意):

https://github.com/jenkinsci/warnings-ng-plugin/blob/master/SUPPORTED-FORMATS.md

我们将它用于 CodeNarc (Groovy),但也用于 Checkstyle、PMD、SpotBugs 和 Java 警告 (Java)。

答案 15 :(得分:-1)

Debian / Ubuntu 上,在aptitude installations中:

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

这对我来说已经足够了,但是有关参数的完整列表,请参阅this answer