Continuous Delivery is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time. It aims at building, testing, and releasing software faster and more frequently. The approach helps reduce the cost, time, and risk of delivering changes by allowing for more incremental updates to applications in production.1)
Continuous delivery does not mean that every commit is automatically pushed to production although that is the goal at some level.
The principle of being able to deploy often in a repeatable fashion to the various deployment environments is more important than having an automated pipeline all the way to production.
For the deployment pipeline, I use a product called Octopus Deploy, which works in conjunction with a source control systems, continuous integration/build systems, and provisioning/configuration systems to enable repeatable, scripted releases of applications into multiple environments using step templates and script modules that can be used on many projects. It is an automated deployment and release management tool. The server runs on on Windows Server and can use push model or pull model deployments to Windows, Linux, and Cloud based targets. It provides a nice UI to show which versions of your application is currently running in each environments.