中文

大规模持续集成:精益、绿色与快速

软件工程 2025-05-20 v2

摘要

在快节奏、大规模的软件开发环境中,特别是在大型 monorepo 中存在并发代码更改的情况下,维护一个所有构建均成功通过的“绿色”主干分支至关重要但也极具挑战。SubmitQueue 是一个旨在应对这些挑战的系统,它推测性地执行构建,并且仅让结果成功的更改落地。然而,尽管其行之有效,该系统在资源利用率方面存在低效问题,导致构建过早中止率较高,且较小的更改落地会因受较大冲突更改的阻碍而延迟。本文引入了对 SubmitQueue 的增强功能,重点在于优化资源使用和改进构建优先级排序。其核心是我们的创新概率模型,该模型区分构建时间较短和较长的更改,以优先安排构建从而实现更高效的调度。通过利用机器学习模型预测构建时间并将其纳入概率框架,我们加速了被耗时较长的冲突更改所阻碍的较小更改的落地。此外,引入推测阈值概念确保仅执行最可能成功的构建,从而减少不必要的资源消耗。在 Uber 的主要 monorepo(Go、iOS 和 Android)中实施这些增强功能后,我们观察到持续集成 (CI) 资源使用量减少了约 53%,CPU 使用量减少了 44%,P95 等待时间减少了 37%。这些改进突显了 SubmitQueue 在管理大规模软件更改同时维护绿色主干方面的提升效率。

关键词

引用

@article{arxiv.2501.03440,
  title  = {CI at Scale: Lean, Green, and Fast},
  author = {Dhruva Juloori and Zhongpeng Lin and Matthew Williams and Eddy Shin and Sonal Mahajan},
  journal= {arXiv preprint arXiv:2501.03440},
  year   = {2025}
}