跳过正文
Background Image
  1. Posts/

如何修复 Shields.io 徽章在 Jenkins 中无法显示

·423 字·1 分钟· ·
沈显鹏
作者
沈显鹏
目录

问题
#

我在 Jenkins 中使用以下 Groovy 代码发布文档:

publishHTML([
    allowMissing: false,
    alwaysLinkToLastBuild: false,
    keepAll: false,
    reportDir: "docs/build/html/",
    reportFiles: 'index.html',
    reportName: "Documentation",
    useWrapperFileDirectly: true
])

然而,一些来自 Shields.io 的徽章在已发布的文档中无法正常显示。

Jenkins 中无法显示徽章

解决方法
#

在 Script Console 中更新 Jenkins CSP 的可用脚本

以下是应在 “Manage Jenkins → Script Console” 中运行的精简且正确的 Groovy 脚本:

System.setProperty(
  "hudson.model.DirectoryBrowserSupport.CSP",
  "default-src 'self'; img-src * data:;"
)

该设置允许从任意域加载图片(img-src *),包括 Shields.io。 如果你希望更安全地限制来源,可以这样设置:

System.setProperty(
  "hudson.model.DirectoryBrowserSupport.CSP",
  "default-src 'self'; img-src 'self' https://img.shields.io data:;"
)

🟡 注意:此更改是临时的(仅在内存中生效),Jenkins 重启后会失效。


永久生效的方法

  1. 修改 Jenkins 启动参数(取决于你的 Jenkins 运行方式):

如果使用 /etc/default/jenkins(Debian/Ubuntu):

JENKINS_JAVA_OPTIONS="-Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self'; img-src 'self' https://img.shields.io data:;\""

如果使用 systemd(CentOS/Red Hat 或现代系统):

编辑或覆写 jenkins.service 文件:

Environment="JAVA_OPTS=-Dhudson.model.DirectoryBrowserSupport.CSP=default-src 'self'; img-src 'self' https://img.shields.io data:;"
  1. 重启 Jenkins
sudo systemctl restart jenkins

结果
#

现在,Shields.io 徽章在 Jenkins 中可以正常显示了。

Jenkins 中可以显示徽章


转载本文时请注明作者与出处。禁止商业用途。你可以通过 RSS 订阅我的博客。

相关文章

如何通过 Jenkins 进行资源的锁定和释放
·901 字·2 分钟
本文介绍了如何使用 Jenkins 的 Lockable Resources 插件来管理和锁定资源,确保在多任务环境中资源的独占性和安全性。
通过 Jenkins 来提交修改的代码 git push by Jenkins
·439 字·1 分钟
如何通过 Jenkins Pipeline 脚本来提交修改的代码到 Git 仓库,包括克隆仓库、修改代码和推送更改等步骤。
Jenkins Linux Agent 配置
·353 字·1 分钟
本文提供了 Jenkins Linux Agent 的逐步配置指南,包括 Java 运行时的准备、节点创建以及常见问题的排查方法。
Jenkins Windows Agent 配置
·608 字·2 分钟
本文提供 Jenkins Windows Agent 的详细配置步骤,包括 Java 运行时准备、节点创建以及常见问题的排查方法。
Jenkinsfile 配置
·256 字·1 分钟
本文介绍了如何使用 Jenkinsfile 配置 Jenkins Pipeline,包括构建、测试和发布阶段的示例,以及如何处理邮件通知。
如何优雅地控制 Jenkins 构建是否中断?只看这篇
·1033 字·3 分钟
在 Jenkins 中,disableConcurrentBuilds 选项用于管理并发构建。本文介绍了如何根据分支类型动态设置 abortPrevious 的值,从而实现更灵活的构建管理。