AI coding has made CI a bottleneck, so we reworked ours to keep up
an hour ago
- Linear 优化了其 CI 流水线,以适应加速的 AI 驱动开发,尽管测试套件几乎翻了两番,但 PR 等待时间从 6 分钟多减少到仅 5 分钟多。
- 主要改进包括升级到具有更快 CPU 和存储的第三方运行器,以及切换到原生 TypeScript 编译器 tsgo,这使类型检查时间减少了 73%。
- Lint 规则从类型依赖重写为静态分析,将 Lint 时间减少了多达 68% 并降低了内存使用,同时促进了向 Oxlint 的迁移。
- 关键路径优化包括减少检出深度、使用稀疏无 blob 检出、添加重试逻辑以增强网络弹性,以及将非必要的缓存写入移出门控路径,每次 PR 节省了约一分钟。
- 通过使用预构建的 CI 基础镜像、将 pnpm 安装过滤到仅必要的包、以及在重建更快时避免缓存,减少了设置成本,使每个分片的设置时间减少了 44%。
- 测试执行变得更加高效,通过拆分大型测试文件、将分片数从四个增加到八个,以及在安全的情况下使用非隔离的 Vitest 项目,将最慢分片的时间从 5.25 分钟减少到 4.33 分钟。
- 这些改进的结合意味着,如果没有这些优化,今天更大的测试套件将需要大约 11 分钟,但现在只需 5 分钟多,同时还在持续管理不断增长的代码库。
- 每月运行器时间节省包括合并短期检查,节省了约 87,000 运行器分钟(占 CI 总使用量的 11.8%),非隔离测试项目节省了约 17%。
- 未来的计划包括随着代码库的持续增长不断解决新的瓶颈,每周大约新增 2,000 个测试。