Skip to main content

为 Dependabot 配置对专用注册表的访问权限

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

谁可以使用此功能?

具有写入访问权限的用户

关于专用注册表

Dependabot version updates 随时将依赖项更新为最新版本。 Dependabot 可以访问公共注册表。 此外,你可以授予 Dependabot version updates 对专用包注册表和专用 GitHub 存储库的访问权限,从而确保专用和内源依赖项与公共依赖项同时保持最新状态。

在大多数生态系统中,专用依赖项通常会发布到专用包注册表。 这些专用注册表与公共注册表类似,但需要身份验证。

对于特定的生态系统,可通过移除对公共注册表的调用,将 Dependabot 配置为_仅_访问专用注册表。 有关详细信息,请参阅“删除对公共注册表的 Dependabot 访问权限”。

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

配置专用注册表

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

dependabot.yml 文件中有 2 个位置可以使用 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 personal access token 代替密码。
key引用包含此注册表访问密钥的 Dependabot 机密。 有关详细信息,请参阅“为 Dependabot 配置对专用注册表的访问权限”。
token引用包含此注册表访问令牌的 Dependabot 机密。 有关详细信息,请参阅“为 Dependabot 配置对专用注册表的访问权限”。
token 用于为外部系统提供访问令牌,不应用于提供 GitHub personal access token。 要使用 GitHub personal access token,则应将其作为密码提供。
replaces-base对于注册表,如果布尔值为 true,Dependabot 会使用指定的 URL 而不是特定生态系统的基 URL 来解析依赖项。 例如,对于包含 type: python-index 的注册表,如果布尔值为 true,pip 会使用指定的 URL 而不是 Python 包索引的基 URL(默认为 https://pypi.org/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. 在存储库名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”。

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

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

  4. 单击“新建存储库机密”。

  5. 在“名称”输入框中键入机密名称。

  6. 输入密码的值。

  7. 单击“添加机密”。

    密码名称列在 Dependabot 密码页面上。 可单击“更新”来更改机密值。 可单击“删除”来删除机密。

将组织机密添加到 Dependabot

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

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

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

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

    组织配置文件中选项卡的屏幕截图。 “设置”选项卡以深橙色标出。

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

  4. 单击“新建组织机密”。

  5. 在“名称”输入框中键入机密名称。

  6. 输入“机密”的值。

  7. 从“存储库访问”下拉列表中,选择访问策略。

  8. 如果选择“选定的存储库”:

    • 单击“”。
    • 在对话框中,选择可以访问此机密的存储库。
    • 单击“更新选择”。
  9. 单击“添加机密”。

    机密的名称列在 Dependabot 机密页面中。 可单击“更新”以更改机密值或其访问策略。 可单击“删除”来删除机密。

配置防火墙 IP 规则

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

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