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 highly automated.

  • Rollbacks are triggered automatically if new exceptions are logged in production after a release, else operations staff are notified automatically of new exceptions.