Skip to main content

Dependabot 支持的生态系统和存储库

Dependabot 支持多种生态系统和存储库

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

Dependabot 是 GitHub 工具,有助于保持依赖项安全且最新。 它会自动检测存储库中易受攻击或过时的依赖项,并创建拉取请求来更新它们,从而更轻松地维护软件供应链安全性。 有关详细信息,请参阅“Dependabot 快速入门指南”。

由 GitHub 维护的受支持的生态系统

你可以为包含受支持包管理器的依赖项清单或锁定文件的存储库配置更新。 对于某些软件包管理器,你也可以配置依赖项的供应。 有关详细信息,请参阅 vendor。 Dependabot 还支持专用注册表中的依赖项。 有关详细信息,请参阅“为 Dependabot 配置对专用注册表的访问权限”。

注意

要确保 GitHub Enterprise Server 支持针对最新受支持生态系统版本的 Dependabot updates,企业所有者必须下载 Dependabot 操作的最新版本。 有关操作的详细信息,以及如何下载最新版本的说明,请参阅 使用官方捆绑操作的最新版本

注意

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

如果你的仓库已使用集成进行依赖项管理,则在启用 Dependabot 前需要禁用此集成。

程序包管理器YAML 值支持的版本版本更新安全更新专用存储库专用注册表供应

Bun | bun | >=v1.1.39 | | | | | | | | Bundler | bundler | v2 | | | | | |

货物 | cargo | v1 | | | | | | Composer | composer | v2 | | | | | | | |

开发容器 | devcontainers | 不适用 | | | | | |

Docker | docker | v1 | | | | | 不适用 | | |

Docker Compose | docker-compose | V2 和 V3 | | | | | 不适用 | | | .NET SDK | dotnet-sdk | >=.NET Core 3.1 | | | 不适用 | 不适用 | 不适用 |

Helm 图表 | helm | 不支持 | | | | | 不适用 | Hex | mix | v1 | | | | | | | | 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 | | | | | | | |

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

Swift | swift | v5 | | | | (仅限 git) | |

Terraform | terraform | >= 0.13,<= 1.13.x | | | | | 不适用 | | | uv | uv | v0 | | | | | 不适用 | | | | |

yarn | npm | v1、v2、v3、v4 | | | | | |

提示

对于包管理器(如 pipenvpoetry),需要使用 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 的专用注册表配置指南”。

开发容器

可以在 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 的存储库语法(如 GitHubactions/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.gradlebuild.gradle.kts(适用于 Kotlin 项目)
  • gradle/libs.versions.toml(适用于使用标准 Gradle 版本目录的项目)
  • gradle.lockfile (对于使用 Gradle 依赖项锁定的项目)
  • 通过 apply 声明包含的文件,文件名中包含 dependencies。 请注意,apply 不支持 apply to、递归或高级语法(例如,Kotlin 的 applymapOf,由属性定义的文件名)。

要更新 Gradle 包装器,Dependabot 运行 Gradle 并更新:

  • gradle/wrapper/gradle-wrapper.properties
  • gradlew
  • gradlew.bat
  • gradle/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

Swift

专用注册表支持仅适用于 git 注册表。 不支持 Swift 注册表。 不支持非声明性清单。 有关非声明性清单的详细信息,请参阅 Swift Evolution 文档中的编辑非声明性清单

Terraform

Terraform 支持包括:

  • Terraform 注册表或可公开访问的 Git 存储库上托管的模块。
  • Terraform 提供程序。
  • 专用 Terraform 注册表。 可以在 dependabot.yml 文件中指定一个 git 注册表,以配置对专用 git 存储库的访问权限。 有关详细信息,请参阅 git

yarn

Dependabot 支持 v2 及更高版本的 vendored 依赖项。

Pub

当尝试更新的版本被忽略时,即使有早期版本可用,Dependabot 也不会对 pub 执行更新。

如果使用私人托管的 pub 仓库,则可以使用 Dependabot 来保持 Dart 依赖项的最新。 有关允许 Dependabot 访问专用 GitHub 依赖项的信息,请参阅 “允许 Dependabot 访问专用依赖项”。