本文提供了有关 Dependabot 支持的包生态系统和存储库类型的参考信息。
Dependabot 是 GitHub 工具,有助于保持依赖项安全且最新。 它会自动检测存储库中易受攻击或过时的依赖项,并创建拉取请求来更新它们,从而更轻松地维护软件供应链安全性。 有关详细信息,请参阅“Dependabot 快速入门指南”。
由 GitHub 维护的受支持的生态系统
你可以为包含受支持包管理器的依赖项清单或锁定文件的存储库配置更新。 对于某些软件包管理器,你也可以配置依赖项的供应。 有关详细信息,请参阅 vendor。
Dependabot 还支持专用注册表中的依赖项。 有关详细信息,请参阅“为 Dependabot 配置对专用注册表的访问权限”。
注意
要确保 GitHub Enterprise Server 支持针对最新受支持生态系统版本的 Dependabot updates,企业所有者必须下载 Dependabot 操作的最新版本。 有关操作的详细信息,以及如何下载最新版本的说明,请参阅 使用官方捆绑操作的最新版本。
注意
- 在运行安全性或版本更新时,有些生态系统必须能够解决来自其来源的所有依赖项,以验证版本更新是否成功。 如果清单或锁定文件包含任何私有依赖项,Dependabot 必须能够访问这些依赖项所在的位置。 组织所有者可以授予 Dependabot 访问包含同一个组织内项目依赖项的私有仓库. 有关详细信息,请参阅“管理组织的安全和分析设置”。 你可以在存储库的
dependabot.yml配置文件中配置对专用注册表的访问。 有关详细信息,请参阅“为 Dependabot 配置对专用注册表的访问权限”。 - Dependabot 不支持所有包管理器的专用 GitHub 依赖项。 详见下表。
如果你的仓库已使用集成进行依赖项管理,则在启用 Dependabot 前需要禁用此集成。
| 程序包管理器 | YAML 值 | 支持的版本 | 版本更新 | 安全更新 | 专用存储库 | 专用注册表 | 供应 |
|---|---|---|---|---|---|---|---|
| 巴泽尔 | bazel | v7、v8、v9 |
Bun | bun | >=v1.1.39 | | | | | |
| |
Bundler | bundler | v2 | | | | | |
货物 | cargo | v1 | | | | | |
Composer | composer | v2 | | | | | |
| |
Conda | conda | 不适用 | | | | | |
| |
开发容器 | devcontainers | 不适用 | | | | | |
Docker | docker | v1 | | | | | 不适用 |
| |
Docker Compose | docker-compose | V2 和 V3 | | | | | 不适用 |
| |
.NET SDK | dotnet-sdk | >=.NET Core 3.1 | | | 不适用 | 不适用 | 不适用 |
Helm 图表 | helm |
v3 | | | | | 不适用 |
Hex | mix | v1 | | | | | |
| |
朱莉娅 | julia | >=v1.10 | | | | | |
| |
elm-package | elm | v0.19 | | | | | |
git 子模块 | gitsubmodule | 不适用 | | | | | 不适用 |
GitHub Actions | github-actions | 不适用 | | | | | 不适用 |
Go 模块 | gomod | v1 | | | | | |
Gradle | gradle | 不适用 | | | | | |
Maven | maven | 不适用 | | | | | |
| |
npm | npm | v7、v8、v9、v10、v11 | | | | | |
NuGet | nuget | <=6.12.0 | | | | | |
| |
OpenTofu | opentofu | 不适用 | | | | | 不适用 |
| |
pip | pip | 24.2 | | | | | |
pipenv | pip | 2024.4.1 | | | | | |
pip-compile | pip | 7.5.3 | | | | | |
| pnpm | npm | v7、v8、v9、v10 | | | | | |
诗歌 | pip | v2 | | | | | |
| |
公网 | pub | v2 | | | | | |
| |
Rust 工具链 | rust-toolchain | 不适用 | | | | 不适用 | 不适用 |
| |
Swift | swift | v5 | | | |
(仅限 git) | |
Terraform | terraform | >= 0.13,<= 1.13.x | | | | | 不适用 |
| |
uv | uv | v0 | | | | | 不适用 |
| |
| |
vcpkg | vcpkg | 不适用 | | | | | 不适用 |
| |
yarn | npm | v1、v2、v3、v4 | | | | | |
提示
对于包管理器(如 pipenv 和 poetry),需要使用 pip YAML 值。 例如,如果使用 poetry 管理Python依赖项,并且希望 Dependabot 监视新版本的依赖项清单文件,请在 package-ecosystem: "pip" 文件中使用 dependabot.yml。
有关生态系统支持 Dependabot security updates的详细信息,另请参阅 依赖项关系图支持的包生态系统。
Bun
Dependabot 支持当前默认基于 bun.lock 文本的文件,但不支持旧二进制 bun.lockb 文件。 1.1.39 及以上版本支持 bun.lock 文件。 有关详细信息,请参阅 Bun 文档中的 Lockfile。
Cargo
专用注册表支持包括 Cargo 注册表,因此你可以使用 Dependabot 将 Rust 依赖项保持最新。 有关详细信息,请参阅“针对 Dependabot 的专用注册表配置指南”。
Conda
Dependabot 对 Conda 的支持 不包括专用注册表、供应商或锁定文件更新。
开发容器
可以在 devcontainers 文件中将 package-ecosystem 用作 dependabot.yml,以更新 devcontainer.json 配置文件中的功能。 有关此支持的详细信息以及配置文件示例,请参阅开发容器文档中的 Dependabot 集成正式发布。
开发容器用于多个工具和服务,包括 Codespaces。 有关功能和支持的服务的详细信息,请分别参阅开发容器文档中的功能和支持工具和服务。
此更新程序可确保功能固定到关联 major 文件中的最新 devcontainer.json 版本。 如果开发容器具有锁定文件,则该文件也会被更新。 有关锁定文件规范的详细信息,请参阅 存储库中的devcontainers/spec。
任何有效开发容器位置中的功能都将在单个拉取请求中更新。 有关开发容器规范的详细信息,请参阅开发容器文档中的规范。
Docker
Dependabot 可以将 Docker 映像的元数据添加到更新版本请求中。 元数据包括发行说明、更改日志和提交历史记录。 存储库管理员可以使用元数据快速评估依赖项更新的稳定性风险。
为了让 Dependabot 提取 Docker 元数据,Docker 映像的维护者必须在其 Dockerfile 中添加 org.opencontainers.image.source 标签,并包括源存储库的 URL。 此外,维护员必须使用与已发布的 Docker 映像相同的标记来标记存储库。 有关示例,请参阅 dependabot-fixtures/docker-with-source 存储库。 有关 Docker 标签的详细信息,请参阅 Docker 文档中的扩展映像标签和 BUILDX_GIT_LABELS。
Dependabot 可以在 Kubernetes 清单中更新 Docker 映像标记。 对于包含引用 Docker 映像标记的 Kubernetes 清单的每个目录,请向 package-ecosystem 文件的 Docker dependabot.yml 元素添加一个条目。 Kubernetes 清单可以是 Kubernetes 部署 YAML 文件或 Helm 图表。 有关为 dependabot.yml 配置 docker 文件的信息,请参阅“package-ecosystem”中的“”。
Dependabot 支持公共和专用 Docker 注册表。 有关支持的注册表的列表,请参阅 docker-registry 中的“”。
Dependabot 分析语义版本控制(SemVer)的 Docker 映像标记。 如果 Dependabot 检测到具有预发行的标记,则只会建议使用匹配的预发行版本更新最新版本,并且不会建议使用其他预发行标签的较新版本。 有关详细信息,请参阅 dependabot-docker 存储库中的 dependabot/dependabot-core 文件。
Docker Compose
Dependabot 支持 Docker Compose 的方式与 Docker 类似。 有关详细信息,请参阅 Docker。
GitHub Actions
Dependabot 支持 GitHub Actions 的版本更新,但有以下注意事项。
- Dependabot 仅支持通过使用 GitHub Actions 的存储库语法(如
GitHub或actions/checkout@<commit>)来更新 actions/checkout@v6 。 Dependabot 将忽略本地引用的操作或可重用工作流(例如,./.github/actions/foo.yml)。 - Dependabot 在注释与同一行的
actions/checkout@<commit> #<tag or link>或actions/checkout@<tag> #<tag or link>相同时,更新 GitHub Actions 的版本文档。 - 如果你使用的提交未与任何标签相关联,Dependabot 会将 GitHub Actions 更新至最新的提交(这可能与最新的发布版本不同)。
- 目前不支持 Docker Hub 和 GitHub Packages Container registry URL。 例如,不支持使用
docker://语法引用 Docker 容器操作。 - Dependabot 支持 GitHub Actions 的公共存储库和专用存储库。 有关专用注册表配置选项,请参阅“
git”中的“”。
有关使用Dependabot version updatesGitHub Actions的详细信息,请参阅 安全使用指南。
Gradle
Dependabot 支持更新以下文件,而无需运行 Gradle:
build.gradle、build.gradle.kts(适用于 Kotlin 项目)gradle/libs.versions.toml(适用于使用标准 Gradle 版本目录的项目)gradle.lockfile(对于使用 Gradle 依赖项锁定的项目)- 通过
apply声明包含的文件,文件名中包含dependencies。 请注意,apply不支持apply to、递归或高级语法(例如,Kotlin 的apply和mapOf,由属性定义的文件名)。
要更新 Gradle 包装器,Dependabot 运行 Gradle 并更新:
gradle/wrapper/gradle-wrapper.propertiesgradlewgradlew.batgradle/wrapper/gradle-wrapper.jar
Dependabot 使用来自依赖项文件 pom.xml 的信息,在更新拉取请求中添加指向发布信息的链接。 如果从 pom.xml 文件中省略信息,则拉取请求中 Dependabot 不能包含该信息,请参阅 用于 Dependabot 更新的 Java 软件包元数据。
对于 Dependabot security updates,Gradle 支持仅限于使用 依赖项提交 API 手动上传依赖关系图数据。 有关 依赖项提交 API 的详细信息,请参阅 使用依赖项提交 API。
注意
- 使用 依赖项提交 API 将 Gradle 依赖项上传到依赖项关系图时,将上传所有项目依赖项,即使是任何依赖项文件中未显式提及的可传递依赖项。 在可传递依赖项中检测到警报时, Dependabot 无法在存储库中找到易受攻击的依赖项,因此不会为该警报创建安全更新。
-
但是,当父依赖关系在项目的清单文件中明确声明为直接依赖关系时,Dependabot version updates 将创建拉取请求。
Helm 图表
Dependabot 支持对注册表使用用户名和密码。 有关详细信息,请参阅“为 Dependabot 配置对专用注册表的访问权限”。
该 helm-registry 类型仅支持 HTTP 基本身份验证,不支持符合 OCI 的注册表。 如果需要访问符合 OCI 的 Helm 图表注册表,请配置 docker-registry 以代替它。 有关详细信息,请参阅“为 Dependabot 配置对专用注册表的访问权限”。
在配置Dependabot用于 Helm 图表时,系统还会自动更新这些图表中引用的 Docker 镜像,以确保图表版本及其包含的镜像保持最新。
Maven
Dependabot 不运行 Maven,但支持对 pom.xml 文件的更新。
Dependabot 使用来自依赖项文件 pom.xml 的信息,在更新拉取请求中添加指向发布信息的链接。 如果从 pom.xml 文件中省略信息,则拉取请求中 Dependabot 不能包含该信息,请参阅 用于 Dependabot 更新的 Java 软件包元数据。
NuGet 命令行接口 (CLI)
Dependabot 不会运行 NuGet CLI,但在版本 6.8.0 之前支持大多数功能。
pip 和 pip-compile
Dependabot 支持对任何 .txt 文件的更新。
此外,如果文件遵循 PEP 621 标准, Dependabot 则支持更新 pyproject.toml 文件。
poetry
Dependabot 支持诗歌 v2。 PEP 621 project 部分目前不支持 poetry。
Rust 工具链
Dependabot 支持自动更新在 rust-toolchain.toml 和 rust-toolchain 文件中定义的 Rust 工具链版本。
支持的更新模式 Dependabot 可以更新:
- 受版本控制的工具链,如
channel = "1.xx.yy"和channel = "1.xx"。 - 过时的工具链,例如
channel = "nightly-YYYY-MM-DD"和channel = "beta-YYYY-MM-DD"。
Swift
专用注册表支持仅适用于 git 注册表。 不支持 Swift 注册表。 不支持非声明性清单。 有关非声明性清单的详细信息,请参阅 Swift Evolution 文档中的编辑非声明性清单。
Terraform
Terraform 支持包括:
- Terraform 注册表或可公开访问的 Git 存储库上托管的模块。
- Terraform 提供程序。
- 专用 Terraform 注册表。 可以在
dependabot.yml文件中指定一个 git 注册表,以配置对专用 git 存储库的访问权限。 有关详细信息,请参阅git。
vcpkg
vcpkg 支持包括从 builtin-baseline 清单文件中的“vcpkg 端口”存储库更新 vcpkg.json 提交 SHA。 有关详细信息,请访问 microsoft/vcpkg 上的 ,并在 Microsoft 文档中查看GitHub.com。
yarn
Dependabot 支持 v2 及更高版本的 vendored 依赖项。
由社区维护的支持生态系统
以下生态系统由其上游社区维护者维护。 GitHub 集成了 Dependabot 及这些生态系统,但不负责直接维护这些生态系统。
- Julia - 由 Julia 社区维护
- OpenTofu - 由 OpenTofu 社区维护
- 酒吧 - 由达特社区维护
朱莉娅
Dependabot支持包含 Project.toml/Manifest.toml 文件的 Julia 项目。
Dependabot 使用 Julia 的包管理器来解析和更新依赖项。
OpenTofu
Dependabot 支持在 .tf 和 .tofu 配置文件(包括 terragrunt.hcl 文件)中更新 OpenTofu 模块和提供程序。 如果存在提供程序校验和的 .terraform.lock.hcl lockfile, Dependabot 则还会更新它。
Pub
当尝试更新的版本被忽略时,即使有早期版本可用,Dependabot 也不会对 pub 执行更新。
如果使用私人托管的 pub 仓库,则可以使用 Dependabot 来保持 Dart 依赖项的最新。 有关允许 Dependabot 访问专用 GitHub 依赖项的信息,请参阅 “允许 Dependabot 访问专用依赖项”。