Chapter 12. Automated Deployment and Continuous Delivery
Continuous Integration should not stop once your application compiles correctly. Nor should it stop once you can run a set of automated tests or automatically check and audit the code for potential quality issues. The next logical step, once you have achieved all of these, is to extend your build automation process to the deployment phase. This practice is globally known as Automated Deployment or Continuous Deployment.
In its most advanced form, Continuous Deployment is the process whereby any code change, subject to automated tests and other appropriate verifications, is immediately deployed into production. The aim is to reduce cycle time and reduce the time and effort involved in the deployment process. This in turn helps development teams reduce the time taken to deliver individual features or bug fixes, and as a consequence significantly increase their throughput. Reducing or eliminating the periods of intense activity leading up to a traditional release and deployment also frees up time and resources for process improvement and innovation. This approach is comparable to the philosophy of continual improvement promoted by lean processes such as Kanban.
Systematically deploying the latest code into production is not always suitable, however, no matter how good your automated tests are. Many organizations are not well prepared for new versions appearing unannounced every week; users might need to be trained, ...