CI 流水线该不该用:先看它解决的问题是不是你的问题
CI 时间超过 15 分钟后,开发者开始绕过它,直接在本地合并
它擅长的是合并前的自动检查;如果你只是构建与发布,用现成的东西更省事。
先说结论
CI 的目标不是「跑全」,是「快到大家愿意等」,超过 15 分钟就该拆
- 适合:合并前的自动检查
- 不适合:定时回归任务
- 学习成本:依赖缓存命中率从 0 提到 80%,安装阶段通常能省 60-70% 的时间
- 最大收益:测试按文件切成 4 片并行,总时长接近原来的三分之一,不是四分之一
- 最大风险:所有任务串行跑,一次 CI 40 分钟,最后没人等结果
它到底解决什么
CI 时间超过 15 分钟后,开发者开始绕过它,直接在本地合并。
换句话说,它把「合并前的自动检查」这件事从手工变成可重复的流程。这是它真正的价值,而不是功能列表的长度。
什么时候不该用
下面三种情况,用了反而更累:
所有任务串行跑,一次 CI 40 分钟,最后没人等结果
缓存 key 用固定字符串,依赖升级后还在用旧缓存
失败自动重试三次,把不稳定的测试掩盖成偶发
和替代方案比
PR 跑全量、主干只跑增量,是最省机器的一种分工。
| 方案 | 上手成本 | 适用规模 | 代价 |
|---|---|---|---|
| CI 流水线 | 中等 | 中大型 | 需要维护 |
| 本地跑测试再合并 | 低 | 小型 | 定制能力弱 |
| 只跑 nightly 全量 | 低 | 一次性任务 | 不可维护 |

这台工具的关键细节
几个决定长期体验的点:
- 依赖缓存命中率从 0 提到 80%,安装阶段通常能省 60-70% 的时间
- 测试按文件切成 4 片并行,总时长接近原来的三分之一,不是四分之一
- PR 跑全量、主干只跑增量,是最省机器的一种分工
- 缓存 key 带上锁文件哈希,锁一改就自动失效,比手动清缓存可靠
我的建议
CI 的目标不是「跑全」,是「快到大家愿意等」,超过 15 分钟就该拆。
先用两周,跑一个真实的小任务;两周后你还想用它,再谈长期。
还有几处容易忽略的
都是小地方,但出问题时往往就卡在这里。
- CI 时间超过 15 分钟后,开发者开始绕过它,直接在本地合并
- 构建产物不保留,出问题时无法复现当时那一版二进制
工具是解法,不是身份。
评论 (3)
「先看日志再猜」这句话值一篇文。
备份没验证过等于没有,这条我认。
最小可用配置这个说法很好,先跑起来再优化。
发表评论