Dependabot Build教程
Dependabot 是 GitHub 提供的一个自动化依赖项管理工具,主要作用是帮助你:
- 安全更新(Dependabot security updates):
- 监控漏洞: 持续扫描你的代码库中使用的所有依赖项(包括库、包、GitHub Actions、Docker 镜像等)是否存在已知的安全漏洞。
- 发送警报: 一旦发现有漏洞的依赖项,它会立即生成 Dependabot 警报 (Dependabot alerts) 通知你。
- 自动修复: 如果你启用了安全更新功能,Dependabot 会自动为你创建一个 拉取请求 (Pull Request, PR),将有漏洞的依赖项更新到能修复该漏洞的最低安全版本。
- 版本更新(Dependabot version updates):
- 保持最新: 即使依赖项没有安全漏洞,Dependabot 也可以根据你的配置,定期检查并为你使用的所有依赖项创建 PR,将它们更新到最新版本。
- 防止技术债务: 帮助你保持项目依赖项的及时更新,防止因版本落后而积累技术债务。
开启dependabot并配置
github仓库页面配置
设置中开启dependabot相关的设置就行了,主要是找到 Dependabot alerts 和 Dependabot security updates,并确保它们被**启用 (Enable)**。
本地配置dependabot版本更新
直接vim .github/dependabot.yml创建配置文件,在这个文件中定义需要监控的包生态系统,文件夹路径和检查的频率。
例如我使用的npm,同时我选择了自动更新小版本并自动合并:
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# 自动合并配置
allow:
- dependency-type: "production" # 只允许生产依赖
# 自动合并小版本更新
versioning-strategy: "auto"
# 分组相似更新
groups:
minor-patches:
patterns:
- "*"
update-types:
- "minor"
- "patch"
# 更新 GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
# 如果你有其他包管理器,可以继续配置
# - package-ecosystem: "pip"
# directory: "/"
# schedule:
# interval: "weekly"
之后,需要进行的操作就是commit一次。
- 将
dependabot.yml文件提交到你的仓库。 - Dependabot 会根据配置开始运行,并为你指定的依赖项创建更新版本的 PR。
Dependabot 的其他重要功能
1. 分组更新 (Grouped Updates)
对于大型项目,一次性更新数百个依赖项会产生大量的 PR,使代码审查变得困难。
- 作用: 允许你将特定依赖项(例如所有开发依赖或所有次要版本更新)组合到一个单独的 PR 中。
- 好处: 减少了 PR 的数量,简化了合并流程,让你可以作为一个整体来测试和部署相关更新。
- 配置方式: 在
dependabot.yml文件中使用groups关键字进行配置。
示例: 将所有
npm的次要版本更新合并到一个 PR 中。# dependabot.yml version: 2 updates: - package-ecosystem: "npm" directory: "/" schedule: interval: "weekly" groups: minor-updates: update-types: # 匹配主要更新、次要更新或补丁更新 - "minor" - "patch"
2. 自动合并 (Auto-merging)
对于你信任的、风险较低的更新(如简单的补丁版本更新),你可以让 Dependabot 自动合并 PR。
- 作用: 如果 PR 通过了你所有的 CI/CD 检查(例如单元测试、集成测试),Dependabot 可以自动将其合并到主分支,无需人工干预。
- 好处: 大幅减少了维护开销,加速了补丁级别的更新。
- 启用方式: 这需要在 GitHub 仓库设置中启用 Auto-merge,并在 Dependabot 创建的 PR 上标记 Auto-merge。
3. 配置拉取请求的标签和分配者 (Labels and Assignees)
为了更好地整合到你的工作流中,你可以自定义 Dependabot 创建的 PR 的属性。
- 作用: 自动为 PR 添加标签(如
dependencies、dependabot)或指定审查人员/负责人。 - 好处: 帮助团队成员根据标签快速筛选和识别 Dependabot PR,并确保它们被正确的人员审查。
- 配置方式: 在
dependabot.yml文件中使用labels和assignees关键字。
示例: 为所有 Docker 更新 PR 添加特定标签和分配负责人。
# dependabot.yml # ... - package-ecosystem: "docker" directory: "/docker" schedule: interval: "monthly" labels: - "docker" - "dependencies" assignees: - "your-github-username"
4. 忽略更新 (Ignoring Updates)
有时可能不想更新到依赖项的最新版本,或者想跳过特定的版本范围。
- 作用: 允许你指定某些包不应该被更新,或应该忽略特定的版本号。
- 好处: 避免了与你的代码不兼容或需要重大重构才能升级的依赖项,让你的工作流更可控。
- 配置方式: 在
dependabot.yml文件中使用ignore关键字。
5. 私有仓库和注册表支持 (Private Repositories and Registries)
Dependabot 可以处理存储在私有源中的依赖项,而不仅仅是公共源。
- 作用: 如果你的项目依赖于内部或私有的包(例如私有的 npm 注册表、Maven 仓库或私有 GitHub 仓库),Dependabot 可以使用你提供的密钥或凭证来访问和检查这些依赖项。
- 配置方式: 在
dependabot.yml文件中使用registries关键字,并结合 GitHub Secrets 来安全地存储凭证。
下一篇记录一下github action的使用。