Tools for continuous integration at Google Scale

Tools for continuous integration at Google Scale

HomeGoogle TechTalksTools for continuous integration at Google Scale
Tools for continuous integration at Google Scale
ChannelPublish DateThumbnail & View CountDownload Video
Channel AvatarPublish Date not found Thumbnail
0 Views
Google Tech Talk
19 June 2012
Google NYC

Presented by John Micco

ABSTRACT

John Micco, a member of the Engineering Tools group at Google, describes the continuous integration system developed to manage test automation at Google.

Continuous integration systems play a crucial role in modern software development practices as they ensure that the software works as it is developed. The basic steps that most continuous integration systems follow are:

1. Get the latest copy of the code.
2. Build the system
3. Perform all tests.
4. Report results.
5. Repeat 1-4.

This works great as long as the code base is small, code flow is reasonable, and tests are fast. As a code base grows over time, the effectiveness of such a system decreases. As more code is added, each clean pass takes much longer and more changes are squeezed into a single pass. When something breaks, finding and reverting the offending change is a tedious and error-prone task for development teams.

At Google, this approach doesn't scale due to the rate of code flow and the increasing number of automated tests. Each product is developed and released from top to bottom, with automated tests verifying product behavior. Release frequency varies across product teams, from several times a day to once every few weeks.

With such a large, rapidly changing codebase, teams can spend a lot of time trying to keep their build "green" by analyzing hundreds, if not thousands, of changes that were merged into the last test run to find which one broke the build. A continuous integration system should help by specifying the exact change that caused a test to fail, rather than specifying a series of suspect changes or performing a lengthy binary search for the breaking change. To find the exact change that broke a test, the system could run every test on every change, but that would be very expensive.

To solve this problem, Google developed a continuous integration system that uses fine-grained dependency analysis to identify all the tests that are temporarily affected by a change and then runs only those tests for each change.

Please take the opportunity to connect with your friends and family and share this video with them if you find it useful.