跳至主要内容

Dependabot 支持的生态系统和仓库

Dependabot 支持多种生态系统和仓库

本文提供有关 Dependabot 支持的包生态系统和仓库类型的参考信息。

Dependabot 是一款 GitHub 工具,可帮助保持你的依赖安全且保持最新。它会自动检测仓库中存在的漏洞或过时的依赖,并创建拉取请求进行更新,从而简化软件供应链安全的维护。了解更多信息,请参阅 Dependabot 快速入门指南

GitHub 维护的受支持生态系统

你可以为包含受支持包管理器的依赖清单或锁定文件的仓库配置更新。对于某些包管理器,还可以为依赖配置 vendoring。更多信息,请参阅 vendor。Dependabot 还支持私有注册表中的依赖。了解更多,请参阅 为 Dependabot 配置对私有注册表的访问

注意

  • 在运行安全或版本更新时,某些生态系统必须能够从其源解析所有依赖,以验证更新是否成功。如果你的清单或锁定文件包含任何私有依赖,Dependabot 必须能够访问这些依赖所在的位置。组织所有者可以授予 Dependabot 访问同一组织内项目私有仓库中依赖的权限。了解更多,请参阅 管理组织的安全和分析设置。你可以在仓库的 dependabot.yml 配置文件中配置对私有注册表的访问。了解更多,请参阅 为 Dependabot 配置对私有注册表的访问
  • Dependabot 并未对所有包管理器支持私有 GitHub 依赖。详情请见下表。

如果你的仓库已经使用了其他依赖管理集成,则需要在启用 Dependabot 之前将其停用。了解更多,请参阅 关于 GitHub 集成

包管理器YAML 值支持的版本版本更新安全更新私有仓库私有注册表供应(Vendoring)
Bazelbazelv7, v8, v9
Bunbun>=v1.1.39
Bundlerbundlerv2
Cargocargov1
Composercomposerv2
Condaconda不适用
开发容器devcontainers不适用
Dockerdockerv1不适用
Docker Composedocker-composev2, v3不适用
.NET SDKdotnet-sdk>=.NET Core 3.1不适用不适用不适用
Helm Chartshelmv3不适用
Hexmixv1
Juliajulia>=v1.10
elm-packageelmv0.19
git 子模块gitsubmodule不适用不适用
GitHub Actionsgithub-actions不适用不适用
Go 模块gomodv1
Gradlegradle不适用
Mavenmaven不适用
Nixnix不适用不适用不适用
npmnpmv7, v8, v9, v10, v11
NuGetnuget<=6.12.0
OpenTofuopentofu不适用不适用
pippipv21.1.2
pipenvpip<= 2021-05-29
pip-compilepip6.1.0
pnpmnpmv7, v8, v9, v10
poetrypipv1
pre-commitpre-commit不适用
pubpubv2
Rust 工具链rust-toolchain不适用不适用不适用
Swiftswiftv5(仅 git)
Terraformterraform>= 0.13, <= 1.13.x不适用
uvuvv0不适用
vcpkgvcpkg不适用不适用
yarnnpmv1, v2, v3, v4

提示

对于诸如 pipenvpoetry 等包管理器,需要使用 pip 的 YAML 值。例如,如果你使用 poetry 管理 Python 依赖,并希望 Dependabot 监视你的依赖清单文件以获取新版本,请在 dependabot.yml 文件中使用 package-ecosystem: "pip"

有关 Dependabot 安全更新对生态系统支持的更多信息,请参阅 依赖图支持的包生态系统

Bun

Dependabot 支持当前默认的基于文本的 bun.lock 文件,但不支持旧的二进制 bun.lockb 文件。bun.lock 文件在 1.1.39 及以上版本受支持。更多信息请参阅 Bun 文档中的 Lockfile

Cargo

私有注册表支持包括 cargo 注册表,因此你可以使用 Dependabot 保持 Rust 依赖的最新。更多信息请参阅 Dependabot 私有注册表配置指南(Cargo)

Conda

Dependabot 对 Conda 的支持 **不包括私有注册表、vendoring 或锁文件更新**。

Dev containers

你可以在 dependabot.yml 文件中使用 devcontainers 作为 package-ecosystem,以更新 devcontainer.json 配置文件中的 Features。有关此支持的详细信息以及配置文件示例,请参阅开发容器文档中的 Dependabot 集成的一般可用性

Dev containers 被多种工具和服务使用,包括 Codespaces。有关 Features 以及受支持服务的更多信息,请分别在开发容器文档中查看 Features支持的工具和服务

此更新程序会确保在相关的 devcontainer.json 文件中将 Features 锁定到最新的 major 版本。如果 dev container 包含锁文件,该文件也会被更新。有关锁文件规范的更多信息,请参阅 Lockfiles(位于 devcontainers/spec 仓库)。

位于任何有效 dev container 位置的 Features 将在单个拉取请求中统一更新。有关 dev container 规范的更多信息,请参阅开发容器文档中的 Specification

Docker

