Skip to main content

在自托管运行器上管理 Dependabot

可配置 GitHub Actions 的 Dependabot 用于访问专用注册表和内部网络资源的自托管运行器。

谁可以使用此功能?

Organization owners and repository administrators can configure Dependabot to run on self-hosted runners.

Note

必须选择在 GitHub Actions 上运行 Dependabot。 GitHub Enterprise Cloud 的未来版本将删除选择加入并始终在 GitHub Actions 上运行 Dependabot 的功能。 有关详细信息,请参阅“关于 GitHub Actions 运行器上的 Dependabot”。

关于 GitHub Actions 自托管运行器上的 Dependabot

可通过设置 Dependabot 安全性和版本更新来帮助组织和存储库的用户创建和维护安全代码。 借助 Dependabot updates,开发人员可以配置存储库,以便其依赖项自动更新并保持安全性。 在 GitHub Actions 上运行 Dependabot 可以提供更好的性能,并提高 Dependabot 作业的可见性和控制。

要更好地控制 Dependabot 对专用注册表和内部网络资源的访问,可将 Dependabot 配置为在 GitHub Actions 自托管运行器上运行。

出于安全原因,在 GitHub Actions 自托管运行器上运行 Dependabot 时,不会在公共存储库上运行 Dependabot updates。

有关在使用 GitHub 托管的运行器时配置对专用注册表的 Dependabot 访问权限的详细信息,请参阅“针对 Dependabot 的专用注册表配置指南”。 有关支持哪些生态系统作为专用注册表的信息,请参阅“删除对公共注册表的 Dependabot 访问权限”。

先决条件

请安装并启用 Dependabot,并且启用和使用 GitHub Actions。 还应为组织启用“GitHub Actions 运行器上的 Dependabot”设置。 有关详细信息,请参阅“关于 GitHub Actions 运行器上的 Dependabot”。

如果组织或存储库未启用 ,则组织或存储库级别设置启用 将对 运行器在网页 UI中不可见。

组织可能已配置策略来限制操作和自托管运行器在特定存储库中运行,这反而会限制 Dependabot 在 GitHub Actions 自托管运行器上运行。 这种情况下,用于启用“在自托管运行器上启用 Dependabot”的组织或存储库级别设置将在网页 UI 中不可见。 有关详细信息,请参阅“禁用或限制组织的 GitHub Actions”。

强制实施策略以仅允许企业中的操作和可重用工作流,并且对 GitHub Actions 启用 Dependabot 时,Dependabot 将不会运行。 若要使 Dependabot 能够与企业操作和可重用工作流一起运行,应选择允许 GitHub 创建的操作,或允许指定的操作和可重用工作流。 有关详细信息,请参阅“在企业中为 GitHub Actions 实施策略”。

为 Dependabot updates 配置自托管运行器

将组织或存储库配置为在 GitHub Actions 上运行 Dependabot 后,在自托管运行器上启用 Dependabot 之前,应为 Dependabot updates 配置自托管运行器。

Dependabot 运行器的系统要求

用于 Dependabot 运行器的任何虚拟机 (VM) 都必须满足自托管运行器的要求。 此外,它们还必须满足以下要求。

  • Linux 操作系统

  • x64 体系结构

  • 安装有运行器用户访问权限的 Docker:

    • 建议在无根模式下安装 Docker,并将运行器配置为在没有 root 特权的情况下访问 Docker。
    • 或者,安装 Docker 并授予运行器用户提升的权限来运行 Docker。

CPU 和内存要求将取决于在给定 VM 上部署的并发运行器的数量。 作为指导,我们已在一台 2 CPU 8GB 的计算机上成功设置了 20 个运行器,但最终,CPU 和内存要求将在很大程度上取决于正在更新的存储库。 某些生态系统需要比其他生态系统更多的资源。

如果在 VM 上指定了 14 个以上的并发运行器,则还必须更新 Docker /etc/docker/daemon.json 配置,以增加 Docker 可以创建的默认网络数。

{
  "default-address-pools": [
    {"base":"10.10.0.0/16","size":24}
  ]
}

Dependabot 运行器的网络要求

Dependabot 运行器需要访问公共互联网、GitHub.com 以及将在 Dependabot updates 更新中使用的任何内部注册表。 为了最大程度地降低内部网络的风险,应该限制虚拟机 (VM) 对内部网络的访问。 如果运行器下载了一个被劫持的依赖项,这将减少内部系统损坏的可能性。

Dependabot 运行器的证书配置

如果 Dependabot 需要与使用自签名证书的注册表进行交互,则还必须在运行 Dependabot 作业的自托管运行器上安装这些证书。 这一安全措施强化了连接。 还必须配置 Node.js 以使用证书,因为大多数操作都是用 JavaScript 编写并使用 Node.js 运行,而 Node.js 不使用操作系统证书存储。

为 Dependabot 添加自托管运行器

  1. 在存储库或组织级别预配自托管运行器。 有关详细信息,请参阅“关于自托管运行程序”和“添加自托管的运行器”。

  2. 按照上述要求设置自托管运行器。 例如,在运行 Ubuntu 20.04 的 VM 上,你可以:

  3. dependabot 标签分配给希望 Dependabot 使用的每个运行器。 有关详细信息,请参阅“将标签与自托管运行程序结合使用”。

  4. (可选)允许 Dependabot 触发的工作流使用只读权限以外的权限,并有权访问通常可用的任何机密。 有关详细信息,请参阅“通过 GitHub Actions 自动化 Dependabot”。

启用 Dependabot updates 的自托管运行器

为 Dependabot updates 配置自托管运行器后,可以在组织或存储库级别对自托管运行器启用或禁用 Dependabot updates。

请注意,禁用并重新启用“自托管运行器上的 Dependabot”设置不会触发新的 Dependabot 运行。

为存储库启用或禁用

可为 私人或内部 存储库在自托管运行器上管理 。

  1. 在 GitHub.com 上,导航到存储库的主页。

  2. 在存储库名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。

    存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

  3. 在边栏的“安全性”部分中,单击“ 代码安全性和分析”。

  4. 在“Dependabot”下的“自托管运行器上的 Dependabot”右侧,单击启用以启用该功能,或单击禁用以将其禁用。

为组织启用或禁用

可使用“代码安全和分析”的组织设置页面,为组织中所有现有的 私有或内部 存储库启用 自托管运行器。 只有已配置为在 GitHub Actions 上运行 Dependabot 的存储库才会更新为下次触发 Dependabot 作业时在自托管运行器上运行 Dependabot。

  1. 在 GitHub 的右上角,选择个人资料照片,然后单击 你的组织”。
  2. 在组织旁边,单击“设置”。
  3. 在边栏的“安全性”部分中,单击“ 代码安全性和分析”。

Note

如果你的组织已注册参加 security configurations 和 global settings 公共 beta 版本,则会看到“代码安全”下拉菜单,而不是“代码安全和分析”下拉菜单。 选择 代码安全,然后单击“配置”。有关使用 security configurations 在自托管运行器和其他安全功能上大规模启用 Dependabot 的后续步骤,请参阅“在组织中应用 GitHub 建议的安全配置”。

  1. 在“代码安全性”下,选择“全局设置”。
  2. 在“Dependabot”下,选中“自托管运行器上的 Dependabot”以启用该功能,或取消选中该按钮以将其禁用。 此操作会为组织中的所有新存储库启用或禁用此功能。