Tools for Continuous Integration at Google Scale

Google Tech Talk
June 19, 2012
Google NYC

Presented by John Micco

ABSTRACT

John Micco, a member of the Engineering Tools group at Google, will describe the continuous integration system built to help manage testing automation at Google.

Continuous integration systems play a crucial role in modern software development practices, keeping software working while it is being developed. The basic steps most continuous integration systems follow are:

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

This works great while the codebase is small, code flux is reasonable and tests are fast. As a codebase grows over time, the effectiveness of such a system decreases. As more code is added, each clean run takes much longer and more changes gets crammed into a single run. If something breaks, finding and backing out the bad change is a tedious and error prone task for development teams.

At Google, due to the rate of code in flux and increasing number of automated tests, this approach does not scale. Each product is developed and released from ‘head’ relying on automated tests verifying the product behavior. Release frequency varies from multiple times per day to once every few weeks, depending on the product team.

With such a huge, fast-moving codebase, it is possible for teams to get stuck spending a lot of time just keeping their build ‘green’ by analyzing hundreds if not thousands of changes that were incorporated into the latest test run to determine which one broke the build. A continuous integration system should help by providing the exact change at which a test started failing, instead of a range of suspect changes or doing a lengthy binary-search for the offending change. To find the exact change that broke a test, the system could run every test at every change, but that would be very expensive.

To solve this problem, Google built a continuous integration system that uses fine-grained dependency analysis to determine all the tests a change transitively affects and then runs only those tests for every change.

17 Comments on “Tools for Continuous Integration at Google Scale”

  1. Не самая свежая, но очень интересная информация о том, как устроен процесс
    разработки в Google. Интересные данные:

    * 15000+ developers in 40+ offices;
    * 4000+ projects under active development;
    * 5500+ submissions per day on average;
    * Single monolithic code tree with mixed language code;
    * Development on one branch – submissions at head;
    * All builds from source;
    * 20+ sustained code changes per minute with 60+ peaks;
    * 50% of code changes monthly;
    * 75+ million test cases run per day;

    Сама презентация:
    http://www.eclipsecon.org/2013/sites/eclipsecon.org.2013/files/Continuous%20Integration%20at%20Google%20Scale.pdf

    Tools for Continuous Integration at Google Scale

  2. Thanks for the explanation! if possible please provide a link with the
    slides! Great work!

  3. There are slides available from a similar talk here (you can’t post links
    on YouTube, so you’ll have to stitch this together): infoq.com /
    presentations / Continuous-Testing-Build-Cloud

Comments are closed.