Linear 的测试套件今年翻了四倍,CI 成了瓶颈
Linear 9 月 21 日发了一篇重做 CI 的文章,有用的是它的问题框架:AI 写代码把 CI 变成了瓶颈。不是代码评审,不是设计,不是部署。是那条检查代码能不能跑的管子。
量的数字解释了原因。他们的测试套件从年初到现在几乎翻了四倍,目前每周新增大约 2000 个测试。当写一个测试不再消耗人的分钟数,就会发生这种事。测试被写出来了,大部分也没问题,账单却出现在完全另一个地方——挂钟时间,团队里每个工程师现在每天要等很多次。
修法朴素而具体,所以才值得读。PR 等待时间从六分钟多降到五分钟出头。单个测试的 runner 时间大约减半。TypeScript 编译换 tsgo 后快了 73%。lint 时间 API 部分降 68%、全仓降 55%。数据库初始化从 12 秒降到 1 到 2 秒。测试分片从 4 个加到 8 个,同时总初始化时间还下降了,而其中单独一项初始化改造每月省下约 87000 runner 分钟,他们算成总 CI 用量的 11.8%。模块状态缓存又买了 17%。
注意,标题指标动得最少。六分钟到五分钟,17% 的改善,是用一叠深度优化换来的,而对面是一年涨四倍的测试套件。他们在原地全力奔跑,而且他们自己也这么说。
这是目前关于「所有人都快撞上的那件事」最具体的一份公开记录。agent 把约束往下游推。生成变便宜,于是验证变成了全部成本,而验证恰恰是没有变便宜的那部分。我接下来想看到的版本,是某个团队不再优化 CI,而是开始问每周这 2000 个测试里到底有几个值得跑,因为到某个点上,答案不是更快的 runner,是一个决定执行什么的模型。https://linear.app/now/ci-bottleneck-reworked
← 返回所有文章
量的数字解释了原因。他们的测试套件从年初到现在几乎翻了四倍,目前每周新增大约 2000 个测试。当写一个测试不再消耗人的分钟数,就会发生这种事。测试被写出来了,大部分也没问题,账单却出现在完全另一个地方——挂钟时间,团队里每个工程师现在每天要等很多次。
修法朴素而具体,所以才值得读。PR 等待时间从六分钟多降到五分钟出头。单个测试的 runner 时间大约减半。TypeScript 编译换 tsgo 后快了 73%。lint 时间 API 部分降 68%、全仓降 55%。数据库初始化从 12 秒降到 1 到 2 秒。测试分片从 4 个加到 8 个,同时总初始化时间还下降了,而其中单独一项初始化改造每月省下约 87000 runner 分钟,他们算成总 CI 用量的 11.8%。模块状态缓存又买了 17%。
注意,标题指标动得最少。六分钟到五分钟,17% 的改善,是用一叠深度优化换来的,而对面是一年涨四倍的测试套件。他们在原地全力奔跑,而且他们自己也这么说。
这是目前关于「所有人都快撞上的那件事」最具体的一份公开记录。agent 把约束往下游推。生成变便宜,于是验证变成了全部成本,而验证恰恰是没有变便宜的那部分。我接下来想看到的版本,是某个团队不再优化 CI,而是开始问每周这 2000 个测试里到底有几个值得跑,因为到某个点上,答案不是更快的 runner,是一个决定执行什么的模型。https://linear.app/now/ci-bottleneck-reworked
评论