Jenkins - HTML发布插件 - 在Jenkins服务器中查看报告时未显示CSS

134
我在Jenkins中使用HTML发布插件时遇到了一个奇怪的问题,即当我在Jenkins中查看报告时,添加的所有漂亮的CSS都被剥离掉了。如果我将报告下载到本地,我就能够看到CSS格式。是否有一种Jenkins设置可以允许查看CSS?
我在Jenkins中的HTML发布器设置:

enter image description here

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

enter image description here

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

enter image description here


可能是Jenkins HTML发布者插件:Jenkins 1.643没有外部链接的重复问题。 - Dave Bacher
5
所有人都在说,通过禁用内容安全策略来“修复”它,而没有考虑为什么首先需要它。任何能够影响要构建的更改的人都将能够劫持管理员凭据并访问整个Jenkins集群。虽然如果小心使用,内联CSS大多是安全的,但允许脚本会带来灾难。 - OrangeDog
18个回答

2

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

1
  1. 在MacOS中,Jenkins运行一个服务,需要在$JENKINS_HOME/init.groovy.d内创建一个Groovy脚本。
  2. 调用startup-properties.groovy和代码:
    import jenkins.model.Jenkins
    import java.util.logging.LogManager 
    /* Jenkins home directory */
    def jenkinsHome = Jenkins.instance.getRootDir().absolutePath
    def logger = LogManager.getLogManager().getLogger("")
    /* Replace the Key and value with the values you want to set.*/
    /* System.setProperty(key, value) */
    System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
    logger.info("Jenkins Startup Script: Successfully updated the system properties value for hudson.model.DirectoryBrowserSupport.CSP . Script location : ${jenkinsHome}/init.groovy.d")
  1. 重启Jenkins服务:brew services restart jenkins-lts

重新构建作业并验证HTML报告是否已生成

https://istack.dev59.com/A60BN.webp

enter image description here


1

如果你正在使用asciidoctor-maven-plugin插件将asciidoc文件转换为HTML文档并进一步发布到Jenkins,需要更新插件配置,添加linkcss属性:

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

1

1

很抱歉回复晚了,但还是想分享一下。

我曾经在Tomcat上使用Jenkins时遇到了问题,尝试执行脚本可以解决问题,但如果重启Tomcat,问题又会出现。

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

属性文件:tomcat_installation_dir/conf/catalina.properties 只需将以下行复制并粘贴到catalina.properties的最后(您可以将其设置在任何位置,只要不要干扰现有属性)。

-Dhudson.model.DirectoryBrowserSupport.CSP=""


1
如果使用 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

0

我知道这可能有点过时了,但是它对我非常有效,并且似乎也是Jenkins文档中推荐的方法。我只需要将资源根URL设置为由同一位置提供的不同URL即可。

"强烈建议设置资源根URL而不是自定义Content-Security-Policy。下面的大部分文档是在Content-Security-Policy首次引入时编写的,并保留供无法设置Jenkins以从不同域名服务用户内容的管理员使用。"


1
你能分享一下你引用的文档链接吗?这会对回答有很大帮助... - Ulrich Eckhardt
@UlrichEckhardt 这来自于"配置内容安全策略"。另请参见"如何在Jenkins中设置资源根URL" - VonC

0

在将HTTPS添加到我的Jenkins后,我遇到了同样的问题。如果您也遇到了同样的问题,解决方案很简单 - 将Jenkins URL设置为使用HTTPS协议而不是HTTP。可以通过Jenkins配置进行配置 -> Jenkins URL。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接