跳至主要内容

Dependabot 选项参考

关于所有可用选项的详细信息,您可以使用这些选项自定义 Dependabot 如何维护您的仓库。

谁可以使用此功能?

具有 写入 访问权限的用户

本文提供 dependabot.yml 文件中可用的配置选项的参考信息。使用这些选项可自定义 Dependabot 如何监视软件包生态系统、安排更新以及创建拉取请求。有关 dependabot.yml 文件及其工作原理的概述,请参阅 关于 dependabot.yml 文件

所有标记有图标的选项也会影响 Dependabot 为安全更新创建拉取请求的方式,target-branch 除外。

必需键

位置用途
version顶层Dependabot 配置语法的使用方式。始终为:2
updates顶层在此部分定义要更新的每个 package-ecosystem
package-ecosystem位于 updates定义要更新的包管理器。
directoriesdirectory位于每个 package-ecosystem 条目下定义要更新的清单文件或其他定义文件的位置。
schedule.interval位于每个 package-ecosystem 条目下定义查找版本更新的频率:daily(每日)、weekly(每周)、monthly(每月)、quarterly(每季)、semiannually(每半年)、yearly(每年)或 cron

您也可以在顶层加入 registries 键,以定义私有注册表的访问详情,参见 顶层 registries

YAML

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

有关 dependabot.yml 文件的真实案例,请参阅 Dependabot 自身的配置文件

allow

用于精确指定在某个包生态系统中要维护的依赖项。常与 ignore 选项一起使用。示例请参阅 控制 Dependabot 更新哪些依赖项

Dependabot 默认行为

  • 清单中明确列出的所有依赖项都会通过版本更新保持最新。
  • 锁定文件中包含漏洞的所有依赖项都会通过安全更新进行升级。

当指定 allow 时,Dependabot 按以下流程执行

  1. 检查所有明确 允许 的依赖项。

  2. 然后过滤掉任何 被忽略 的依赖项或版本。

    如果同一依赖同时匹配了 allowignore,则该依赖会被 忽略

参数用途
dependency-name允许对匹配名称的依赖进行更新,可选使用 * 匹配零个或多个字符。
dependency-type允许对特定类型的依赖进行更新。
update-types允许对一个或多个语义化版本级别进行更新。支持的取值有:version-update:semver-patchversion-update:semver-minorversion-update:semver-major

dependency-nameallow

对大多数包管理器而言,您应提供能匹配锁定文件或清单文件中依赖名称的值。少数系统有更复杂的要求。

包管理器所需格式示例
Gradle 与 MavengroupId:artifactIdorg.kohsuke:github-api
Docker(用于镜像标签)仓库的完整名称例如,针对镜像标签 <account ID>.dkr.ecr.us-west-2.amazonaws.com/base/foo/bar/ruby:3.1.0-focal-jemalloc,使用 base/foo/bar/ruby

dependency-typeallow

依赖类型各包管理器支持的类型允许更新
direct(直接)全部所有在清单中明确声明的依赖。
indirect(间接)bundlerpipcomposercargogomoduv直接依赖的子依赖(亦称传递依赖)。
all(全部)全部所有明确声明的依赖。对于 bundlerpipcomposercargogomoduv,还包括直接依赖的子依赖。
production(生产)bundlercomposermixmavennpmpipuv(并非所有管理器)仅限包管理器标记为生产依赖的项目。
development(开发)bundlercomposermixmavennpmpipuv(并非所有管理器)仅限包管理器标记为开发依赖的项目。

update-typesallow

update-types 只影响 版本 更新,不影响 安全 更新。

指定允许的语义化版本(SemVer)范围。

SemVer 是用于定义软件包版本的标准,形式为 x.y.z。Dependabot 将此类版本始终视为 major.minor.patchupdate-types 的取值是一个或多个字符串列表。

  • 使用 version-update:semver-patch 允许补丁级别的发布。
  • 使用 version-update:semver-minor 允许小版本升级。
  • 使用 version-update:semver-major 允许大版本升级。

如果在 allow 规则中未指定 update-types,则对该规则允许所有更新类型。

您可以将 update-typesdependency-namedependency-type 组合,以进一步细化允许的更新。组合示例请参阅 控制 Dependabot 更新哪些依赖项

指派人

为某个包生态系统产生的所有拉取请求指定单独的受理人(assignee)。示例请参阅 自定义 Dependabot 拉取请求以符合您的流程

Dependabot 默认行为

  • 默认情况下,拉取请求不会包含任何受理人。

