These days, continuous integration, deployment, and delivery tools are tossed around a lot. And on top of so many operations using these tools, it doesn't seem that there is a decent or standard way to do it. There are some good baselines, such as Jenkins CI, Travis CI, StriderCD, Wercker, etc. But it still seems as though nothing bundles all three and does it well. Deployment has gotten a hell of a lot more complex these days, as well. The process has gone from a simple:
- Deploy the last successful build
To a much more complex and "vulnerable":
- Start up a new lifecycle (eg., with Foreman)
- Build the application for the environment (eg., with Dockerfiles, etc)
- Boot the container(s) (eg., with Maestro, Dokku-alt, etc)
(By vulnerable, I mean more susceptible to failing the whole process with a single point of failure.)
The process still stays complex when you're deploying to virtual machines or baremetal.
The ecosystem of Platforms-as-a-Service and Infrastructures-as-a-Service is getting much bigger and you start seeing more tech, such as Deis, Flynn, and then other lightweight solutions such as Dokku or Dokku-alt. The whole platform can be tied together using tech like Docker with Conduit or another deployment tool.
Point is, deployment and integration is a touchy piece, and can cause a lot of damage if not leveraged
correctly. The industry needs a tool that rolls all three parts of the modern product build system into one intuitive, straightforward tool. As much human error should be factored out of the equation with reliable, mature automation technologies. If you're doing it by hand and it can be automated in a reliable way, you should probably automate it.