关于依赖项的版本更新
通过将 dependabot.yml 配置文件检入仓库的 .github
目录,可启用 Dependabot 版本更新。 Dependabot 然后提出拉取请求,使您配置的依赖项保持最新。 对于您想更新的每个包管理器的依赖项,必须指定包清单文件的位置及为文件所列的依赖项检查更新的频率。 有关启用安全更新的信息,请参阅“配置 Dependabot 安全更新。”
首次启用版本更新时,您可能有很多过时的依赖项,其中一些可能为许多落后于最新版本的版本。 Dependabot 将在其启用后立即检查过时的依赖项。 根据您配置更新的清单文件的数量,您可能会在添加配置文件后几分钟内看到新的版本更新拉取请求。 Dependabot 也会在配置文件后续更改时运行更新。
Dependabot 也可在更新失败后更改清单文件时创建拉取请求。 这是因为对清单的更改,例如删除导致更新失败的依赖项,可能会导致新触发的更新成功。
为使拉取请求保持可管理和易于审查,Dependabot 最多将提出五个拉取请求,以便开始将依赖项更新至最新版本。 如果您在下次预定的更新之前先合并了这些拉取请求,剩余的拉取请求将在下次更新时打开,最多不超过此限。 您可以通过设置 open-pull-requests-limit
配置选项来更改打开的拉取请求最大数。 更多信息请参阅“自定义依赖项更新。”
在运行安全性或版本更新时,有些生态系统必须能够解决来自其来源的所有依赖项,以验证版本更新是否成功。 如果清单或锁定文件包含任何私有依赖项,Dependabot 必须能够访问这些依赖项所在的位置。 组织所有者可以授予 Dependabot 访问包含同一个组织内项目依赖项的私有仓库. 更多信息请参阅“管理组织的安全和分析设置”。 您可以在仓库的 dependabot.yml 配置文件中配置对私有注册表的访问。 更多信息请参阅“dependabot.yml 文件的配置选项。” 此外,Dependabot 不支持所有包管理器的 GitHub 私有依赖项。 更多信息请参阅“关于 Dependabot 版本更新”和“GitHub 语言支持”。
启用 Dependabot 版本更新
- 创建 dependabot.yml 配置文件。 有关信息,请参阅“dependabot.yml 文件的配置选项”。
- 添加
version
。 - (可选)如果您在私人注册表中包含依赖项,请添加包含身份验证详细信息的
registries
部分。 - 添加
updates
部分,并输入您希望 Dependabot 监控的每个包管理器的条目。 - 对于每个包管理器,可使用:
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.com 上,导航到仓库的主页面。
- 在仓库名称下,单击 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"
ignore:
# Ignore updates to packages that start with '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"]
# For all packages, ignore all patch updates
- dependency-name: "*"
update-types: ["version-update:semver-patch"]
有关检查现有忽略首选项的详细信息,请参阅“dependabot.yml 文件的配置选项”。