当定义了 assignees

  • 所有版本更新的拉取请求都会使用所选受理人创建。
  • 所有安全更新的拉取请求也会使用所选受理人创建,除非 target-branch 将更新指向非默认分支。

受理人必须对仓库拥有写入权限。对组织拥有的仓库,拥有读取权限的组织成员也可作为受理人。

commit-message

定义提交信息的格式。由于拉取请求标题基于提交信息生成,此设置同样影响拉取请求标题。示例请参阅 自定义 Dependabot 拉取请求以符合您的流程

Dependabot 默认行为

  • 提交信息遵循与仓库中检测到的模式相似的格式。

当定义了 commit-message

  • 所有提交信息均遵循定义的模式。
  • 所有提交信息均遵循定义的模式,除非 target-branch 将更新指向非默认分支。
参数用途
prefix为所有提交信息和拉取请求标题定义前缀。
prefix-development在受支持的系统上,为更新开发依赖组的提交定义不同的前缀。
include在提交信息前缀后附加额外信息。

提示

当为分组更新创建拉取请求时,分支名称和拉取请求标题由组的 IDENTIFIER 决定,参见 groups

prefix

  • 适用于所有提交信息,除非同时定义了 prefix-development
  • 取值最长 50 个字符。
  • 当取值以字母、数字、右括号或右方括号结尾时,Dependabot 会在前缀后插入冒号再添加主体提交信息。
  • 在取值末尾添加空白字符可阻止插入冒号。

prefix-development

适用于:bundlercomposermixmavennpmpipuv

  • 仅用于更新开发依赖组的提交信息。
  • 否则,该参数的行为与 prefix 完全相同。

include

  • 仅支持取值 scope
  • 定义后,任何前缀后面都会追加本次提交更新的依赖类型:deps(常规)或 deps-dev(开发)。

cooldown

定义一个 冷却期,用于延迟依赖更新的天数。cooldown 仅适用于 版本 更新,不适用于 安全 更新。

此功能让用户能够自定义 Dependabot 生成新版本更新的频率,从而更好地控制更新节奏。示例请参阅 为 Dependabot 版本更新优化拉取请求的创建

Dependabot 默认行为

  • 依据 schedule.interval 中定义的计划检查更新。
  • 立即将所有新版本视为可更新。

当定义了 cooldown

  1. Dependabot 会依据已定义的 schedule.interval 设置检查更新。
  2. Dependabot 会检查是否存在冷却期设置。
  3. 如果某依赖的新版本发布位于其冷却期内,Dependabot 会跳过对该依赖的版本更新。
  4. 没有冷却期,或已超过冷却期的依赖,将依据配置的 versioning-strategy 更新至最新版本。
  5. 当依赖的冷却期结束后,Dependabot 将恢复使用 dependabot.yml 中定义的标准更新策略进行更新。

cooldown 的配置

您可以使用以下选项指定冷却期的时长。

参数描述
default-days默认冷却期,适用于未定义特定规则的依赖(可选)。
semver-major-days针对 大版本更新 的冷却期(可选,仅适用于支持 SemVer 的包管理器)。
semver-minor-days针对 小版本更新 的冷却期(可选,仅适用于支持 SemVer 的包管理器)。
semver-patch-days针对 补丁版本更新 的冷却期(可选,仅适用于支持 SemVer 的包管理器)。
include列出需 应用冷却期 的依赖(最多 150 项),支持通配符(*)。
exclude列出 不受冷却期影响 的依赖(最多 150 项),支持通配符(*)。

下表列出了支持 SemVer 的包管理器。

包管理器支持 SemVer
Bazel
Bundler
Bun
Cargo
Composer
Devcontainers
Docker
Docker Compose
Dotnet SDK
Elm
GitHub Actions
Gitsubmodule
Gomod(Go Modules)
Gradle
Helm
Hex
Julia
Maven
NPM 和 Yarn
NuGet
OpenTofu
Pip
Pub
Swift
Terraform
UV

注意

  • 如果未定义 semver-major-dayssemver-minor-dayssemver-patch-days,则会使用 default-days 作为基准进行基于冷却期的更新。
  • exclude 列表始终优先于 include 列表。如果同一依赖同时出现在两者中,则该依赖会被 排除在冷却期之外,并立即更新。

directoriesdirectory

