关于如何将 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-base
的 dependabot.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:
-
在
dependabot.yml
文件中定义专用注册表配置 -
使用 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:
- 在
dependabot.yml
文件中定义专用注册表配置 - 使用
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.config
的 packageSources
部分中的 < 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.config
的 disabledPackageSources
部分添加设为“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