What is Continuous Delivery?

Continuous Delivery is the practice of creating & automating a software delivery pipeline that takes code from developer check-in to Production deployment with little to no interaction. If you go from check-in to Production deployment with zero interaction, you've implemented Continuous Deployment, the superlative of Continuous Delivery.

Most teams tend to work towards automating everything, but put in 'gates' at critical decision points allowing for manual intervention, typically on the actual production deploy. One could argue that if the automated acceptance test coverage was thorough enough, these gates shouldn't be necessary & should be removed. If you don't have confidence, add more tests. This should include functional, 'happy path', non-functional, 'sad path', performance, UI/UX, etc.

How to give your team the best chances of success with CD? TDD - Test-Driven Development & BDD - Behavior-driven Development. The practice of writing tests that fail first, the writing the code to make the test pass is an excellent way to ensure you have adequate testing. Automated acceptance testing is the 'secret sauce' to Continuous Delivery. It will indicate the Production worthiness of a team's CD pipeline. With ample test coverage, chances are high that the team will be successful.

Travis Hill