必需选项。用于为每个包管理器定义清单文件的位置(例如 package.jsonGemfile)。若缺少此信息,Dependabot 将无法为版本更新创建拉取请求。示例请参阅 为清单文件定义多个位置

  • 使用 directory 定义单个清单目录。

  • 使用 directories 定义多个清单目录的列表。

  • 对大多数包管理器而言,目录相对于仓库根目录进行定义。

  • 对于 GitHub Actions,请使用值 /。Dependabot 将搜索 /.github/workflows 目录以及根目录下的 action.yml/action.yaml 文件。

如果需要在同一目标分支上为同一生态系统使用多个块定义更新,请确保所有值唯一且目录之间不重叠。

注意

directories 键支持全局匹配(globbing)和通配符 *,而 directory 键不支持这些功能。

enable-beta-ecosystems

当前未使用。

groups

定义规则,以在单个或多个集合中管理由同一包管理器维护的依赖,从而将更新合并为更少、更有针对性的拉取请求。示例请参阅 为 Dependabot 版本更新优化拉取请求的创建

Dependabot 默认行为

  • 为每个需要升级的依赖(包括版本更新和安全更新)打开单独的拉取请求。

当使用 groups 定义规则时

  • 所有匹配同一规则的依赖更新会合并到单个拉取请求中。
  • 如果某依赖匹配多个规则,则会被放入第一个匹配的组。
  • 未匹配任何规则的过时依赖仍然会以单独的拉取请求进行更新。
参数用途
IDENTIFIER为组定义标识符,用于分支名称和拉取请求标题。必须以字母开头和结尾,可包含字母、竖线 |、下划线 _ 或短横线 -
applies-to指定组适用于哪种类型的更新。未定义时默认针对版本更新。支持的取值:version-updatessecurity-updates
dependency-type将组限制为特定类型。支持的取值:developmentproduction
exclude-patterns定义一个或多个模式,以将依赖排除出该组。
group-by跨多个目录对更新进行分组。支持的取值:dependency-name
patterns定义一个或多个模式,以包含名称匹配的依赖。
update-types将组限制为一个或多个语义化版本级别。支持的取值:minorpatchmajor

dependency-typegroups

适用于:bundlercomposermixmavennpmpip

默认情况下,组会包含所有类型的依赖。

  • 使用 development 仅包含“开发依赖组”中的依赖。
  • 使用 production 仅包含“生产依赖组”中的依赖。

group-bygroups

使用 groups.<group-name>.group-by 指定 Dependabot 在单体仓库中跨多个目录如何对更新进行分组。

  • 类型:字符串
  • 可接受的取值: dependency-name
  • 适用范围:指定了多个目录的配置

设置为 dependency-name 时,Dependabot 将在所有指定目录中针对每个依赖创建单一拉取请求,而不是在每个目录中分别创建。

跨目录分组的限制

