GitHub Dependabot 依赖更新
FreeGuideOnline
最新
2026-07-13
yaml version: 2 updates:
- package-ecosystem: "npm" directory: "/" schedule: interval: "weekly" day: "monday" time: "09:00" timezone: "Asia/Shanghai"
### 关键配置选项
#### `package-ecosystem`
指定包管理器类型,常用值包括:
- `npm`
- `pip`
- `maven`
- `bundler`
- `gradle`
- `gomod`
- `docker`
- `github-actions`
#### `directory`
需要监视的依赖配置文件所在目录。对于多模块项目,每个子目录可以单独配置一个条目。
#### `schedule.interval`
更新检查频率:
- `daily`
- `weekly`
- `monthly`
建议生产级项目使用 `weekly` 并搭配特定时间,避免干扰工作流。
#### `labels`
为 Dependabot 创建的 PR 添加标签,方便过滤和管理:
```yaml
labels:
- "dependencies"
- "automated"
open-pull-requests-limit
同时最多允许打开的 PR 数量,默认为 5。若依赖数量庞大,可适度调高,例如 10,防止积压。
ignore
排除特定依赖或版本类型,例如:
ignore:
- dependency-name: "lodash"
- dependency-name: "express"
versions: [">=5.0.0"]
- dependency-name: "*"
update-types: ["version-update:semver-major"]
管理 Dependabot 警报
查看警报
在仓库页面顶部点击 Security 标签,然后选择 Dependabot alerts,可以看到所有已识别的漏洞警报。每条警报会标明严重程度、影响的依赖及建议操作。
关闭与自动消除警报
- 手动关闭:在警报详情页点击 Dismiss alert,并选择原因(如“修复已合并”或“误报”)。
- 自动消除:当 Dependabot 创建的修复此漏洞的 PR 被合并后,相关警报会自动关闭。
备注与排除
你可以在警报详情中添加备注,记录内部决策。如果某些依赖的更新暂时无法进行,可以使用 vulnerability-alerts 配置禁用特定警报的自动 PR 创建。
处理 Dependabot 拉取请求
Dependabot 生成的 PR 与普通 PR 无异,包含详细的 Changelog、发布说明和兼容性评分(如有)。处理时的最佳实践:
- 审查变更:关注测试是否通过、是否引入重大更改(breaking changes)。
- 触发重新运行:如果某个检查失败,在 PR 回复
@dependabot rebase即可重新执行检查和合并冲突解决。 - 常用命令:
@dependabot rebase– 重新调整基础分支。@dependabot merge– 合并 PR(需仓库设置允许)。@dependabot recreate– 关闭当前 PR 并重新创建。@dependabot squash and merge– 压缩合并。
高级配置技巧
分组更新
当许多微小的更新分散在多个 PR 中时,可以使用 Grouped Updates 将它们聚合成一个 PR。在 dependabot.yml 中添加:
updates:
- package-ecosystem: "npm"
...
groups:
babel:
patterns:
- "@babel/*"
react:
patterns:
- "react"
- "react-dom"
这将把匹配 @babel/* 的所有包更新合并到一个 PR 中。
自定义提交消息
调整提交消息格式,方便在 Changelog 中识别:
commit-message:
prefix: "chore"
include: "scope"
生成的提交消息形如 chore(deps): update dependency lodash to 4.17.21。
设置里程碑和指派人
让自动化流程更贴合团队协作:
milestone: 12
assignees:
- "octocat"
reviewers:
- "team-awesome"
允许与忽略特定版本
控制更新的激进程度,比如只接受补丁版本更新:
versioning-strategy: increase
allow:
- dependency-type: "direct"
update-type: "security"
或完全禁止指定包的更新:
ignore:
- dependency-name: "request"
versions: ["2.x"]