网易首页 > 网易号 > 正文 申请入驻

Pinterest 工程通过运行时感知分片将 Android CI 构建时间缩短了 36%

0
分享至


作者 | Craig Risi

译者 | 刘雅梦

策划 | 丁晓昀

Pinterest 发布了一份技术案例研究,详细介绍了其工程团队如何通过采用运行时感知的测试分片策略并构建内部测试平台,将 Android 端到端(E2E)持续集成(CI)的构建时间缩短了 36% 以上。在进行变更之前,Pinterest 的 Android CI 管道因测试套件在第三方平台上按包名拆分,导致最慢的分片阻塞了整个构建,从而导致构建时间缓慢且不可预测。通过创建一个自定义的内部平台并重新组织测试的分发方式,Pinterest 实现了更平衡的执行,显著降低了开发人员的反馈延迟。

在他们之前的设置中,Pinterest 依赖于 Firebase Test Lab (FTL)并基于包分组进行测试分片,当一些测试运行时间比其他测试长得多时,会导致工作负载不均衡。这不仅延长了总构建时间,还引入了不稳定性和设置开销,从而增加了每次运行的时间。在评估了第三方替代方案后,该团队得出结论,没有哪个方案能够满足其对原生模拟器支持、可靠性和细粒度控制的要求,而不需要自定义的编排层。这一分析导致了 PinTestLab 的开发,这是一个内部测试基础设施,它在 EC2 实例上运行 Android 模拟器,使工程师能够完全控制调度、设置环境和编排运行时。

其核心创新涉及一种运行时感知的分片) 算法,该算法使用存储在 Pinterest 的 Metro 测试管理系统中的历史测试执行数据,按预期持续时间而不是计数对测试进行分组。与简单的轮询或基于包的分片不同,该算法根据预期运行时间对测试进行排序,并将它们分配给分片,从而最小化各分片执行时间的差异。使用这种方法,团队将最快和最慢分片之间的时间差距从数百秒缩短到几十秒,从而实现一致且更快的构建完成。这种转变将最慢的分片运行时间缩短了 55%,并将每次构建的 CI 反馈时间缩短了约 9 分钟。

这一改进的关键促成因素是 Pinterest 能够收集和使用每个测试的历史运行时和稳定性数据。运行时感知的方法不是按数量平均分配测试,而是根据过去的性能将测试分配给预期首先完成的分片,保持模拟器资源繁忙和尾部延迟较低。实现涉及轻量级排序和使用最小堆数据结构的贪心赋值,这是调度效率和计算简单性之间的一种折衷。

Pinterest 的平台还优先考虑了运维的稳定性:运行时感知的分片逻辑在 Buildkite 中运行,使用历史数据生成每个分片的计划,但如果 Metro 不可用,则会回退到轮询分发,从而确保即使在基础设施出现故障的情况下也能保证 CI 的可靠性。展望未来,该团队正在探索使用消息队列的按需分片,以获得更大的弹性和更细粒度的测试执行,但他们发现当前的方法能够以最小的复杂度提供强大的性能。

这项工作突出了 CI 优化中的两个更广泛的趋势。首先,利用历史经验数据进行工作负载平衡可以在并行测试环境中获得确定性的性能提升。其次,从供应商管理的分片转向内部编排,可以让团队根据自己独特的工作负载特征定制测试执行策略。随着测试套件的规模和复杂性不断增长,Pinterest 的努力为其他面临 CI 等待时间延长的组织提供了一个实用模型,这是现代软件开发中的一个常见挑战。

还有其他公司和项目也采用了类似的方法来提高 CI 性能、测试分片和缩短构建时间,通常使用历史数据、并行化或根据工作负载定制的自定义算法。以下是一些其他示例及其关键细节:

Dropbox 的工程师改进了他们的 Android 测试管道,使用 Affected Module Detector(受 AndroidX 工具的启发)有选择地识别并只运行给定更改中受影响的测试,并通过诸如 Flank/Fladle 等工具进行测试分片。他们还标准化了覆盖率报告,并将设备上的测试转移到 Firebase Test Lab,从而将整个 Android CI 运行时间从 75 分钟左右减少到 25 分钟左右。他们的方法与 Pinterest 的工作精神相似,因为它避免了运行不必要的测试,并应用战略并行来提高 CI 效率。