使用 group-by: dependency-name

  • 所有目录必须使用相同的包生态系统(例如全部为 npm 或全部为 bundler
  • 仅适用于 版本更新
  • 如果目录对同一依赖的版本约束不兼容,Dependabot 将创建单独的拉取请求。

使用 group-by 的示例请参阅 为 Dependabot 版本更新优化拉取请求的创建

patternsexclude-patternsgroups

两者均支持使用 * 作为通配符匹配依赖名称。如果依赖同时匹配模式和排除模式,则会被排除出该组。

update-typesgroups

默认情况下,组会包含所有语义化版本(SemVer)的更新。SemVer 是用于定义软件包版本的标准,形式为 x.y.z,Dependabot 始终将其视为 major.minor.patch

  • 使用 patch 包含补丁级别的发布。
  • 使用 minor 包含小版本升级。
  • 使用 major 包含大版本升级。

示例请参阅 控制 Dependabot 更新哪些依赖项

ignore

配合 allow 选项使用,以精确定义在某个包生态系统中要维护的依赖。Dependabot 首先检查所有已允许的依赖,然后过滤掉任何被忽略的依赖或版本。因此同时匹配 allowignore 的依赖会被 忽略。示例请参阅 控制 Dependabot 更新哪些依赖项

Dependabot 默认行为

  • 清单中明确列出的所有依赖项都会通过版本更新保持最新。
  • 锁定文件中包含漏洞的所有依赖项都会通过安全更新进行升级。

当使用 ignore 时,Dependabot 按以下流程执行

  1. 检查所有明确 允许 的依赖项。

  2. 然后过滤掉任何 被忽略 的依赖项或版本。

    如果同一依赖同时匹配了 allowignore,则该依赖会被 忽略

参数用途
dependency-name忽略名称匹配的依赖更新,可选使用 * 匹配零个或多个字符。
versions(版本)忽略特定版本或版本范围。
update-types忽略一个或多个语义化版本级别的更新。支持的取值:version-update:semver-patchversion-update:semver-minorversion-update:semver-major

dependency-nameignore

对大多数包管理器而言,您应提供能匹配锁定文件或清单文件中依赖名称的值。少数系统有更复杂的要求。

包管理器所需格式示例
Gradle 与 MavengroupId:artifactIdorg.kohsuke:github-api
Docker(用于镜像标签)仓库的完整名称例如,针对镜像标签 <account ID>.dkr.ecr.us-west-2.amazonaws.com/base/foo/bar/ruby:3.1.0-focal-jemalloc,使用 base/foo/bar/ruby

versionsignore

用于忽略特定版本或版本范围。如果要定义范围,请使用对应包管理器的标准语法。例如:

  • npm:使用 ^1.0.0
  • Bundler:使用 ~> 2.0
  • Docker:使用 Bundler 版本语法
  • NuGet:使用 7.*
  • Maven:使用 [1.4,)

示例请参阅 控制 Dependabot 更新哪些依赖项

update-typesignore

指定要忽略的语义化版本(SemVer)级别。SemVer 是用于定义软件包版本的标准,形式为 x.y.z,Dependabot 始终将其视为 major.minor.patch

  • 使用 version-update:semver-patch 包含补丁级别的发布。
  • 使用 version-update:semver-minor 包含小版本升级。
  • 使用 version-update:semver-major 包含大版本升级。

insecure-external-code-execution

适用于:bundlermixpip

允许 Dependabot 在更新期间执行清单中的外部代码。示例请参阅 允许外部代码执行

Dependabot 默认行为

  • 当您为 Dependabot 授权访问一个或多个注册表时,外部代码执行会自动被禁用,以防止代码被受污染的包窃取凭据或访问已配置的注册表。
  • 若无法执行代码,版本更新可能会失败。

当您允许 insecure-external-code-execution

  • Dependabot 将在版本更新过程中执行清单中的代码。
  • 该代码仅能访问与该 updates 设置关联的注册表中的包管理器。它不能访问顶层 registries 配置中定义的任何注册表。
  • 这可能使更新成功,但亦可能让受污染的包窃取凭据或访问已配置的注册表。

支持的取值:allow

labels

为某个包管理器产生的所有拉取请求指定自定义标签。示例请参阅 自定义 Dependabot 拉取请求以符合您的流程

Dependabot 默认行为

  • 所有拉取请求默认带有 dependencies 标签。
  • 如果定义了多个包管理器,会在每个拉取请求额外添加对应生态系统或语言的标签,例如 Gradle 更新会添加 java,git 子模块更新会添加 submodules
  • 如果仓库中存在语义化版本(SemVer)标签,它们会自动应用,以指示版本更新的类型(majorminorpatch)。
  • Dependabot 会根据仓库需要自动创建这些默认标签。

当定义了 labels

  • 使用指定的标签替代默认标签。
  • 仓库中已存在的 SemVer 标签仍会额外应用。
  • 如果仓库中未定义某个标签,则该标签会被忽略。
  • 您可以使用 labels: [ ] 禁用所有标签(包括默认标签)。

此选项的设置同样会影响安全更新的拉取请求,除非使用 target-branch 在非默认分支上检查版本更新。

里程碑

为某个包管理器产生的所有拉取请求关联里程碑。示例请参阅 自定义 Dependabot 拉取请求以符合您的流程

Dependabot 默认行为

  • 不使用里程碑。

当定义了 milestone

  • 该包管理器的所有拉取请求都会添加到指定的里程碑中。

支持的取值:里程碑的数值标识符。

提示

查看里程碑时,页面 URL 中 milestone 之后的最后一段即为标识符。例如:https://github.com/<org>/<repo>/milestone/3,参见 查看里程碑进度

multi-ecosystem-groups

定义跨多个包生态系统的组,以便生成单个 Dependabot 拉取请求,更新所有受支持的包生态系统。这有助于减少收到的 Dependabot 拉取请求数量,并简化依赖更新工作流。

Dependabot 默认行为

  • 为每个有依赖更新的包生态系统创建单独的拉取请求。

当使用 multi-ecosystem-groups

  • 同一组内跨多个包生态系统的更新会合并为单个拉取请求。
  • 组拥有各自的计划,可以继承或覆盖单个生态系统的设置。

multi-ecosystem-group

updates 配置中使用 multi-ecosystem-group 参数,将各个包生态系统分配到同一多生态系统组。

重要提示

多生态系统更新需要特定的配置模式并具有独特的参数合并行为。完整的设置说明、配置示例以及详细的参数参考,请参阅 为 Dependabot 配置多生态系统更新

YAML
# Basic `dependabot.yml` file defining a multi-ecosystem-group
version: 2

multi-ecosystem-groups:
  infrastructure:
    schedule:
      interval: "weekly"

updates:
  - package-ecosystem: "docker"
    directory: "/"
    patterns: ["nginx", "redis"]
    multi-ecosystem-group: "infrastructure"

  - package-ecosystem: "terraform"
    directory: "/"
    patterns: ["aws"]
    multi-ecosystem-group: "infrastructure"

open-pull-requests-limit

更改任意时刻打开的版本更新拉取请求的最大数量上限。

Dependabot 默认行为

  • 如果已有 5 个版本更新的拉取请求处于打开状态,则在这些请求被合并或关闭之前不会再创建新的拉取请求。
  • 安全更新有一个固定的内部上限,为 10 个打开的拉取请求,且无法更改。

当定义了 open-pull-requests-limit

  • Dependabot 将最多打开等于该整数值的拉取请求。设定较大值可实质上取消打开拉取请求的限制。
  • 您可以将此选项设为 0,以临时禁用某个包管理器的版本更新,参见 禁用 Dependabot 版本更新

package-ecosystem

必需选项。为每个希望 Dependabot 监视新版本的包管理器定义一个 package-ecosystem 元素。仓库还必须包含对应包管理器的依赖清单或锁定文件,参见 示例 dependabot.yml 文件

包管理器YAML 值支持的版本
Bazelbazelv7, v8, v9
Bunbun>=v1.2.5
Bundlerbundlerv2
Cargocargov1
Composercomposerv2
Condaconda不适用
Dev containersdevcontainers不适用
Dockerdockerv1
Docker Composedocker-composev2, v3
.NET SDKdotnet-sdk>=.NET Core 3.1
Helm Chartshelmv3
Hexmixv1
Juliajulia>=v1.10
elm-packageelmv0.19
git submodulegitsubmodule不适用
GitHub Actionsgithub-actions不适用
Go 模块gomodv1
Gradlegradle不适用
Mavenmaven不适用
Nix flakesnix不适用
npmnpmv7, v8, v9, v10
NuGetnuget<=6.12.0
OpenTofuopentofu不适用
pippipv24.2
pip-compilepip7.4.1
pipenvpip<= 2024.4.1
pnpmnpmv7, v8
v9, v10(仅限版本更新)
poetrypipv2
pre-commitpre-commit不适用
pubpubv2
Rust toolchainrust-toolchain不适用
Swiftswiftv5
Terraformterraform>= 0.13, <= 1.10.x
uvuvv0
vcpkgvcpkg不适用
yarnnpmv1, v2, v3, v4

pull-request-branch-name.separator

指定在生成分支名称时使用的分隔符。示例请参阅 自定义 Dependabot 拉取请求以符合您的流程

Dependabot 默认行为

  • 生成形如 dependabot/PACKAGE_MANAGER/DEPENDENCY 的分支名称。

当定义了 pull-request-branch-name.separator

  • 使用指定字符替代默认的 /

支持的取值:"-"_/

提示

必须对连字符进行转义,以免被解析为 YAML 空列表的起始符号。

rebase-strategy

禁用 Dependabot 自动变基(rebase)已打开的拉取请求。

默认情况下,Dependabot 在检测到版本或安全更新的拉取请求有任何更改时,会对其执行变基。检测更改的时机包括:

  • 您的调度运行以检查版本更新。
  • 您重新打开已关闭的 Dependabot 拉取请求。
  • 您在 Dependabot 配置文件中更改了 target-branch 的值,参见 target-branch
  • Dependabot 拉取请求在目标分支最近一次推送后产生冲突。

rebase-strategy 设置为 disabled 时,Dependabot 将停止对拉取请求执行变基。

注意

在您禁用变基之前已打开的拉取请求将在其打开后 30 天内继续执行变基。此规则适用于所有与目标分支冲突的拉取请求以及所有版本更新的拉取请求。

registries

配置对私有包注册表的访问,以便 Dependabot 能更新更广泛的依赖。参阅 为 Dependabot 配置私有注册表访问私有注册表配置指南

dependabot.yml 文件中有两处可以使用 registries 键:

  1. 顶层,用于定义要使用的私有注册表及其访问信息,参见 为 Dependabot 配置私有注册表访问
  2. updates 块内部,用于指定每个包管理器应使用哪些私有注册表。

Dependabot 默认仅对存放在公开可访问注册表中的依赖提出拉取请求。

dependabot.yml 文件的顶层包含 registries 段,定义了一或多个私有注册表的访问方式时,您可以为每个 package-ecosystem 配置使用一个或多个这些私有注册表。

当为某个包管理器定义了 registries

  • 该包管理器指定的每个私有注册表都会被检查是否有版本或安全更新。
  • Dependabot 使用顶层 registries 段中定义的访问信息。

支持的取值:REGISTRY_NAME"*"

schedule

必需选项。使用 interval 参数定义 Dependabot 检查新版本的频率。对于每日和每周间隔,您还可以自定义 Dependabot 检查更新的具体时间。示例请参阅 为 Dependabot 版本更新优化拉取请求的创建

参数用途
interval必需。定义 Dependabot 的运行频率。
day每周 间隔指定运行的星期几。
time指定运行时间。
cronjob如果间隔类型为 cron,则定义 cron 表达式。
timezone指定 time 值的时区。

interval

支持的取值:dailyweeklymonthlyquarterlysemiannuallyyearly,或 cron

每个包管理器 必须 定义一个调度间隔。

  • 使用 daily 在每个工作日(星期一至星期五)运行。
  • 使用 weekly 每周运行一次,默认在星期一。
  • 使用 monthly 在每月的第一天运行。
  • 使用 quarterly 在每个季度的第一天运行(一月、四月、七月和十月)。
  • 使用 semiannually 每六个月运行一次,即在一月和七月的第一天。
  • 使用 yearly 在一月的第一天运行。
  • 使用 cron 进行基于 cron 表达式的调度。参见 cronjob

注意

支持的取值 quarterlysemiannuallyyearly 仅在 GitHub Enterprise Server 3.19 及以上版本可用。

默认情况下,Dependabot 会随机分配时间以应用配置文件中的所有更新。您可以使用 timetimezone 参数为所有间隔设置特定的运行时间。如果使用 cron 间隔,则可以使用 cronjob 表达式定义更新时间。

day

支持的取值:mondaytuesdaywednesdaythursdayfridaysaturdaysunday

可选地,在特定的星期几为某个包管理器进行 weekly 更新。

time

格式:hh:mm

可选地,在一天中的特定时间为某个包管理器运行所有更新。默认情况下,时间解释为 UTC。

cronjob

支持的取值:符合 cron 语法的有效 cron 表达式或自然语言表达式。

Cron 语法有五个由空格分隔的字段,每个字段代表一个时间单位。

┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of the month (1 - 31)
│ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
│ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)
│ │ │ │ │
* * * * *

