Improving the Efficiency of CI with Uber-commits

Matias Waterloo · Lincoln (University of Nebraska) · 2016

Continuous Integration (CI) is a software engineering practice where developers break their coding tasks into small changes that can be integrated with the shared code repository on a frequent basis. The primary objectives of CI are to avoid integration problems caused by large change sets and to provide prompt developer feedback so that if a problem is detected, it can be easily and quickly resolved. In this thesis, we argue that while keeping changes small and integrating often is a wise approach for developers, the CI server may be more efficient operating on a different scale. In our approach, the CI server monitors the queue of commits to be integrated and merges multiple commits into a single Uber commit, thus avoiding the redundant operations, e.g., testing, associated with integrating each commit individually. If an Uber commit fails during the merge, build or test process, our approach uses a culprit analysis to find the commit(s) causing the failure. An analysis of our approach on an open source project shows that Uber commits can improve both CI server efficiency by 7% to 11%, and reduce developer feedback time by 7% to 30%. Advisor: Sebastian Elbaum and Suzette Person

Read the paper · More papers on PaperTik