Lately I have heard a lot of customers explain how they have CB (Continuous Build) and CI (Continuous Integration), and that this replaces CI and CD (Continuous Deployment/Delivery). When I inquire, it seems that the feel that they can simply extend the traditional CI definition to extend the full length of the application pipeline.
However, CI and CD are very different beasts.
While complex, CI is fairly straightforward when it comes to the automation of an applications build process (Here I am including static code analysis, compilation, artifact generation, and movement of the artifact to a repository as my definition of build process).
And a tool such as Jenkins is perfectly adept at orchestrating the CI/build process. But the CI process is a part of the overall CD or application pipeline process and CD requires higher level release automation (Jenkins typically in the CI phase is targeted at the application level, not the release train level). If used for CD, your typical CI tool programming and associated CI infrastructure raises in complexity by orders of magnitude.
CD requires tools (such as CA Continuous Delivery Director or Automic) that can automate all software related delivery tasks, many of which are not within the CI servers authorization or scope. It also requires collaboration as well as automation that span organizational boundaries. A Release Automation tool is specifically targeted to handle the complexities of release trains and multiple application releases at the enterprise level.
So please remember CI is not the new CD!