There should be two tasks for a human being to perform to deploy software into a development, test, or production environment: to pick the version and environment and to press the “deploy” button.
Jez Humble and David Farley in Continuous Delivery
Use appropriate tools to automate deployment to various environments.
Keep track of deployment times.
This improves the development process because no time is wasted on manual deployment tasks or errors caused by manual work.
Once your DTAP street is under control, including automated tests that are kicked off in the development pipeline by a CI server, a further step for automation is automated deployment. In its general sense, here we mean automatically transferring code from one environment to the next one. Because this saves time for manual configuration steps, deployment times to new environments may drop from hours to minutes.
Consider the difference with Continuous Integration: CI is about automating builds and the tests that go with it, within the environment. Automated deployment is about automation of the deployment to each environment, typically when integration (including tests) has succeeded on the previous environment.
When comparing automated with manual deployment, automated deployment is more reliable, faster, more flexible, and simplifies root cause analysis.
Ideally, deployment automation requires no manual intervention ...