繁体   English   中英

如何在 Jenkins 中设置“资源根 URL”

[英]How to set the "Resource root URL" in Jenkins

我们正在设置一个新的 Jenkins 实例,并发现“资源根 URL”默认为空。 我已经阅读了有关此内容的 Jenkins 文档和(少数)stackoverflow 响应,但我仍然不清楚如何填写此字段。 在我们的例子中,我们使用的是一个租用的服务器实例,它有一个专用的外部 IP 地址(一个点分四边形)但没有域名。 顺便说一句,“Jenkins URL”似乎已正确设置为我们的外部点分四边形地址。

  1. 格式正确的“资源根 URL”是什么样的?
  2. 如何设置没有域名的“资源根 URL”?
  3. 该文档提到 CSP(内容安全策略)应该是其中的一部分。 它是什么以及如何设置它?
  4. 总之,为 Jenkins 构建“资源根 URL”的步骤是什么?

谢谢!

据我所知,您需要两个指向同一个 Jenkins 实例的不同域。 这似乎是对 Content-Security-Policy 的frame-ancestors指令的限制,请参阅JENKINS-41891 的第 6 条评论

简而言之,CSP (Content-Security-Policy) 是一种安全功能,它限制浏览器包含外部资源(例如图像和 CSS)或执行外部脚本。

在 Jenkins 的上下文中,CSP 用于限制用户提供的内容(例如发布的 Maven 站点)与 Jenkins 混淆/交互。 如果没有它,在 Jenkins 中没有管理权限但能够在 Maven 站点中包含脚本(即对源存储库具有提交权限)的开发人员可能会在管理员浏览包含此恶意脚本的已发布 Maven 站点时触发管理 Jenkins 任务。

问题是,您通常希望拥有由 Jenkins 发布的用户生成内容的脚本。 但是由于存在安全风险,CSP 仍然阻止了它们。

所以你有这些选择:

  • 在您发布的工件中使用非工作脚本。 如果您没有使用托管在 Jenkins 实例上的已发布人工制品,您可能不需要资源 URL,也不必担心。
  • 放宽 CSP 限制:这在Jenkins 用户手册:配置内容安全策略中有描述,但是很麻烦并且有安全风险(=容易出错)。
  • 使用第二个域:这是资源根 URL 从浏览器的角度来看,这两个 URL 彼此无关,因此资源 URL 上的脚本不被信任以在“主”URL 上与 Jenkins 混淆。

因此,如果您想使用Resource root URL ,您需要两个域(或一个域和一个 IP)才能使其工作。 然后,您应该能够像这样设置您的 Jenkins:

  • 詹金斯网址: https ://jenkins.example.org/
  • 资源根 URL: https ://jenkins-static.example.org/

在这个例子中, jenkins.example.orgjenkins-static.example.org指向同一个 IP。


请注意,以上所有内容均由非安全和非 Jenkins 专家编写,因此可能不是 100% 准确。 但它应该让这个想法得到传达。

我在这个上花了太多时间。 经过一番挖掘,我发现我可以卷曲相同的端点,并且能够更快地进行测试。 curl https://jenkins.example.com/git/notifyCommit?url=bitbucket.org/MyUsername/TheRepo&token=mytoken&branches=*/main不要包含 .git,分支可能会有所不同。 我注意到我得到了多个 id 输出,您可能需要具体说明您的分支。 但是,如果您随心所欲,您可能会找到适合您的设置的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM