Continuous delivery

Continuous delivery is a software development [practice] in which software is built and managed in such a way that it can be released to production environments at any time.

Continuous delivery is not the same as continuous deployment. Continuous delivery means the software is not automatically deployed to production systems, but just that you could – in theory – manually trigger an automated production deployment at a moment’s notice.

The following constraints on the software delivery process help to achieve continuous deployment:

  • There is always a branch of stable artifacts from which a new production-grade release can be built.
  • Builds and tests are fast and reliable.
  • Deployments are done frequently, in small batches.
  • Deployments are run through an automated deployment pipeline.
  • Rollbacks are triggered automatically if new exceptions are logged in production after a release, else operations staff are notified automatically of new exceptions.

Continuous delivery is the industrialized descendant of the older release early, release often mantra. Where the latter called for frequent releases as a matter of discipline, continuous delivery makes the release path automated and routine, so that a new release is always a moment’s notice away.

See also rolling deployments and rolling release, a related but distinct release model.