示例:0 9 * * *every day at 5pm

0 9 * * * 等价于 “every day at 9am”。every day at 5pm 等价于 0 17 * * *

注意

  • 时区必须在 timezone 参数中指定,而不是在 cronjob 中。
  • 使用 cron 间隔必须使用 cronjob 类型的调度。
YAML

# Basic `dependabot.yml` file for cronjob

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 based on `cronjob` value
    schedule:
      interval: "cron"
      cronjob: "0 9 * * *"

timezone

time 值指定时区。默认时区是 UTC

时区标识符必须与 iana 维护的数据库中的时区相匹配,参见 List of tz database time zones

target-branch

定义一个特定的分支用于检查版本更新并将版本更新的拉取请求指向该分支。示例请参见 Customizing Dependabot pull requests to fit your processes

Dependabot 默认行为

当定义了 target-branch

  • 仅检查目标分支上的清单文件以获取版本更新。
  • 所有版本更新的拉取请求均以指定的分支为目标打开。
  • 为此 package-ecosystem 定义的选项不再适用于安全更新,因为安全更新始终使用仓库的默认分支。

exclude-paths

用于指定 Dependabot 在扫描清单和依赖项时应忽略的目录和文件路径。当您想要阻止对某些位置(如测试资源、外部代码或特定文件)中的依赖项进行更新时,此选项非常有用。

