Engineering

What Are CI and CD?

Continuous integration and continuous delivery: merging work often and keeping the main branch in a state that could ship at any time.

Definition

Continuous integration is the practice of merging code changes into a shared branch frequently, with an automated build and test run on every change. Continuous delivery extends this so that any passing build is deployable, and continuous deployment goes further by releasing every passing build automatically.

What a pipeline usually runs

  • Install dependencies from a lockfile so the build is reproducible
  • Lint and format checks
  • Type checks where the language supports them
  • Unit and integration tests
  • A build or container image step
  • Deployment to a staging or production environment

Why the frequency is the point

The value comes from small changes rather than from the automation itself. Integrating daily means a conflict spans one day of work. Integrating quarterly means a conflict spans a quarter. The automated checks exist to make frequent integration safe enough to be routine.

Delivery and deployment are different

Continuous delivery means every passing build could go to production, with the release itself remaining a decision. Continuous deployment removes that decision. The distinction matters for teams with regulatory or contractual release constraints, where automatic release is not permitted.

Continuous integration is a software development practice where members of a team integrate their work frequently.

Martin Fowler

References