CI/CD

Also known as: Continuous Integration / Continuous Delivery

practice · computer science · organizing-schema

Frequent automated integration and deployment of small changes.

CI/CD comprises two related but distinct practices that together enable frequent, reliable software delivery. Continuous Integration (CI), articulated by Grady Booch and operationalized by Kent Beck within Extreme Programming in the late 1990s, prescribes that developers integrate their work into a shared mainline frequently (at minimum daily, ideally many times per day), with each integration verified by automated build and test suites. Martin Fowler's 2006 'Continuous Integration' article codified the practices: maintain a single source repository, automate the build, make the build self-testing, everyone commits to mainline daily, every commit triggers a build, fix broken builds immediately, keep builds fast, test in a clone of production, make build artifacts easy to access, automate deployment. Continuous Delivery (CD), substantially elaborated by Jez Humble and David Farley in Continuous Delivery (2010), extends CI by ensuring that the software is always in a deployable state and can be released to production at the push of a button. Continuous Deployment (also CD, distinguished by some authors) goes further: every change that passes automated tests is automatically deployed to production. Together CI/CD enables short feedback cycles, rapid iteration, and the practice of small, low-risk releases that DevOps and modern delivery practices depend on.

Originators

Grady Booch (CI articulation); Kent Beck (operationalization within XP); Martin Fowler (codification); Jez Humble and David Farley (Continuous Delivery) high

Year / Decade

Late 1990s within XP; 2006 (Fowler article); 2010 (Humble-Farley book) high

Primary sources

Fowler, M. (2006). 'Continuous Integration' (martinfowler.com), Humble, J. & Farley, D. (2010). Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation, Beck, K. (1999). Extreme Programming Explained high

Core components

Primary use case

Modern software delivery practice across most software-development contexts; foundation for DevOps and SRE delivery practices; basis for substantial commercial tooling ecosystem (Jenkins, GitHub Actions, GitLab CI, CircleCI, Argo CD, others); enables high-frequency deployment patterns associated with elite-performing teams (DORA research); foundation for safe production deployment in cloud-native systems.

Common criticisms

Lineage

Child of
Extreme Programming
Siblings
DevOps, Trunk-Based Development, Test-Driven Development, Site Reliability Engineering
Derived from
Extreme Programming