Dependabot 默认行为

  • 指定的 directory 中的所有目录和文件默认会包含在更新扫描中,除非被此选项排除。

当定义了 exclude-paths

  • 在针对给定的 package-ecosystem 条目进行更新扫描时,所有匹配指定路径的文件和目录都会被忽略。
参数用途
exclude-paths用于忽略的文件或目录的 glob 模式列表。

支持 glob 模式,例如 ** 表示递归匹配,* 表示单段通配符。模式相对于更新配置中指定的 directory。每个生态系统可以拥有自己的 exclude-paths 设置。

示例

YAML
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"
    exclude-paths:
      - "src/test/assets"
      - "vendor/**"
      - "src/*.js"
      - "src/test/helper.js"

# Sample patterns that can be used-

# Pattern: docs/*.json
# Matches: docs/foo.json, docs/bar.json

# Pattern: *.lock
# Matches: Gemfile.lock, package.lock, foo.lock (in any directory)

# Pattern: test/**
# Matches: test/foo.rb, test/bar/baz.rb, test/any/depth/file.txt

# Pattern: config/settings.yml
# Matches: config/settings.yml

# Pattern: **/*.md
# Matches: README.md, docs/guide.md, any/depth/file.md

# Pattern: src/*
# Matches: src/main.rb, src/app.js
# Does NOT match: src/utils/helper.rb