Dependabot 可以在版本更新的拉取请求中添加来自 Docker 镜像的元数据,包括发行说明、变更日志和提交历史。仓库管理员可利用这些元数据快速评估依赖更新的稳定性风险。

为了让 Dependabot 获取 Docker 元数据,Docker 镜像的维护者必须在 Dockerfile 中添加 org.opencontainers.image.source 标签,并填写源仓库的 URL。此外,维护者还需使用与已发布 Docker 镜像相同的标签为仓库打标。示例请参阅 dependabot-fixtures/docker-with-source 仓库。有关 Docker 标签的更多信息,请参阅 Docker 文档中的 Extension image labelsBUILDX_GIT_LABELS

Dependabot 可以在 Kubernetes 清单中更新 Docker 镜像标签。请在 dependabot.yml 中的 Docker package-ecosystem 元素中为每个包含引用 Docker 镜像标签的 Kubernetes 清单的目录添加相应条目。Kubernetes 清单可以是 Deployment YAML 文件或 Helm Chart。有关为 docker 配置 dependabot.yml 的详细信息,请参阅 Dependabot 选项参考中的 “package-ecosystem” 部分 Dependabot options reference

Dependabot 同时支持公共和私有 Docker 注册表。受支持的注册表列表请参阅 Dependabot 选项参考中的 “docker-registry” 部分 为 Dependabot 配置对私有注册表的访问

Dependabot 会解析符合语义化版本(SemVer)的 Docker 镜像标签。如果检测到带有 pre‑release 的标签,Dependabot 只会建议更新到具有相同 pre‑release 标记的最新版本,而不会建议使用不同 pre‑release 标签的更新。更多信息,请参阅 dependabot-docker 仓库中的 README.md(位于 dependabot/dependabot-core)。

Docker Compose

Dependabot 对 Docker Compose 的支持方式类似于对 Docker 的支持。更多信息请参阅 Docker

GitHub Actions

Dependabot 支持对 GitHub Actions 进行版本更新,但有以下注意事项。

  • Dependabot 只支持使用 GitHub 仓库语法的 Actions 更新,例如 actions/checkout@v5actions/checkout@<commit>。对本地引用的 actions 或可复用工作流(例如 ./.github/actions/foo.yml)将被忽略。
  • 当注释与版本位于同一行时,例如 actions/checkout@<commit> #<tag or link>actions/checkout@<tag> #<tag or link>,Dependabot 会更新 GitHub Actions 的版本文档。
  • 如果你使用的提交未关联任何标签,Dependabot 将把 GitHub Actions 更新到最新的提交(这可能与最新发行版不同)。
  • 目前不支持 Docker Hub 和 GitHub Packages 容器注册表的 URL。例如,使用 docker:// 语法引用的 Docker 容器 Actions 不受支持。
  • Dependabot 同时支持公共和私有仓库的 GitHub Actions。有关私有注册表的配置选项,请参阅 Dependabot 选项参考中的 “git” 部分 Dependabot options reference

有关在 GitHub Actions 中使用 Dependabot 进行版本更新的更多信息,请参阅 安全使用参考

Gradle

Dependabot 支持在不运行 Gradle 的情况下更新以下文件

  • build.gradle, build.gradle.kts(适用于 Kotlin 项目)
  • gradle/libs.versions.toml(适用于使用标准 Gradle 版本目录的项目)
  • gradle.lockfile(适用于使用 Gradle 依赖锁定的项目)
  • 通过 apply 声明包含 dependencies 的文件名进行的包含。请注意,apply 不支持 apply to、递归或高级语法(例如 Kotlin 的 applymapOf、属性定义的文件名)。

要更新 Gradle Wrapper,Dependabot 会运行 Gradle 并更新以下文件

  • gradle/wrapper/gradle-wrapper.properties
  • gradlew
  • gradlew.bat
  • gradle/wrapper/gradle-wrapper.jar

Dependabot 使用依赖的 pom.xml 中的信息在更新拉取请求中添加指向发行信息的链接。如果 pom.xml 中缺少这些信息,则无法在 Dependabot 拉取请求中显示,详情请参阅 Java 包元数据用于 Dependabot 更新

对于 Dependabot 的安全更新,Gradle 的支持仅限于通过依赖提交 API 手动上传依赖图数据。有关依赖提交 API 的详细信息,请参阅 使用依赖提交 API

注意

  • 当你使用依赖提交 API 将 Gradle 依赖上传到依赖图时,所有项目依赖(包括未在任何依赖文件中显式声明的传递依赖)都会被上传。如果在传递依赖中检测到警报,Dependabot 将无法在仓库中找到该易受攻击的依赖,从而不会为该警报创建安全更新。
  • 不过,Dependabot 的版本更新会在项目清单文件中显式声明的直接依赖作为父依赖时创建拉取请求。

Helm Charts

Dependabot 支持为注册表使用用户名和密码进行身份验证。更多信息请参阅 为 Dependabot 配置对私有注册表的访问(Helm)

