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