arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 1805.04473cs.SE
收藏

静态集成持续集成

Statically Verifying Continuous Integration Configurations

Mark Santolucito, Jialu Zhang, Ennan Zhai, Ruzica Piskac

摘要:

持续集成(CI)测试是一种流行的软件开发技术,允许开发人员轻松检查他们的代码是否可以成功构建并通过各种系统环境的测试。为了使用CI平台,开发人员必须在代码存储库中包含一组配置文件,用于指定构建条件。不正确的配置设置会导致CI构建失败,这可能需要数小时才能运行,浪费宝贵的开发人员时间并延迟产品发布日期。ECMCI配置具有挑战性,因为用户必须跨许多系统环境管理构建的配置,而他们可能没有本地访问权限。因此,检查CI配置的唯一方法是推送提交并等待构建结果。为了解决这个问题,我们提出了第一种方法,VeriCI,用于在开发人员推送提交以在CI服务器上构建之前静态检查给定CI配置中的错误。我们的关键见解是CI环境中的存储库包含构建历史列表,这些列表提供了时间感知的存储库构建状态。在这种洞察力的驱动下,我们引入了错误分类引导抽象细化(MiGAR)循环,该循环可以在CI中的异构构建环境中自动化部分学习过程。然后,我们使用决策树学习来生成CI配置上的约束,这些约束必须通过对持续集成存储库构建结果的大量历史进行训练来保持构建成功。我们在来自GitHub的真实数据上评估了VeriCI,发现我们预测构建失败的准确率为83%。

英文摘要:

Continuous Integration (CI) testing is a popular software development technique that allows developers to easily check that their code can build successfully and pass tests across various system environments. In order to use a CI platform, a developer must include a set of configuration files to a code repository for specifying build conditions. Incorrect configuration settings lead to CI build failures, which can take hours to run, wasting valuable developer time and delaying product release dates. Debugging CI configurations is challenging because users must manage configurations for the build across many system environments, to which they may not have local access. Thus, the only way to check a CI configuration is to push a commit and wait for the build result. To address this problem, we present the first approach, VeriCI, for statically checking for errors in a given CI configuration before the developer pushes a commit to build on the CI server. Our key insight is that the repositories in a CI environment contain lists of build histories which offer the time-aware repository build status. Driven by this insight, we introduce the Misclassification Guided Abstraction Refinement (MiGAR) loop that automates part of the learning process across the heterogeneous build environments in CI. We then use decision tree learning to generate constraints on the CI configuration that must hold for a build to succeed by training on a large history of continuous integration repository build results. We evaluate VeriCI on real-world data from GitHub and find that we have 83% accuracy of predicting a build failure.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