我们用的是自部署的 gitlab,然后我们的 runner 是和 gitlab 一起跑在一台配置一般的 aws ec2 上。
之前测试过,我们的项目在这台 ec2 上构建的话太慢了,大概需要 30 分钟左右。因为不想浪费钱开台独立的更高配置的服务器(只用来跑 runner 的话利用率太低了,最差的情况可能一天一个 job 都没),所以这些项目我们一直是人工在本机构建和部署。🤔
最近翻 gitlab 的文档发现 gitlab ci 支持「按需」分配 ec2 来跑 ci job:
🔗
https://t.co/UHiXTxiOSX这表示我们可以按需使用更高配置的服务器来跑持续集成!长时间没有新 job 的话 gitlab 会自动帮我们回收服务器 🤗
最终我们项目在 ci 上跑一次 build 的时间缩小到 4 分钟左右,解放了我人工运维的工作 🎉
其他一些细节:
1️⃣ 使用 docker in docker 来构建
2️⃣ 除了一些 linux 基础命令,其余命令全部使用 docker 来跑(例如 node, aws-cli, aliyun-cli 等
3️⃣ 构建产物是 docker 镜像,在 ci 中 push 到 gitlab registry 然后部署到服务器