注: Dependabot 版本更新 目前处于测试阶段,可能会有变动。 要使用测试版功能,请按照本文的说明操作。
关于依赖项的版本更新
通过将 dependabot.yml 配置文件检入仓库的 .github
目录,可启用 Dependabot 版本更新。 Dependabot 然后提出拉取请求,使您配置的依赖项保持最新。 对于您想更新的每个包管理器的依赖项,必须指定包清单文件的位置及为文件所列的依赖项检查更新的频率。 有关启用安全更新的信息,请参阅“配置 Dependabot 安全更新。”
首次启用版本更新时,您可能有很多过时的依赖项,其中一些可能为许多落后于最新版本的版本。 Dependabot 将在其启用后立即检查过时的依赖项。 根据您配置更新的清单文件的数量,您可能会在添加配置文件后几分钟内看到新的版本更新拉取请求。
为使拉取请求保持可管理和易于审查,Dependabot 最多将提出五个拉取请求,以便开始将依赖项更新至最新版本。 如果您在下次预定更新之前合并第一批拉取请求中的一些请求,则接下来的拉取请求最多可以打开五个(您可以更改此限制)。 更多信息请参阅“自定义依赖项更新。”
在运行安全性或版本更新时,有些生态系统必须能够解决来自其来源的所有依赖项,以验证版本更新是否成功。 如果清单或锁定文件包含任何私有依赖项,Dependabot 必须能够访问这些依赖项所在的位置。 组织所有者可以授予 Dependabot 访问包含同一个组织内项目依赖项的私有仓库. 更多信息请参阅“管理组织的安全和分析设置”。
目前,Dependabot 版本更新不支持包含私人注册表中依赖项的清单或锁定文件,或者私有 GitHub 仓库中属于不同于依赖项目的组织。 此外,Dependabot 不支持所有包管理器的 GitHub 私有依赖项。 更多信息请参阅“关于 Dependabot 版本更新”。
启用 Dependabot 版本更新
- 创建 dependabot.yml 配置文件。
- 使用
package-ecosystem
指定要监视的包管理器。 - 对于每个包管理器,可使用:
directory
指定清单或其他定义文件的位置。schedule.interval
指定检查新版本的频率。
- 将 dependabot.yml 配置文件签入仓库的
.github
目录。
示例 dependabot.yml 文件
下面的示例 dependabot.yml 文件将为两个包管理器配置版本更新:npm 和 Docker。 当此文件被检入时,Dependabot 会检查默认分支上的清单文件中是否有过时的依赖项。 如果发现过时的依赖项,将针对默认分支提出拉取请求,以更新依赖项。
# Basic dependabot.yml file with
# minimum configuration for two package managers
version: 2
updates:
# Enable version updates for npm
- package-ecosystem: "npm"
# Look for `package.json` and `lock` files in the `root` directory
directory: "/"
# Check the npm registry for updates every day (weekdays)
schedule:
interval: "daily"
# Enable version updates for Docker
- package-ecosystem: "docker"
# Look for a `Dockerfile` in the `root` directory
directory: "/"
# Check for updates once a week
schedule:
interval: "weekly"
在上面的示例中,如果 Docker 依赖项已过时很久,您可能会先执行 daily
安排,直到这些依赖项达到最新状态,然后降回每周安排。
在复刻上启用版本更新
如果您想在复刻上启用版本更新,还需要执行一个额外的步骤。 存在 dependabot.yml 配置文件时,不会自动启用版本更新。 这样可确保复刻所有者在从原始仓库拉取变更时不会无意中启用版本更新,包括 dependabot.yml 配置文件。
在复刻上,也需要显式启用 Dependabot。
- 在 GitHub 上,导航到仓库的主页面。
- 在仓库名称下,单击 Insights(洞察)。
- 在左侧边栏中,单击 Dependency graph(依赖图)。
- 在“Dependency graph(依赖关系图)”下,单击 Dependabot。
- 在“Enable Dependabot(启用 Dependabot)”下,单击 Enable Dependabot(启用 Dependabot)。
检查版本更新的状态
启用版本更新后,将在仓库的依赖关系图中发现新的 Dependabot 选项卡。 此选项卡显示配置了哪些要监视的包管理器 Dependabot 以及 Dependabot 上次检查新版本的时间。
更多信息请参阅“列出为版本更新配置的依赖项。”
禁用 Dependabot 版本更新
您可以通过从仓库删除 dependabot.yml 文件完全禁用版本更新。 更多情况下,您会希望临时为一个或多个依赖项或包管理器禁用更新。
- 包管理器:通过设置
open-pull-requests-limit: 0
或为配置文件中的相关package-ecosystem
添加注释执行禁用。 - 特定依赖项:通过为您想从更新中排除的包或应用程序添加
ignore
属性执行禁用。
禁用依赖项时,可以使用通配符匹配一组相关库。 您也可以指定要排除的版本。 如果您需要阻止库更新,利用待处理的工作支持对 API 进行重大变更,但又希望您使用的版本得到所有安全修复,此方法将特别有用。
为某些依赖项禁用版本更新的示例
下面的示例 dependabot.yml 文件包括禁用某些依赖项的更新,同时允许其他更新继续进行的不同方式的示例。
# dependabot.yml file with updates
# disabled for Docker and limited for npm
version: 2
updates:
# Configuration for Dockerfile
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "weekly"
# Disable all pull requests for Docker dependencies
open-pull-requests-limit: 0
# Configuration for npm
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Overwrite any ignores created using `@dependabot ignore` commands
ignore:
# Ignore updates to packages that start 'aws'
# Wildcards match zero or more arbitrary characters
- dependency-name: "aws*"
# Ignore some updates to the 'express' package
- dependency-name: "express"
# Ignore only new versions for 4.x and 5.x
versions: ["4.x", "5.x"]
警告:将 ignore
选项添加至 dependabot.yml 配置文件之前,请检查仓库是否已有任何忽略首选项(已使用 @dependabot ignore
命令创建)。 将 ignore
选项添加至 dependabot.yml 配置文件时,此选项将覆盖为此包管理器、分支和目录集中存储的任何忽略首选项。
这会影响安全和版本更新。
有关检查现有忽略首选项的更多信息,请参阅“依赖项更新的配置选项。”