跳至主要内容

配置对 Dependabot 的私有注册表访问

您可以配置 Dependabot 以访问存储在私有注册表中的依赖项。您可以将身份验证信息(如密码和访问令牌)存储为加密的密钥,然后在 Dependabot 配置文件中引用这些密钥。如果您在私有网络上拥有注册表,则在自托管运行器上运行 Dependabot 时,也可以配置 Dependabot 访问权限。

谁可以使用此功能?

具有**写入**访问权限的用户

关于私有注册表

Dependabot 版本更新可使您的依赖项保持最新。Dependabot 可以访问公共注册表。此外,您可以授予 Dependabot 版本更新对私有软件包注册表和私有 GitHub 存储库的访问权限,以便您可以像保持公共依赖项最新一样保持私有和内部源依赖项最新。

在大多数生态系统中,私有依赖项通常发布到私有软件包注册表。这些私有注册表与其公共等效项类似,但需要身份验证。

对于特定生态系统,您可以通过删除对公共注册表的调用来配置 Dependabot 以仅访问私有注册表。有关更多信息,请参阅“删除 Dependabot 对公共注册表的访问权限”。

要允许 Dependabot 访问私下托管或仅限于内部网络的注册表,请配置 Dependabot 以在 GitHub Actions 自托管运行器上运行。有关更多信息,请参阅“在自托管运行器上管理 Dependabot”。

配置私有注册表

您可以在dependabot.yml文件中配置 Dependabot 对私有注册表的访问。顶级registries键是可选的,用于指定身份验证详细信息。

dependabot.yml文件中,您可以使用registries键的两个位置

  • 在顶级,如果需要,您可以在其中定义注册表及其访问信息。
  • updates块内,您可以使用registries: "*"告诉 Dependabot 使用您在顶级定义的任何或所有注册表。
# registries: gradle-artifactory - provides access details for the gradle-artifactory registry
# registries: "*" - allows Dependabot to use all the defined registries specified at the top level

version: 2
registries:
  gradle-artifactory:
    type: maven-repository
    url: https://acme.jfrog.io/artifactory/my-gradle-registry
    username: octocat
    password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
updates:
  - package-ecosystem: "gradle"
    directory: "/"
    registries: "*"
    schedule:
      interval: "monthly"

您可以使用以下选项来指定访问设置。注册表设置必须包含typeurl,通常还包含usernamepassword组合或token

选项                描述
type标识注册表的类型。有关可用注册表类型的更多信息,请参阅“registries”。有关私有注册表配置的更多详细信息,请参阅“私有注册表的配置选项”。
url用于访问此注册表中依赖项的 URL。协议是可选的。如果未指定,则假定为https://。Dependabot 会根据需要添加或忽略尾部斜杠。
usernameDependabot 用于访问注册表的用户名。
username是帐户的用户名或电子邮件地址。
password指向包含指定用户密码的 Dependabot 密钥的引用。有关更多信息,请参阅“配置对 Dependabot 的私有注册表访问”。
password是用户名指定的帐户的密码。如果帐户是 GitHub 帐户,则可以使用 GitHub 个人访问令牌代替密码。
key指向包含此注册表访问密钥的 Dependabot 密钥的引用。有关更多信息,请参阅“配置对 Dependabot 的私有注册表访问”。
token指向包含此注册表访问令牌的 Dependabot 密钥的引用。有关更多信息,请参阅“配置对 Dependabot 的私有注册表访问”。
token用于提供外部系统的访问令牌,不应用于提供 GitHub 个人访问令牌。如果要使用 GitHub 个人访问令牌,应将其作为密码提供。
replaces-base对于注册表,如果布尔值为true,Dependabot 将使用指定的 URL 来解析依赖项,而不是该特定生态系统的基本 URL。例如,对于type: python-index的注册表,如果布尔值为true,pip 将使用指定的 URL 来解析依赖项,而不是 Python 包索引的基本 URL(默认为https://pypi.ac.cn/simple)。

有关可用配置选项、如何使用它们以及支持的类型的更多信息,请参阅“dependabot.yml 文件的配置选项”。

存储 Dependabot 可用的凭据

要使 Dependabot 能够访问 GitHub 支持的私有注册表,请将注册表的访问令牌或密钥存储在您的存储库或组织的密钥存储区中。

关于 Dependabot 的加密密钥

Dependabot 密钥是您在组织级别或存储库级别创建的加密凭据。当您在组织级别添加密钥时,您可以指定哪些存储库可以访问该密钥。您可以使用密钥来允许 Dependabot 更新位于私有软件包注册表中的依赖项。添加密钥后,它会在到达 GitHub 之前进行加密,并且在 Dependabot 用于访问私有软件包注册表之前,它将保持加密状态。

Dependabot 密钥还包括由 Dependabot 拉取请求触发的 GitHub Actions 工作流使用的密钥。Dependabot 本身可能不会使用这些密钥,但工作流需要它们。更多信息,请参阅“使用 GitHub Actions 自动化 Dependabot”。

添加 Dependabot 密钥后,您可以像这样在dependabot.yml配置文件中引用它:${{secrets.NAME}},其中“NAME”是您为密钥选择的名称。例如

password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}

更多信息,请参阅“dependabot.yml 文件的配置选项”。

密钥命名

Dependabot 密钥的名称

  • 只能包含字母数字字符 ([A-Z], [0-9]) 或下划线 (_)。不允许使用空格。如果您输入小写字母,它们将更改为大写。
  • 不能以GITHUB_前缀开头。
  • 不能以数字开头。

为 Dependabot 添加仓库密钥

要为个人帐户仓库创建密钥,您必须是仓库所有者。要为组织仓库创建密钥,您必须具有admin访问权限。

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

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

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

  3. 在侧边栏的“安全”部分,选择 密钥和变量,然后单击Dependabot

  4. 单击新建仓库密钥

  5. 名称输入框中键入密钥的名称。

  6. 输入密钥的值。

  7. 单击添加密钥

    密钥名称列在 Dependabot 密钥页面上。您可以单击更新以更改密钥值。您可以单击删除以删除密钥。

为 Dependabot 添加组织密钥

在组织中创建密钥时,您可以使用策略来限制哪些仓库可以访问该密钥。例如,您可以授予所有仓库访问权限,或者仅限于私有仓库或指定的仓库列表。

要在组织级别创建密钥,您必须具有admin访问权限。

  1. 在 GitHub 上,导航到组织的主页。

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

    Screenshot of the tabs in an organization's profile. The "Settings" tab is outlined in dark orange.

  3. 在侧边栏的“安全”部分,选择 密钥和变量,然后单击Dependabot

  4. 单击新建组织密钥

  5. 名称输入框中键入密钥的名称。

  6. 输入密钥的

  7. 仓库访问下拉列表中选择访问策略。

  8. 如果您选择了选定的仓库

    • 单击.
    • 在对话框中,选择可以访问此密钥的仓库。
    • 单击更新选择
  9. 单击添加密钥

    密钥名称列在 Dependabot 密钥页面上。您可以单击更新以更改密钥值或其访问策略。您可以单击删除以删除密钥。

配置防火墙 IP 规则

您可以将 Dependabot 相关的 IP 地址添加到您的注册表 IP 允许列表。

如果您的私有注册表配置了 IP 允许列表,您可以在元 API 端点下的dependabot密钥中找到 Dependabot 用于访问注册表的 IP 地址。如果您在 GitHub Actions 自托管运行器上运行 Dependabot,则应改为使用actions密钥下的 IP 地址。更多信息,请参阅“元数据的 REST API 端点”和“关于 GitHub Actions 运行器上的 Dependabot”。