Skip to content

参考

基于 Dependabot(GitHub 原生)· 核于 2026-07

速查

  • 配置文件.github/dependabot.yml,顶层 version: 2
  • 最小条目package-ecosystem + directory + schedule.interval
  • PR 上限open-pull-requests-limit(默认 5,设 0 关掉 version updates)
  • 只更 / 跳过allowdependency-name/dependency-type)/ ignore(另有 versions/update-types
  • 升级策略versioning-strategy = auto / increase / increase-if-necessary / lockfile-only / widen
  • 生态package-ecosystem 支持 npm / pip / uv / gomod / maven / gradle / cargo / docker / github-actions 等 20+
  • 分组写法groups.update-types 用裸 minor/patchignore.update-typesversion-update:semver-*
  • 合并:PR 下评论 @dependabot merge
  • 安全线:在仓库 Settings 里开 依赖图 + alerts + security updates(不依赖 yml
  • automerge:GitHub 自动合并开关 + Actions workflow(dependabot/fetch-metadata + gh pr merge --auto
  • 别与 Renovate 同开 version / security updates(重复 PR)

dependabot.yml 配置项速查

层级说明
version顶层必填,恒为 2
updates顶层必填,更新配置数组
registries顶层可选,私有源定义
package-ecosystemupdate必填,包管理器(见下表)
directory / directoriesupdate必填,清单路径;directories 支持 glob
schedule.intervalupdate必填,daily/weekly/monthly/quarterly/semiannually/yearly
schedule.day / time / timezoneupdate可选,time 默认 05:00timezone 默认 UTC
open-pull-requests-limitupdate并发 PR 上限,默认 50 = 关 version updates
allowupdate白名单:dependency-name / dependency-type
ignoreupdate黑名单:dependency-name / versions / update-types
versioning-strategyupdate见下表
target-branchupdate落到非默认分支
commit-messageupdateprefix(≤50)/ prefix-development / include: scope
groupsupdatepatterns / exclude-patterns / dependency-type / update-types / applies-to
cooldownupdate冷却期:default-days / semver-*-days
labels / reviewers / assignees / milestoneupdatePR 元信息
rebase-strategyupdateauto(默认)/ disabled
registriesupdate"*" 或名称列表,引用顶层定义

package-ecosystem 取值

npm(npm/yarn/pnpm)、bunpipuvbundlergomodmavengradlecargocomposermixpubswiftelmnugetdotnet-sdkdockerdocker-composehelmterraformgithub-actionsgitsubmoduledevcontainers 等(列表持续扩充)。

versioning-strategy 取值

取值行为
auto(默认)应用:抬高最低版本;库:放宽区间容纳新旧版
increase一律抬高最低版本约束到新版
increase-if-necessary仅当现约束装不下新版时才抬
lockfile-only只更锁文件、不动 manifest(部分生态:npm / bundler)
widen放宽区间同时包含新旧版(部分生态:npm / composer)

@dependabot 评论命令

命令作用
@dependabot rebaserebase 该 PR
@dependabot recreate重建 PR,覆盖你的修改
@dependabot mergeCI 过后合并
@dependabot squash and mergeCI 过后 squash 合并
@dependabot cancel merge取消先前的合并请求
@dependabot reopen重开已关闭 PR
@dependabot close关闭并阻止重建
@dependabot show <dependency name> ignore conditions列出该依赖的 ignore 条件
@dependabot ignore this dependency关闭并不再为该依赖开 PR
@dependabot ignore this major version忽略此大版本
@dependabot ignore this minor version忽略此小版本
@dependabot ignore <dependency name> <update type>仅分组 PR:忽略指定版本类型
@dependabot unignore <dependency name>仅分组 PR:清除全部 ignore 并重开
@dependabot unignore <dependency name> <ignore condition>仅分组 PR:清除指定 ignore 并重开

常见坑

  • 只开 alerts 不会自动修——还要单独开 security updates
  • version updates 需要 yml;安全线不需要——alerts / security updates 是仓库开关。
  • allow / ignore 冲突以 ignore 为准——先 allow 圈定、再 ignore 剔除。
  • directory 不支持通配——多路径 / glob 要用 directories
  • groups.update-types 用裸 minor/patchignore.update-typesversion-update:semver-*——写混不报错但不生效。
  • automerge 要额外 workflow——Dependabot 自身不合并 PR。
  • 别和 Renovate 同时开 version / security updates——会重复开 PR。
  • Dependabot 触发的 workflow GITHUB_TOKEN 权限受限——要显式声明 permissions
  • 30 天没合并停止 rebase;长期不理会自动暂停更新
  • GitHub Actions 的告警只认 semver tag,不认锁定的 SHA

权威链接