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 updates 的配置中移除对公共注册表的访问权限之前,请检查确保站点管理员已使用所需的专用注册表访问权限设置了 Dependabot 运行器。 有关详细信息,请参阅“配置 Dependabot,使其在 Internet 访问受限的情况下工作”。

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