# Pattern: hidden/.*
# Matches: hidden/.env, hidden/.secret

在此示例中,Dependabot 在扫描更新时将忽略 src/test/assets 目录、vendor/ 下的所有文件、src/ 直接下的所有 JavaScript 文件以及特定文件 src/test/helper.js

vendor

仅被 bundlergomod 支持。

告诉 Dependabot 维护您已经 vendored(即已缓存)的依赖以及清单文件中定义的依赖。当您将代码存放在仓库中时,依赖被称为 “vendored” 或 “cached”。参见 bundle cache documentationgo mod vendor documentation

示例请参见 Controlling which dependencies are updated by Dependabot

Dependabot 默认行为

  • 仅维护在 Bundler 的清单和锁定文件中记录的依赖。
  • 发起安全和版本更新的拉取请求,以更新清单和锁定文件中记录的版本号。
  • 对于 Go 模块,任何 vendored 依赖都会自动被识别并维护,就像已启用 vendor 一样。

vendor 启用时

  • Dependabot 还会维护存放在仓库的 _vendor/cache_ 目录中的 Bundler 依赖。
  • 拉取请求有时会包含对存放在仓库中的依赖的更新。

支持的取值:truefalse

versioning-strategy

支持的生态系统:bundlercargocomposermixnpmpippubuv

定义 Dependabot 应如何编辑清单文件。示例请参见 Controlling which dependencies are updated by Dependabot

Dependabot 默认行为

  • 尝试区分应用程序依赖和库依赖。
  • 对于应用程序,始终提升最低版本要求以匹配新版本。这是 increase 策略。
  • 对于库,尽可能放宽允许的版本要求,以同时包含新旧版本。这是 widen 策略。

当定义了 versioning-strategy 时,Dependabot 将使用指定的策略。

行为
auto默认行为。
increase始终提升最低版本要求以匹配新版本。如果已经存在范围,通常只会提升下限。
increase-if-necessary如果版本要求已经允许新的发布,则保持不变(Dependabot 仍会更新解析后的版本)。否则放宽要求。
lockfile-only仅创建用于更新锁文件的拉取请求。忽略任何需要更改包清单的新版。
widen尽可能放宽允许的版本要求,以同时包含新旧版本。通常只会提升上限。

例如,如果当前版本为 1.0.0,当前约束为 ^1.0.0,不同的策略将产生以下更新:

新版本 1.2.0

  • increase:新约束 ^1.2.0
  • increase-if-necessary:新约束 ^1.0.0
  • widen:新约束 ^1.0.0

新版本 2.0.0

  • increase:新约束 ^2.0.0
  • increase-if-necessary:新约束 ^2.0.0
  • widen:新约束 >=1.0.0 <3.0.0

注意

如果您使用的包管理器尚未支持配置 versioning-strategy 参数,或不支持您需要的取值,该策略的代码是开源的,若您希望特定生态系统支持新策略,欢迎在 https://github.com/dependabot/dependabot-core/ 提交拉取请求。

版本标签

  • 表示软件发布生命周期中的阶段,如 alpha、beta 和 stable 版本。
  • 帮助发布者更有效地分发其软件包。
  • 指示版本的稳定性,并向用户传达该版本在功能和稳定性方面的预期。

Dependabot 能识别不同生态系统中用于预发布、正式版和自定义标签的多种版本标签。

dependabot.yml 文件并不控制您可以使用的版本标签,但您可以在配置选项(例如 ignore)中定义要忽略更新的支持的版本标签。

支持的版本标签