helm-registry 类型仅支持 HTTP 基本认证,不支持 OCI 兼容的注册表。如果需要访问 OCI 兼容的 Helm Chart 注册表,请改为配置 docker-registry。更多信息请参阅 为 Dependabot 配置对私有注册表的访问

在为 Helm Chart 配置 Dependabot 时,它还会自动更新这些 Chart 中引用的 Docker 镜像,确保 Chart 版本和其中包含的镜像均保持最新。

Maven

Dependabot 并未运行 Maven,但支持对 pom.xml 文件的更新。

Dependabot 使用依赖的 pom.xml 中的信息在更新拉取请求中添加指向发行信息的链接。如果 pom.xml 中缺少这些信息,则无法在 Dependabot 拉取请求中显示,详情请参阅 Java 包元数据用于 Dependabot 更新

Nix

Dependabot 会监视你的 flake.lock 文件,当上游的 flake 输入有更新的提交时会打开拉取请求。支持 GitHub、GitLab、SourceHut 以及普通 Git 输入。对 flake.nix 本身内部的固定引用(例如将 github:cachix/devenv/v0.5 更改为更高标签)不提供支持。

Dependabot 目前不支持 nix 生态系统的私有仓库。

NuGet CLI

Dependabot 不会运行 NuGet CLI,但支持截至 6.8.0 版本的大多数功能。

pip and pip-compile

Dependabot 支持对任何 .txt 文件进行更新。

此外,若 pyproject.toml 符合 PEP 621 标准,Dependabot 也支持对其进行更新。

poetry

PEP 621 中的 project 部分当前不受 poetry 支持。

pre-commit

Dependabot 可以更新 .pre-commit-config.yaml 文件中 hook 的修订版本。当 hook 锁定了特定的提交 SHA 时,Dependabot 会解析最新匹配的标签并相应地更新 rev 值。

你可以在 rev 值后使用 # frozen: 注释,将 hook 固定到特定版本或版本前缀。Dependabot 会依据该注释判断是否需要更新以及应解析哪个标签。

情形行为
rev: <sha> # frozen: 7.3.0 且 7.3.0 为最新版本无需更新。依赖已是最新。
rev: <sha> # frozen: 7.3.0 且已发布 8.0.0已更新至 8.0.0 标签对应的 SHA,并将注释更新为 # frozen: 8.0.0
rev: <sha> # frozen: v1v1.43.5 为最新的 v1.x 发行版已更新至 v1.43.5 标签对应的 SHA,并将注释更新为 # frozen: v1.43.5
rev: <sha> 且没有 # frozen: 注释已更新至默认分支的 HEAD SHA。

除了更新 hook 修订版外,Dependabot 还能为使用以下语言的 hook 更新 additional_dependencies:Python、Node、Go、Rust、Ruby 和 Dart。

私有注册表支持使用 Git 注册表。你可以在 dependabot.yml 中指定 Git 注册表,以配置对私有 Git 仓库的访问。更多信息请参阅 为 Dependabot 配置对私有注册表的访问

注意

私有注册表不支持 additional_dependencies

Rust 工具链

Dependabot 支持自动更新 rust-toolchain.tomlrust-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 Registry 或可公开访问的 Git 仓库中的模块。
  • Terraform 提供商。
  • 私有 Terraform Registry。你可以通过在 dependabot.yml 中指定 Git 注册表来配置对私有 Git 仓库的访问。更多信息请参阅 git

vcpkg

vcpkg 支持更新 vcpkg.json 清单文件中 builtin-baseline 的提交 SHA,该 SHA 来自 vcpkg ports 仓库。更多信息请访问 GitHub 上的 microsoft/vcpkg 仓库,并查阅 Microsoft 文档中的 什么是清单模式?

yarn

Dependabot 从 v2 起支持 vendored 依赖。

受社区维护的生态系统

以下生态系统由上游社区维护者维护。GitHub 将 Dependabot 与这些生态系统集成,但不直接维护它们。

  • Julia - 由 Julia 社区维护
  • OpenTofu - 由 OpenTofu 社区维护
  • Pub - 由 Dart 社区维护

Julia

Dependabot 支持包含 Project.toml/Manifest.toml 文件的 Julia 项目。Dependabot 使用 Julia 的包管理器解析并更新依赖。

OpenTofu

Dependabot 支持在 .tf.tofu 配置文件(包括 terragrunt.hcl 文件)中更新 OpenTofu 模块和提供商。如果存在用于提供商校验和的 .terraform.lock.hcl 锁文件,Dependabot 也会对其进行更新。

Pub

当要更新到的版本被忽略时,Dependabot 不会对 pub 进行更新,即使有更早的可用版本。

如果你使用私有托管的 pub 仓库,可以使用 Dependabot 保持 Dart 依赖的最新。有关允许 Dependabot 访问私有 GitHub 依赖的说明,请参阅 允许 Dependabot 访问私有依赖

© . This site is unofficial and not affiliated with GitHub, Inc.