Chapter 3. Continuous Integration

If you are working by yourself on all of your software projects, Continuous Integration may not be for you. Most of us don't have that luxury, however. Modern software development is almost always done by teams, and sometimes by very large teams. Even in small companies, a single project may involve 5–10 developers, and those developers need to be able to work together in as efficient a manner as possible.

In the past, when most software development followed the waterfall model, developers largely worked independently. Each developer worked on one task, a subsystem, or some other piece of the overall project. Individual developers kept from stepping on each other's toes by using source control systems that relied on pessimistic locking. At some point in the waterfall project schedule, time was set aside for an integration phase, in which each developer checked in all of his or her work, and the long process of integration began. That integration process was inherently unpredictable. If many developers are all working in isolation and then integrating their work, there is no way to predict ahead of time how long that process will take. Because integration traditionally happened at the end of a cycle, that unpredictability came at a critical juncture.

On even a medium-sized project, that integration phase might last a week or two, as everyone figured out how to make all their changes work together. Interfaces might have changed, new components might ...

Get Code Leader: Using People, Tools, and Processes to Build Successful Software now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.