跳至主要内容

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

您可以如何配置 Dependabot 以仅访问私有注册表(通过移除对公共注册表的调用)的示例。

谁可以使用此功能?

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

关于配置 Dependabot 以仅访问私有注册表

Dependabot 默认可以访问公共注册表,您可以配置 Dependabot 也访问私有注册表。有关私有注册表支持和配置的更多信息,请参阅“为 Dependabot 配置对私有注册表的访问”。有关可用选项的深入信息,以及配置私有注册表时的建议和提示,请参阅“Dependabot 私有注册表配置指南”。

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

您可以通过移除对公共注册表的调用来配置 Dependabot 以仅访问私有注册表。这只能为本文列出的生态系统进行配置。

Bundler

要将 Bundler 生态系统配置为仅访问私有注册表,您可以在 dependabot.yml 文件中将 replaces-base 设置为 true。有关更多信息,请参阅“dependabot.yml 文件的配置选项”。

Bundler 生态系统还需要将包含私有注册表 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>

Node

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 <私有注册表 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 <私有注册表 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 生态系统还需要将包含<packageSources>部分中的< clear />标签或nuget.config文件disabledPackageSources部分中值为 true 的密钥nuget.orgnuget.config文件检入存储库。

这是一个在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.org设置为 true 的nuget.config文件disabledPackageSources部分的示例。

<?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

要将 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