中文

Travis CI 上重启与不稳定构建的实证研究

软件工程 2021-07-20 v2

摘要

持续集成(CI)是一种开发者频繁将代码集成到公共代码库的开发实践。代码集成后,CI 服务器运行测试套件及其他工具以生成一组报告(例如 linter 和测试的输出)。如果 CI 测试运行结果不符合预期,开发者可选择手动重启构建,在同一代码上重新运行相同测试套件;若重启后构建结果与原构建不同,则可揭示构建的不稳定性(flakiness)。在本研究中,我们分析重启构建、不稳定构建及其对开发工作流的影响。我们观察到开发者至少重启了 1.72% 的构建,在我们的 Travis CI 数据集中共计 56,522 次重启构建。我们发现更成熟和更复杂的项目更可能包含重启构建。重启构建大多是初始因测试、网络问题或 Travis CI 限制(如执行超时)而失败的构建。最后,我们观察到重启构建对开发工作流有重大影响。事实上,在 54.42% 的重启构建中,开发者在初始失败后一小时内分析并重启构建。这表明开发者会等待 CI 结果,中断工作流以解决问题。重启构建还将拉取请求的合并速度放慢了三倍,使中位合并时间从 16 小时增至 48 小时。

关键词

引用

@article{arxiv.2003.11772,
  title  = {Empirical Study of Restarted and Flaky Builds on Travis CI},
  author = {Thomas Durieux and Claire Le Goues and Michael Hilton and Rui Abreu},
  journal= {arXiv preprint arXiv:2003.11772},
  year   = {2021}
}