Skip to main content

删除对公共注册表的 Dependabot 访问权限

举例说明如何通过删除对公共注册表的调用,将 Dependabot 配置为仅访问专用注册表。

谁可以使用此功能?

People with write permissions to a repository can configure Dependabot for the repository.

关于如何将 Dependabot 配置为仅访问专用注册表

默认情况下,Dependabot 可访问公共注册表,你可将 Dependabot 配置为还访问专用注册表。有关专用注册表支持和配置的详细信息,请参阅“为 Dependabot 配置对专用注册表的访问权限”。 有关可用选项的详细信息,以及配置专用注册表时的建议,请参阅“针对 Dependabot 的专用注册表配置指南”。

要更好地控制 Dependabot 对私人注册表和内部网络资源的访问,可将 Dependabot 配置为在 GitHub Actions 自托管运行器上运行。 有关详细信息,请参阅“关于 GitHub Actions 运行器上的 Dependabot”和“在自托管运行器上管理 Dependabot”。

可通过移除对公共注册表的调用,将 Dependabot 配置为仅访问专用注册表。 这只能为本文中列出的生态系统进行配置。

Bundler

若要将捆绑程序生态系统配置为仅访问专用注册表,可以在 dependabot.yml 文件中将 replaces-base 设置为 true。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。

捆绑程序生态系统还要求将具有专用注册表 URL 的 Gemfile 文件签入存储库。

# Example Gemfile

 source "https://private_registry_url"

Docker

若要将 Docker 生态系统配置为仅访问专用注册表,可以使用下面几种配置方法。

选项 1

在不使用 replaces-basedependabot.yml 文件中定义专用注册表配置。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。

注意****:从配置文件中移除 replaces-base: true

version: 2
registries:
  azuretestregistry: # Define access for a private registry
    type: docker-registry
    url: firewallregistrydep.azurecr.io
    username: firewallregistrydep
    password: ${{ secrets.AZUREHUB_PASSWORD }}

Dockerfile 文件中,以 IMAGE[:TAG] 格式添加映像名称,其中 IMAGE 由用户名和存储库名称组成。

 FROM firewallregistrydep.azurecr.io/myreg/ubuntu:22.04

方法 2

dependabot.yml 文件中将 replaces-base 设置为 true。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。 使用 replaces-base 配置的注册表可用作镜像或拉取缓存。 有关更多详细信息,请参阅 Docker 文档中的将注册表作为拉取缓存

Gradle

若要将 Gradle 生态系统配置为仅访问专用注册表,可以使用下面几种配置方法。

dependabot.yml 文件中定义专用注册表配置。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。

注意****:从配置文件中移除 replaces-base: true。

此外,还需要在 build.gradle 文件的 repositories 部分中指定专用注册表 URL。

# Example build.gradle file

repositories {
    maven {
        url "https://private_registry_url"
    }
}

Maven

若要将 Maven 生态系统配置为仅访问专用注册表,可以使用下面几种配置方法。

选项 1

dependabot.yml 文件中将 replaces-base 设置为 true。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。

方法 2

仅使用 pom.xml 文件中的专用注册表 URL。

<project>
...
 <repositories>
  <repository>
    <id>central</id>
    <name>your custom repo</name>
    <url>https://private_registry_url</url>
 </repository>
...
</project>

节点

npm

若要将 npm 生态系统配置为仅访问专用注册表,可以使用下面几种配置方法。

选项 1

dependabot.yml 文件中定义专用注册表配置。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。

注意****:从配置文件中移除 replaces-base: true

npm 生态系统还要求将具有专用注册表 URL 的 .npmrc 文件签入存储库。

 registry=https://private_registry_url

方法 2

如果 .npmrc 文件中未定义全局注册表,可以在 dependabot.yml 文件中将 replaces-base 设置为 true。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。

注意:对于已限定范围的依赖项 (@my-org/my-dep),Dependabot 要求在项目的 .npmrc 文件中定义专用注册表。 若要为个别范围定义专用注册表,请使用 @myscope:registry=https://private_registry_url

Yarn

Dependabot 同时支持 Yarn Classic 和 Yarn Berry 专用注册表,但 Dependabot 要求每个生态系统使用不同的配置才能仅访问专用注册表。

Yarn Classic

若要将 Yarn Classic 生态系统配置为仅访问专用注册表,可以使用下面几种配置方法。

选项 1

dependabot.yml 文件中定义专用注册表配置。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。

注意:从配置文件中删除 replaces-base: true

若要确保专用注册表作为项目的 yarn.lock 文件中的依赖项源列出,请在具有专用注册表访问权限的计算机上运行 yarn install。 Yarn 应更新 resolved 字段以包含专用注册表 URL。

encoding@^0.1.11:
  version "0.1.13"
  resolved "https://private_registry_url/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
  integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
  dependencies:
    iconv-lite "^0.6.2"

方法 2

如果 yarn.lock 文件没有将专用注册表列为依赖项源,则可以根据常规包管理器的说明来设置 Yarn Classic:

  1. dependabot.yml 文件中定义专用注册表配置

  2. 使用 registry 键将注册表添加到项目根目录中的 .yarnrc 文件中。 或者,运行 yarn config set registry <private registry URL>

    registry https://private_registry_url
    

