Figure 12.15. Deploying files to a remote host in the post-build actions
12.4. Conclusion
Automated Deployment, and in its most advanced form, Continuous Deployment or Continuous
Delivery, can be considered the culminating point of a modern Continuous Integration infrastructure.
In this chapter we have reviewed several Automated Deployment techniques, mostly centered around
Java-based deployments. However, the general principles discussed here apply for any technology.
Indeed, the actual deployment process in many other technologies, in particular scripting languages such
as Ruby and PHP, are considerably simpler than when using Java, and essentially involve copying files
onto the production server. Ruby also benefits from tools such as Heroku and Capistrano to facilitate
the task.
There are several important aspects you need to consider when setting up an Automated Deployment.
First of all, Automated Deployment is the end-point of your CI architecture: you need to define a build
pipeline to take your build from the initial compilation and unit tests, though more comprehensive
functional and automated acceptance tests and code quality checks, culminating in deployment to one
or more platforms. The degree of confidence you can have in your build pipeline depends largely on the
degree of confidence you have in your tests. Or, in other terms, the less reliable and comprehensive your
tests, the earlier in the build process you will have to fall back to manual testing and human intervention.