如何在你的GitHub企业服务器实例上启用Dependabot?

100 阅读5分钟

依赖机器人更新现已在GitHub企业服务器3.5版本中普遍使用🎉!多年来,GitHub Enterprise Server (GHES)一直提供Dependabot提醒,但对Dependabot更新的支持--即通过打开拉动请求来自动更新依赖关系的能力--一直是GHES客户的长期功能需求。

如何在你的GitHub企业服务器实例上启用Dependabot?

作为快速复习,Dependabot包括三项服务。

  • Dependabot警报:在检测到依赖关系中的漏洞时向你发出警报
  • Dependabot安全更新:当检测到漏洞时,通过向你的仓库发出拉动请求,将依赖关系升级到下一个没有漏洞的版本。
  • Dependabot版本更新:打开拉动请求,使你的所有依赖关系保持最新,减少你对漏洞的暴露和陷入过时版本的可能性。

在这篇文章中,我们将介绍在企业服务器上启用Dependabot的步骤,更详细的参考材料可以在GitHub文档中找到。

先决条件

启用Dependabot来更新你的依赖关系。

  • 拥有一个运行3.5或更高版本的GitHub企业服务器实例。
    • 注意:尽管Dependabot更新在3.3和3.4版本上可用,但3.5版本是普遍支持的最低推荐版本。
  • 在你的GitHub企业服务器上启用GitHub Actions
    • 注意:GitHub Actions目前不支持集群配置,所以Dependabot不支持集群环境。
  • 设置一个或多个 Linux 虚拟机作为自我托管的 Actions 运行器。这些运行器将负责运行Dependabot背后的逻辑。
  • 设置并配置带有 "dependabot "标签的自我托管行动运行器。
    • 注意:由于Dependabot更新的运行程序需要互联网接入,因此在空气加压设置上的客户受到限制。

设置GitHub Actions运行器

要配置GitHub Actions运行器,请按照我们文档中的步骤进行。GitHub 企业服务器将为你提供一组命令,让你在虚拟机上运行,将自我托管的运行者添加到运行者池中。

为Dependabot配置运行器时,你必须为运行器配置dependabot 标签,以表明该运行器可用于Dependabot更新作业。你会被提示添加一个标签和一个组。在你的终端中运行./config.sh ,你会看到以下内容。

"

作为选择,你可以使用一个运行器组来管理你的Dependabot运行器。如果使用存储库或组织级的运行者组,确保每个运行者都是Dependabot运行者组的一部分,并且存储库可以访问这个组,你应该有一个运行者组。下面是你的组的样子。

"

启用Dependabot

在网站管理员管理控制台的安全下,启用以下功能。请注意,在你的服务器上启用Dependabot需要一个短暂的停机时间,你的服务器将被重新启动。

  • 启用依赖关系图。
  • 启用Dependabot更新。

"

欲了解更多信息,以及分步说明,请参见。为你的企业启用Dependabot为你的企业启用依赖关系图的文档。

导航到 GHES 设置,然后是 GitHub 连接。

  • 为你的GHES启用GitHub连接。
  • 确保两个Dependabot设置都已启用。
    • 在组织/仓库层面启用Dependabot安全更新
    • 启用Dependabot警报(注意:安全更新需要警报)。
    • (建议)在初始启用时关闭安全警报通知

"

更多信息,请参阅 "管理GitHub连接"

在一个仓库上测试Dependabot的更新

导航到一个测试仓库,进入设置,然后是安全和分析。启用Dependabot安全更新。你也可以按照同样的模式,在组织层面配置Dependabot安全更新。

如果你想启用Dependabot版本更新,你将需要为每个你希望保持最新的版本库添加一个配置文件

你可以通过引入一个已知的不良依赖关系来测试Dependabot安全更新是否正常工作,例如,添加一个内容如下的requirements.txt 文件。

requirements.txt 文件

pillow>= 2.4.0, < 5.3.1

提交这个文件将触发你的版本库同时接收Dependabot警报和Dependabot安全更新。

参见配置Dependabot版本更新 - GitHub文档关于Dependabot安全更新 - GitHub文档

GHES上的Dependabot与GitHub.com有什么不同?

Dependabot通过分析你的依赖关系的可用版本并计算出你应该运行的最低安全版本来创建拉取请求。在GitHub.com上,Dependabot使用在GitHub Actions成为产品之前开发的内部基础设施运行这一分析。对于GHES设备,我们需要找到一种方法来处理这些容器,以便它们不会影响你的GitHub企业服务器实例的可用性,能够与各种GHES实例很好地配合,并且能够插入回购的CI。这就是 "行动 "的作用。为创建更新拉动请求而运行的图像是用GitHub Actions打包的。点击这里了解这个架构是如何形成的。

让Dependabot更新在GitHub Actions中运行意味着你可以获得Actions带来的好处。例如,你可以看到Dependabot创建拉动请求,并监视日志,就像你对其他行动所做的一样

/

请注意,你目前不能像其他行动那样重新运行工作。此外,GHES上的Dependabot只适用于自我托管的运行器。

了解更多关于Dependabot和GHES的信息

以下是本文章中使用的一些链接,指导你完成在企业实例上启用Dependabot的更多详细步骤。

我们希望你和我们一样对GHES上的Dependabot感到兴奋!我们渴望听到你的体验,并欢迎在 反馈讨论中提出意见或问题。