选项 3

如果 .yarnrc 文件中未定义全局注册表,可以在 dependabot.yml 文件中将 replaces-base 设置为 true。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。

注意:对于已限定范围的依赖项 (@my-org/my-dep),Dependabot 要求在项目的 .npmrc 文件中定义专用注册表。 若要为个别范围定义专用注册表,请使用 @myscope:registry=https://private_registry_url

Yarn Berry

若要将 Yarn Berry 生态系统配置为仅访问专用注册表,可以使用下面几种配置方法。

选项 1

dependabot.yml 文件中定义专用注册表配置。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。

注意:从配置文件中删除 replaces-base: true

若要确保专用注册表作为项目的 yarn.lock 文件中的依赖项源列出,请在具有专用注册表访问权限的计算机上运行 yarn install。 Yarn 应更新 resolved 字段以包含专用注册表 URL。

encoding@^0.1.11:
  version "0.1.13"
  resolved "https://private_registry_url/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
  integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
  dependencies:
    iconv-lite "^0.6.2"

方法 2

如果 yarn.lock 文件没有将专用注册表列为依赖项源,则可以根据常规包管理器的说明来设置 Yarn Berry:

  1. dependabot.yml 文件中定义专用注册表配置
  2. 使用 npmRegistryServer 键将注册表添加到项目根目录中的 .yarnrc.yml 文件中。 或者,运行 yarn config set npmRegistryServer <private registry URL> npmRegistryServer: "https://private_registry_url"

注意:对于已限定范围的依赖项 (@my-org/my-dep),Dependabot 要求在项目的 .yarnrc 文件中定义专用注册表。 若要为个别范围定义专用注册表,请使用 "@myscope:registry" "https://private_registry_url"

Nuget

若要允许 Nuget 生态系统仅访问专用注册表,可以配置 dependabot.yml 文件。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。

此外,Nuget 生态系统还要求将 nuget.config 文件签入存储库,其中 <packageSources> 部分中包含 < clear /> 标记,或者在 nuget.config 文件的 disabledPackageSources 部分中将 nuget.org 键设置为 true。

下面的示例是 nuget.configpackageSources 部分中的 < clear /> 标记。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <packageSources>
   < clear />
   <add key="example-nuget" value="https://private_registry_url/nuget/example-nuget/index.json" />
 </packageSources>
</configuration>

下面的示例向 nuget.configdisabledPackageSources 部分添加设为“true”的 nuget.org

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="example-nuget" value="https://private_registry_url/nuget/example-nuget/index.json" />
  </packageSources>
  <disabledPackageSources>
    <add key="nuget.org" value="true" />
  </disabledPackageSources>
</configuration>

若要将 Dependabot 配置为专用源_和_公共源都访问,请查看以下 dependabot.yml 示例,其中 registries 下包括了配置的 public 源:

version: 2
registries:
  nuget-example:
    type: nuget-feed
    url: https://nuget.example.com/v3/index.json
    username: $
    password: $
  public:
    type: nuget-feed
    url: https://api.nuget.org/v3/index.json
updates:
  - package-ecosystem: nuget
    directory: "/"
    registries: "*"
    schedule:
      interval: daily

Python

Pip、Pip-compile、Pipenv 和 Poetry 是 Python 生态系统目前支持的四个包管理器。

Pip

若要将 Pip 生态系统配置为仅访问专用注册表,可以使用下面几种配置方法。

选项 1

dependabot.yml 文件中定义专用注册表配置。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。

注意:从配置文件中删除 replaces-base: true

将专用注册表 URL 添加到 pip.conf 文件的 [global] 部分,并将该文件签入存储库。

[global]
timeout = 60
index-url = https://private_registry_url

方法 2

dependabot.yml 文件中将 replaces-base 设置为 true。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。

Pip-compile

若要将 Pip-compile 生态系统配置为仅访问专用注册表,可以使用下面几种配置方法。

选项 1

dependabot.yml 文件中将 replaces-base 设置为 true。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。

方法 2

dependabot.yml 文件中定义专用注册表配置。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。

注意:从配置文件中删除 replaces-base: true

将专用注册表 URL 添加到 requirements.txt 文件,并将该文件签入存储库。

--index-url https://private_registry_url

Pipenv

若要将 Pipenv 配置为仅访问专用注册表,请从 dependabot.yml 文件中移除 replaces-base。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。

注意:从配置文件中删除 replaces-base: true

将专用注册表 URL 添加到 Pipfile 文件的 [[source]] 部分,并将该文件签入存储库。

[[source]]
url = "https://private_registry_url"
verify_ssl = true
name = "pypi"

诗歌

若要将 Poetry 配置为仅访问专用注册表,请在 dependabot.yml 文件中将 replaces-base 设置为 true。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。

将专用注册表 URL 添加到 pyproject.toml 文件的 [[tool.poetry.source]] 部分,并将该文件签入存储库。

[[tool.poetry.source]]
name = "private"
url = "https://private_registry_url"
default = true