Shopify 的工程团队构建了一个自定义的测试分离器,它使用历史计时数据来平衡测试分片。通过按执行时间排序测试,然后以一种最小化分片差异的方式分配测试,它们极大地减少了慢分片和快分片之间的不平衡,将总 CI 构建时间从大约 45 分钟减少到大约 11 分钟,并且将分片持续时间差异压缩到大约 5% 以内。这种模式与 Pinterest 的运行时感知的分片概念非常相似,并展示了历史时间指标如何在深思熟虑的情况下产生巨大的 CI 加速。

Square 的内部 CI 工具 Kochiku 支持自动化分片、智能调度和跨数百个 Android 构建分片的分布式缓存。Square 的方法虽然没有 Pinterest 的案例研究那么详细,但它强调了扩展 CI 分片和调度逻辑到分布式环境的重要性,在这种环境中,成百上千的并行测试工件可以独立执行,减少积压并提高资源利用率。

像 Bitrise 这样的平台提供了内置的测试分片和并行化功能,许多应用团队采用这些功能来减少 CI 时间。Bitrise 的用户报告称,使用它的分片和并行执行能力可以减少大约 50% 的测试时间,尽管与 Pinterest 等自定义系统相比,它的抽象层次更高。

Slack 的工程团队通过有条件地跳过不必要的前端构建并重用预构建资产来 优化 端到端 CI 管道,这使得构建速度提高了约 50%,并减少了不稳定因素。虽然没有严格的测试分片,但这个例子展示了基于构建上下文的战略性重用和选择性执行是如何对 CI 反馈循环进行重大改进的。

这些例子说明,虽然 Pinterest 的运行时感知分片技术以简单和有效而闻名,但它适用于许多工程组织正在采用的更广泛的最佳实践:使用历史执行数据来平衡工作负载,最大化并行性,避免不必要的测试执行,以获得更快、更可靠的持续集成反馈。

https://www.infoq.com/news/2025/12/pinterest-ci-build-reduction/

声明:本文为 InfoQ 翻译,未经许可禁止转载。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
蓝营高层人事大地震:郑丽文2招痛击“蓝皮绿骨”,赖清德再失算

蓝营高层人事大地震:郑丽文2招痛击“蓝皮绿骨”,赖清德再失算

探源历史
2026-01-17 09:43:27
乌度卡甩锅全队遭休媒批判:执着于落后理念,就算有库里都不会用

乌度卡甩锅全队遭休媒批判:执着于落后理念,就算有库里都不会用

颜小白的篮球梦
2026-01-17 07:23:28
员工一律禁用AI!50年老牌游戏公司下发最严禁令,CEO直言:“内部没人真的看好”

员工一律禁用AI!50年老牌游戏公司下发最严禁令,CEO直言:“内部没人真的看好”

CSDN
2026-01-16 20:16:21
为什么不能去干涉别人的因果?网友:我30多了才明白这个道理

为什么不能去干涉别人的因果?网友:我30多了才明白这个道理

带你感受人间冷暖
2026-01-11 00:05:11
宗馥莉除名娃哈哈大反转,一切都结束了!

宗馥莉除名娃哈哈大反转,一切都结束了!

财经三分钟pro
2026-01-15 16:52:43
茅台:民企纳税百万可申购平价飞天

茅台:民企纳税百万可申购平价飞天

21世纪经济报道
2026-01-16 18:59:48
党组织派她潜伏,给她二十根金条,她竟打三年麻将,输了个精光

党组织派她潜伏,给她二十根金条,她竟打三年麻将,输了个精光

鹤羽说个事
2026-01-15 14:51:42
深夜,拉升!光刻机龙头,重大利好传来!

深夜,拉升!光刻机龙头,重大利好传来!

证券时报
2026-01-17 08:02:04
曝火箭对保罗毫无兴趣!市场上又多2选择 美媒解析或有意哈登怀特

