Statically Verifying Continuous Integration Configurations

05/11/2018
by   Mark Santolucito, et al.
0

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 a build failure.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
05/29/2019

Configuration Testing: Testing Configuration Values Together with Code Logic

This paper proposes configuration testing as a key reliability engineeri...
research
05/29/2019

Configuration Testing: Testing Configuration Values as Code and with Code

This paper proposes configuration testing--evaluating configuration valu...
research
07/07/2022

Towards Immediate Feedback for Security Relevant Code in Development Environments

Nowadays, the correct use of cryptography libraries is essential to ensu...
research
10/22/2017

Test them all, is it worth it? A ground truth comparison of configuration sampling strategies

Many approaches for testing configurable software systems start from the...
research
11/04/2019

Learning to Fix Build Errors with Graph2Diff Neural Networks

Professional software developers spend a significant amount of time fixi...
research
11/05/2021

Discerning Legitimate Failures From False Alerts: A Study of Chromium's Continuous Integration

Flakiness is a major concern in Software testing. Flaky tests pass and f...
research
09/03/2018

Prof. CI: Employing Continuous Integration Services and Github Workflows to Teach Test-driven Development

Teaching programming using Massive Open Online Courses (MOOCs) is gainin...

Please sign up or login with your details

Forgot password? Click here to reset