Pinterest工程团队通过运行时感知的分片策略将Android持续集成构建时间缩短了36%

Pinterest工程团队通过运行时感知的分片策略将Android持续集成构建时间缩短了36%

💡 原文英文,约1000词,阅读约需4分钟。
📝

内容提要

Pinterest通过运行时感知的测试分片策略和内部测试平台,将Android持续集成的构建时间缩短了36%以上。新平台利用历史执行数据优化测试分配,显著提高了构建效率,减少了反馈延迟。

🎯

关键要点

  • Pinterest通过运行时感知的测试分片策略和内部测试平台,将Android持续集成的构建时间缩短了36%以上。
  • 之前,Pinterest的Android CI管道因测试套件按包名分割而导致构建时间缓慢且不可预测。
  • Pinterest开发了PinTestLab,一个在EC2实例上运行Android模拟器的内部测试基础设施,提供了对调度和环境设置的完全控制。
  • 核心创新是使用历史测试执行数据的运行时感知分片算法,根据预期持续时间而非数量对测试进行分组。
  • 该方法将最快和最慢分片之间的时间差缩小到几十秒,减少了约55%的最慢分片运行时间。
  • Pinterest的运行时感知分片逻辑在Buildkite中运行,确保CI的可靠性,即使在基础设施出现问题时也能回退到轮询分配。
  • 该工作展示了CI优化的两个趋势:利用历史数据进行工作负载平衡和向内部编排转变。
  • 其他公司如Dropbox和Shopify也采用了类似的方法,通过历史数据和自定义算法提高CI性能。
  • 这些案例表明,使用历史执行数据平衡工作负载、最大化并行性和避免不必要的测试执行是现代软件开发中的最佳实践。

延伸问答

Pinterest是如何缩短Android持续集成构建时间的?

Pinterest通过运行时感知的测试分片策略和内部测试平台,将Android持续集成的构建时间缩短了36%以上。

什么是PinTestLab,它的作用是什么?

PinTestLab是Pinterest开发的内部测试基础设施,运行Android模拟器,提供对调度和环境设置的完全控制。

Pinterest的运行时感知分片算法是如何工作的?

该算法使用历史测试执行数据,根据预期持续时间对测试进行分组,从而减少不同分片之间的时间差。

Pinterest在CI优化中有哪些关键创新?

Pinterest的关键创新包括使用历史数据进行工作负载平衡和开发内部编排系统,以提高测试执行效率。

其他公司是否也采用了类似的CI优化策略?

是的,Dropbox和Shopify等公司也采用了类似的方法,通过历史数据和自定义算法提高CI性能。

Pinterest的CI优化对现代软件开发有什么启示?

Pinterest的CI优化展示了利用历史数据平衡工作负载和内部编排的重要性,适用于应对测试套件增长带来的挑战。

➡️

继续阅读