CI
CI (持续集成-Continuous Integration) CD (持续部署-Continuous Deployment)
可以通过自动化执行的方式, 减少从开发到部署这个过程中的人工参与
一来可以降低 开发人员/运维人员 的工作量, 二来也可以减少人工参与时可能出现的错误操作
理论上来说, 代码的 格式检查,编译错误,单元测试,打包,发布 等操作都可以放到这个过程中做
但是各个开发团队不同的需求, 使用的语言工具的不同, 最终落地实施的时候可能会千奇百怪, 没有个统一的做法
我在这儿就介绍一下我的环境
我使用的是 gitea + drone ci 组合的cicd系统
从功能上来说, gitlab 更强, 但是对硬件资源的要求也更高
现阶段我的服务大部分都部署在 树莓派 上, 内存有限, 并且性能相对也不高, 所以就没有考虑高资源消耗的方案
上图是部署之后的资源占用情况, 内存使用比我见过的 gitlab + Jenkins 组合低至少 两个数量级, 非常适合资源受限的场景了
再加上我使用 k3s 管理服务, 代码仓库只要能做到 ci 即可, 代码提交后自动打包镜像推送到 nexus3 上, 然后根据心情手动重启更新pod
所以资源能省一点是一点, 取舍之后还是这个方案比较适合我的场景, 后续如果 gitea 的 action 落地了, 可能会考虑更换