GitHub 自动更新依赖
本篇教程介绍了在 GitHub 中自动更新依赖(包括但不限与包管理器为 pip
, npm
等)的方法。
Dependabot
Dependabot 是 GitHub 官方的一款依赖更新工具,在配置好后,它会自动定期(周期可以自己配置)从包管理器中扫描最新依赖,与工程中使用的依赖进行比对,如果发现版本的升级,则提出一个 Pull Request 以用于更新依赖。
配置 Dependabot 的方法很简单,只需合理地编辑 .github/dependabot.yml
文件,官方参考文档在此。
例如,项目的包管理器使用 pip
,要求每周扫描一次更新,就可以按照如下进行配置:
1 |
|
Auto Merge
在提出 Pull Request 后,就需要使用 GitHub Actions 执行 CI 以合并分支,编辑 .github/workflows/auto-merge.yml
文件如下:
1 |
|
按照自动化运维的规范,应先进行测试再合并,以保证代码能适应新版本的依赖。自动化测试的代码应添加在 steps
的第一步(因为第一步也就是唯一的步骤就是合并分支)之前,确保能通过测试后,就可以放心进行分支的合并了。否则,应该 throw 一个错误出来,供开发人员查阅。
优点与缺点
优点是这种操作节约了时间,并可以持续确保依赖的最新性,非常适合模板的仓库,因为模板的仓库不是最新就没有意义了,没有人愿意从一段旧代码开始自己的工作。
缺点是如果测试不够规范,将会产生一些安全问题,包括但不限于有些开发人员在新版本的依赖中故意引入缺陷等行为。所以对于稍大规模的项目,仍然建议人工审查 Pull Request,尤其是这种由自动化方式创建的 Pull Request,它们的恶意行为最不易被察觉。
GitHub 自动更新依赖