包管理器YAML 值支持的标签示例
Mavenmavenalpha, a, beta, b, milestone, m, rc, cr, sp, ga, final, release, snapshotspring-security-web@5.6.0-SNAPSHOT, spring-core@5.2.0.RELEASE
npmnpmalpha, beta, canary, dev, experimental, latest, legacy, next, nightly, rc, release, stablelodash@beta, react@latest, express@next
pnpmnpmalpha, beta, canary, dev, experimental, latest, legacy, next, nightly, rc, release, stablelodash@1.2.0-alpha, react@alpha, vue@next
yarnnpmalpha, beta, canary, dev, experimental, latest, legacy, next, nightly, rc, release, stablelodash@1.2.0-alpha, axios@latest, moment@nightly

版本标签术语表

  • alpha 早期版本,可能不稳定且功能不完整。
  • beta 相比 alpha 更稳定,但仍可能存在 bug。
  • canary 定期更新的用于测试的预发布版本。
  • dev 表示开发版本。
  • experimental 含有实验性功能的版本。
  • latest 最新的稳定发布。
  • legacy 较旧或已废弃的版本。
  • next 即将发布的版本。
  • nightly 每晚构建的版本;通常包含最新的更改。
  • rc 候选发布版,接近正式发布。
  • release 官方发布版本。
  • stable 最可靠、可投入生产的版本。

顶层 registries

指定 Dependabot 用于访问私有包注册表的认证细节,包括 GitLab 或 Bitbucket 托管的注册表。

registries 键的值是一个关联数组,每个元素由标识特定注册表的键和指定访问该注册表所需设置的关联数组值组成。以下 dependabot.yml 文件在 registries 部分配置了一个标识为 dockerhub 的注册表,并在 updates 部分引用它。

YAML
# Minimal settings to update dependencies stored in one private registry

version: 2
registries:
  dockerhub: # Define access for a private registry
    type: docker-registry
    url: registry.hub.docker.com
    username: octocat
    password: ${{secrets.DOCKERHUB_PASSWORD}}
updates:
  - package-ecosystem: "docker"
    directory: "/docker-registry/dockerhub"
    registries:
      - dockerhub # Allow version updates for dependencies in this registry
    schedule:
      interval: "monthly"

您可以使用以下选项来指定访问设置。注册表设置必须包含 typeurl,通常还需要 usernamepassword 组合或 token

参数用途
REGISTRY_NAME必需: 为该注册表定义一个标识符。
type必需: 标识注册表的类型。
Authentication details必需: 提供认证细节的参数因不同类型的注册表而异。
url必需: 用于访问此注册表中依赖的 URL。协议可选。如果未指定,则默认使用 https://。Dependabot 会根据需要添加或忽略结尾的斜杠。
replaces-base如果布尔值为 true,Dependabot 将使用指定的 url 而不是该生态系统的基础 URL 来解析依赖。

有关可用选项的深入信息以及配置私有注册表时的建议和意见,请参见 Guidance for the configuration of private registries for Dependabot

type 和认证细节

提供访问私有注册表的认证细节的参数会根据注册表 type 而有所不同。

注册表 type必需的认证参数
cargo-registrytoken
composer-repositoryusernamepassword
或使用带有 tenant-idclient-id 的 OIDC
docker-registryusernamepassword
或使用带有 tenant-idclient-id 的 OIDC
gitusernamepassword
或使用带有 tenant-idclient-id 的 OIDC
hex-organizationorganizationkey
hex-repositoryrepoauth-key,可选地还包括相应的 public-key-fingerprint
maven-repositoryusernamepassword
或使用带有 tenant-idclient-id 的 OIDC
npm-registryusernamepassword
or token
或使用带有 tenant-idclient-id 的 OIDC
nuget-feedusernamepassword
or token
或使用带有 tenant-idclient-id 的 OIDC
pub-registrytoken
python-indexusernamepassword
or token
或使用带有 tenant-idclient-id 的 OIDC
rubygems-serverusernamepassword
or token
或使用带有 tenant-idclient-id 的 OIDC
terraform-registrytoken

用于认证的所有敏感数据应安全存储并从该安全位置引用,参见 Configuring access to private registries for Dependabot

提示

如果账户是 GitHub 账户,您可以使用 GitHub 个人访问令牌代替密码。

欲了解更多关于 Dependabot 的 OIDC 支持信息,请参见 OpenID ConnectConfiguring access to private registries for Dependabot

urlreplaces-base

url 参数定义访问注册表的地址。当可选的 replaces-base 参数被启用(true)时,Dependabot 将使用 url 的值而不是该生态系统的基础 URL 来解析依赖。

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