曝火箭对保罗毫无兴趣!市场上又多2选择 美媒解析或有意哈登怀特

颜小白的篮球梦
2026-01-17 07:51:17
河北婚礼上,新娘穿纱裙给村民舀大锅菜,大爷连看三眼:娶到宝了

河北婚礼上,新娘穿纱裙给村民舀大锅菜,大爷连看三眼:娶到宝了

梅子的小情绪
2026-01-16 19:34:10
退出国家队,赴德国打球后离婚,如今已过去24年,丁松现状如何?

退出国家队,赴德国打球后离婚,如今已过去24年,丁松现状如何?

比利
2026-01-09 12:18:11
为什么伊朗的流血,没能点燃世界的愤怒——错过这次,还要等多久

为什么伊朗的流血,没能点燃世界的愤怒——错过这次,还要等多久

桂系007
2026-01-14 23:48:15
公转私频繁交易,个人承担连带责任!提醒:2026年公转私,这样转!

公转私频繁交易,个人承担连带责任!提醒:2026年公转私,这样转!

祥顺财税俱乐部
2026-01-17 09:09:19
骗了全世界近百年!美国想买的格陵兰岛,压根就不属于丹麦

骗了全世界近百年!美国想买的格陵兰岛,压根就不属于丹麦

青烟小先生
2026-01-16 19:37:13
重磅!中央明确养老金改革方向,2026年起公平养老迈出关键一步

重磅!中央明确养老金改革方向,2026年起公平养老迈出关键一步

来科点谱
2026-01-17 08:52:21
变天了!2026年燃油车迎来降价潮,最大降幅50%,合资车霸榜​​

变天了!2026年燃油车迎来降价潮,最大降幅50%,合资车霸榜​​

夜深爱杂谈
2026-01-14 19:39:52
聂卫平离世1天后,才发现儿女名字取得暗藏深意,字字都有来头

聂卫平离世1天后,才发现儿女名字取得暗藏深意,字字都有来头

银河史记
2026-01-16 16:17:53
穆里尼奥:葡萄牙名帅只有一个!超巨有C罗、尤西比奥、菲戈!

穆里尼奥:葡萄牙名帅只有一个!超巨有C罗、尤西比奥、菲戈!

氧气是个地铁
2026-01-16 19:19:38
3000万吨铜矿蛰伏半世纪!中国每年花500亿买铜,这次终于难忍了

3000万吨铜矿蛰伏半世纪!中国每年花500亿买铜,这次终于难忍了

小鬼头体育
2026-01-16 13:54:32
特朗普通告全球:解决台湾问题,取决于中国决定,外交部斩钉截铁

特朗普通告全球:解决台湾问题,取决于中国决定,外交部斩钉截铁

番茄说史聊
2026-01-17 09:35:23
2026-01-17 10:56:49
InfoQ incentive-icons
InfoQ
有内容的技术社区媒体
11945文章数 51702关注度
往期回顾 全部

科技要闻

8亿周活扛不住烧钱 ChatGPT终向广告"低头"

头条要闻

牛弹琴:欧洲勃然大怒兵发格陵兰岛 就问特朗普怕不怕

头条要闻

牛弹琴:欧洲勃然大怒兵发格陵兰岛 就问特朗普怕不怕

体育要闻

全队身价=登贝莱,他们凭什么领跑法甲?

娱乐要闻

田亮一家新年全家福!森碟变清纯少女

财经要闻

贾国龙、罗永浩均被禁言,微博CEO回应

汽车要闻

林肯贾鸣镝:稳中求进,将精细化运营进行到底

态度原创

亲子
教育
时尚
数码
旅游

亲子要闻

小女孩和爸爸竟然在元旦跳青海摇

教育要闻

进入期末,教师如何做好收尾工作?来看这份工作清单→

今年冬天最时髦保暖的4组搭配,照着穿美出新高度!

数码要闻

消息称苹果M6 MacBook Pro的OLED屏幕本月开始量产

旅游要闻

曲靖罗平棠梨凹村:云海漫苗寨,星河落人间

无障碍浏览 进入关怀版