关于 Dependabot 版本更新
Dependabot 负责维护您的依赖项。 您可以使用它来确保仓库自动跟上它所依赖的包和应用程序的最新版本。
通过将配置文件检入仓库,可启用 Dependabot 版本更新。 配置文件指定存储在仓库中的清单或其他包定义文件的位置。 Dependabot 使用此信息来检查过时的软件包和应用程序。 Dependabot 确定依赖项是否有新版本,它通过查看依赖的语义版本 (semver) 来决定是否应更新该版本。 对于某些软件包管理器,Dependabot 版本更新 也支持供应。 供应(或缓存)的依赖项是检入仓库中特定目录的依赖项,而不是在清单中引用的依赖项。 即使包服务器不可用,供应的依赖项在生成时也可用。 Dependabot 版本更新 可以配置为检查为新版本供应的依赖项,并在必要时更新它们。
当 Dependabot 发现过时的依赖项时,它会发起拉取请求以将清单更新到依赖项的最新版本。 对于供应和依赖项,Dependabot 提出拉取请求以直接将过时的依赖项替换为新版本。 检查测试是否通过,查看拉取请求摘要中包含的更改日志和发行说明,然后合并它。 更多信息请参阅“启用和禁用版本更新”。
如果启用安全更新,Dependabot 还会发起拉取请求以更新易受攻击依赖项。 更多信息请参阅“关于 Dependabot 安全更新”。
当 Dependabot 提出拉取请求时,这些拉取请求可以是安全性或版本更新:
- Dependabot 安全更新 是自动拉取请求,帮助您更新已知漏洞的信赖项。
- Dependabot 版本更新 是自动拉取请求,即使它们没有任何漏洞,也会保持更新您的依赖项。 要检查版本更新的状态,请依次导航到仓库的 Insights(见解)选项卡、Dependency Graph(依赖关系图)、Dependabot。
Dependabot 和所有相关功能受 GitHub 服务条款管辖。
Dependabot 拉取请求的频率
在配置文件中指定检查每个生态系统的新版本的频率:每日、每周或每月。
首次启用版本更新时,您可能有很多过时的依赖项,其中一些可能为许多落后于最新版本的版本。 Dependabot 将在其启用后立即检查过时的依赖项。 根据您配置更新的清单文件的数量,您可能会在添加配置文件后几分钟内看到新的版本更新拉取请求。 Dependabot 也会在配置文件后续更改时运行更新。
Dependabot 也可在更新失败后更改清单文件时创建拉取请求。 这是因为对清单的更改,例如删除导致更新失败的依赖项,可能会导致新触发的更新成功。
为使拉取请求保持可管理和易于审查,Dependabot 最多将提出五个拉取请求,以便开始将依赖项更新至最新版本。 如果您在下次预定的更新之前先合并了这些拉取请求,剩余的拉取请求将在下次更新时打开,最多不超过此限。 您可以通过设置 open-pull-requests-limit 配置选项来更改打开的拉取请求最大数。
如果您启用了安全更新,有时会看到额外的安全更新拉取请求。 这些由默认分支上依赖项的 Dependabot 警报所触发。 Dependabot 自动提出拉取请求以更新有漏洞的依赖项。
支持的仓库和生态系统
您可以为包含其中一个受支持包管理器的依赖项清单或锁定文件的仓库配置版本更新。 对于某些软件包管理器,您也可以配置依赖项的供应。 更多信息请参阅“依赖项更新的配置选项。”
在运行安全性或版本更新时,有些生态系统必须能够解决来自其来源的所有依赖项,以验证版本更新是否成功。 如果清单或锁定文件包含任何私有依赖项,Dependabot 必须能够访问这些依赖项所在的位置。 组织所有者可以授予 Dependabot 访问包含同一个组织内项目依赖项的私有仓库. 更多信息请参阅“管理组织的安全和分析设置”。 您可以在仓库的 dependabot.yml 配置文件中配置对私有注册表的访问。 更多信息请参阅“依赖项更新的配置选项。”
Dependabot 不支持所有包管理器的私有 GitHub 依赖项。 详见下表。
下表对每个包管理器显示:
- 要用于 dependabot.yml 文件中的 YAML 值
- 支持的包管理器版本
- 是否支持私有 GitHub 仓库或注册表中的依赖项
- 是否支持供应的依赖项
| 包管理器 | YAML 值 | 支持的版本 | 私有仓库 | 私有注册表 | 供应 |
|---|---|---|---|---|---|
| Bundler | bundler | v1, v2 | ✓ | ✓ | |
| Cargo | cargo | v1 | ✓ | ✓ | |
| Composer | composer | v1, v2 | ✓ | ✓ | |
| Docker | docker | v1 | ✓ | ✓ | |
| Hex | 混合 | v1 | ✓ | ||
| elm-package | elm | v0.19 | ✓ | ✓ | |
| git submodule | gitsubmodule | N/A(无版本) | ✓ | ✓ | |
| GitHub Actions | github-actions | N/A(无版本) | ✓ | ✓ | |
| Go 模块 | gomod | v1 | ✓ | ✓ | ✓ |
| Gradle | gradle | N/A(无版本)[1] | ✓ | ✓ | |
| Maven | maven | N/A(无版本)[2] | ✓ | ✓ | |
| npm | npm | v6, v7 | ✓ | ✓ | |
| NuGet | nuget | <= 4.8[3] | ✓ | ✓ | |
| pip | pip | v20 | ✓ | ||
| pipenv | pip | <= 2018.11.26 | ✓ | ||
| pip-compile | pip | 5.5.0 | ✓ | ||
| poetry | pip | v1 | ✓ | ||
| Terraform | terraform | <= 0.15 | ✓ | ✓ | |
| yarn | npm | v1 | ✓ | ✓ |
[1] Dependabot 不运行 Gradle,但支持更新以下文件:build.gradle 和 build.gradle.kts(用于 Kotlin 项目)。
[2] Dependabot 不运行 Maven ,但支持更新 pom.xml 文件。
[3] Dependabot 不运行 NuGet CLI,但支持直到版本 4.8 的大多数功能。
对于包管理器,如 pipenv 和 poetry,您需要使用 pip YAML 值。 例如,如果您使用 poetry 来管理 Python 依赖项,并且希望 Dependabot 监控新版本的依赖项清单文件,请在 dependabot.yml 文件中使用 package-ecosystem: "pip"。
如果您的仓库已使用集成进行依赖项管理,则在启用 Dependabot 前需要禁用此集成。 更多信息请参阅“关于集成”。
关于 Dependabot 版本更新通知
您可以在 GitHub 上过滤通知以显示 Dependabot 版本更新。 更多信息请参阅“从收件箱管理通知”。

