CI/CD(continuous integration and continuous deployment) 被提出很久了并逐步流行,因为它确实有很多的好处:例如小而快的迭代可以尽早发现 bug 并更加轻易地修复,代码合并也不会那么痛苦。但说到底还是因为「懒」,当 push 代码成功的那一刻,只想合上笔记本闭上眼睛,静静地等待自动部署成功后滴的一声通知,然后安然入睡 zZ
身为一名 SRE, 之前对自己博客的 CICD 做过不少尝试(感兴趣可以看看):
- 《使用 Buddy 实现博客持续部署》
- 《部署 Hexo 静态博客 (上) - Google Cloud Platform OSS 之旅》
- 《部署 Hexo 静态博客 (下) - 偶遇 Netlify, 优雅地持续部署你的博客》
最近几个月一直用的 Buddy,页面炫酷操作友好,但美中不足的是有点"小气":免费版的内存有 1G 的限制,让人每次操作都有点小心翼翼。。正好 GitHub Action 的 Public Beta 终于排上了号!「喜新厌旧」的程序员又开始折腾起来了。
GitHub Actions 部署配置
明人不说暗话,直接看代码应该就明白啦:
1 | name: Hexo CICD |
个人感受
优点:
- 灵活(flexibility): 脚本而不是界面配置的模式,可以很灵活的满足软件开发的完整生命周期(build, test, package, release, or deploy)
- 大气: 毕竟大厂出品,还是很良心的,每个 vm 的配置:
- 2 core CPUs
- 7 GB of RAM memory
- 14 GB of SSD disk space
- Action Marketplace: 有很多官方和个人的 action 在不断完善并可以轻松的引用(链接),例如有 rsync 的 action 可以直接引用,只需要输入参数即可,它会帮你处理所有用户授权的细节。类似 Docker Hub
- ...
缺点:
上手略难:灵活和用户友好是一对 tradeoff, 和 buddy 拖拖鼠标的填填配置的无脑操作比起来,灵活的 Github actions 还是牺牲了一定的易用性,但毕竟用户都是程序员,应该也不是什么大问题。突然想起来,之前最早宣传的时候,那个炫酷的图为什么再也没看到了,是被放弃了吗??
调试不友好:不知道是不是我姿势不太对,只能不断的 commit/push 触发 action. 理想情况应该可以在本地直接 debug, 并且只对失败的那一步重试。
慢:执行一次需要 1m44s. 因为没有缓存,每次都是重新构建,感觉还是有很大提升空间的。
bug多:不知道是不是公测版的原因,经常碰到奇奇怪怪的 bug...