跳至主要内容

在自托管运行器上管理 Dependabot

您可以配置 Dependabot 用于访问您的私有注册表和内部网络资源的自托管运行器。

谁可以使用此功能?

组织所有者和仓库管理员

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

如果您在新的仓库中启用 Dependabot 并且启用了 GitHub Actions,则 Dependabot 默认将在 GitHub Actions 上运行。

如果您在新的仓库中启用 Dependabot 并且禁用了 GitHub Actions,则 Dependabot 将在 GitHub 中的旧版应用程序上运行以执行 Dependabot 更新。这不像 GitHub Actions 那样提供良好的性能、可见性和对 Dependabot 更新作业的控制。如果您想将 Dependabot 与 GitHub Actions 结合使用,则必须确保您的仓库启用了 GitHub Actions,然后从仓库的“代码安全和分析”设置页面启用“Actions 运行器上的 Dependabot”。有关更多信息,请参阅“关于 GitHub Actions 运行器上的 Dependabot”。

注意

GitHub 的未来版本将始终使用 GitHub Actions 运行 Dependabot,并且您将不再可以选择启用或禁用此设置。

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

注意

Dependabot 不支持将私有网络与 Azure 虚拟网络 (VNET) 或 Actions 运行器控制器 (ARC) 结合使用。

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

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

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

先决条件

您必须已安装并启用 Dependabot,以及启用并使用 GitHub Actions。您组织的“GitHub Actions 运行器上的 Dependabot”设置也应启用。有关更多信息,请参阅“关于 GitHub Actions 运行器上的 Dependabot”。

您的组织可能已配置了策略,以限制操作和自托管运行器在特定存储库中运行,这反过来将不允许 Dependabot 在 GitHub Actions 自托管运行器上运行。在这种情况下,在 Web UI 中将看不到启用“自托管运行器上的 Dependabot”的组织或存储库级别设置。有关更多信息,请参阅“禁用或限制组织的 GitHub Actions”。

为 Dependabot 更新配置自托管运行器

在您将组织或存储库配置为在 GitHub Actions 上运行 Dependabot 之后,以及在您启用自托管运行器上的 Dependabot 之前,您需要为 Dependabot 更新配置自托管运行器。

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 更新中将使用的任何内部注册表。为了最大程度地降低对内部网络的风险,您应限制虚拟机 (VM) 对内部网络的访问。这减少了如果运行器下载被劫持的依赖项则可能对内部系统造成的损害。

您还必须允许出站流量到 dependabot-actions.githubapp.com 以防止 Dependabot 安全更新的作业失败。有关更多信息,请参阅“关于自托管运行器”。

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 更新的自托管运行器

配置完用于 Dependabot 更新的自托管运行器后,您可以在组织或存储库级别启用或禁用自托管运行器上的 Dependabot 更新。

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

为您的存储库启用或禁用

您可以管理私有存储库中自托管运行器上的 Dependabot。

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

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

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

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

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

为您的组织启用或禁用

您可以为组织中的所有现有私有存储库启用自托管运行器上的 Dependabot。只有已配置为在 GitHub Actions 上运行 Dependabot 的存储库才会在下次触发 Dependabot 作业时更新为在自托管运行器上运行 Dependabot。

注意

如果您使用较大的运行器,则需要为您的组织启用自托管运行器。有关更多信息,请参阅“关于 GitHub Actions 运行器上的 Dependabot”。

  1. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.
  2. 在组织旁边,单击**设置**。
  3. 在侧边栏的“安全”部分,单击** 代码安全**,然后**全局设置**。
  4. 在“Dependabot”下,选择“自托管运行器上的 Dependabot”以启用该功能,或取消选择以禁用它。此操作将为组织中的所有新存储库启用或禁用该功能。

有关更多信息,请参阅“配置组织的全局安全设置”。