Continuous integration and continuous delivery (CI and CD) are now a favorite paradigm for software development.
Rather than having breaks in the development cycle for new releases, developers constantly add incremental changes. If a change goes wrong, it's an easy rollback to the previous version. Not every build goes out to end users, but any successful build can.
Containerization makes CI easier. The container guarantees a consistent environment for all installations, so the testing burden is less than in traditional environments. Delivery consists simply of replacing the old container with a new one.
Here are some of the top continuous integration solutions.
Jenkins is an open-source automation server which can serve as a continuous delivery hub. Developers can define a pipeline for building, testing, and delivering a software project. Jenkins plugins let it work directly with all major source control systems, picking up changes as developers commit them. It's Java-based, but plugins let developers use it with a wide range of languages.
When a developer checks in new source code, Jenkins builds the project and runs any necessary automated tests. If problems turn up, a notification goes back to the author. If there aren't any problems, it makes the new build available for deployment.
Jenkins grew out of Oracle's Hudson project, which is also open source. Oracle still maintains Hudson, though it's less widely used than Jenkins.
IBM's UrbanCode, formerly known as AnthillPro, has a long history and is still a popular choice among CI/CD tools. It's a commercial product used by enterprise customers and large development teams. Usually it's used with the WebSphere application server, but it provides support for many environments. UrbanCode consists of two components, called Build and Deploy.
It supports container development, including multi-container applications. UrbanCode Deploy lets the team define multiple environments of an application, such as development, staging, and production. Developers can manage all aspects of the build cycle with a graphical UI.
As a commercial product, UrbanCode doesn't have the wide variety of plugins which Jenkins supports. It may not be easy to use it with development and production environments other than the ones IBM supports.
Atlassian Bamboo is a CI and build server with a free trial period and attractive pricing for small teams. It's free for open source development. For complex commercial projects, the price rises significantly.
The developer commits changes to a code repository, triggering a build process. Automated tests check for errors the change might have introduced, and if the code passes, the developer can proceed to deployment in the same workflow.
Bamboo supports many programming languages and development tools. It offers a large number of add-ons and lets developers create their own. This allows integration with many software environments.
Wercker is a CI/CD tool designed specifically for container development. It promises that you can "work with containers, not code" and "use any stack in any environment." Its central concept is pipelines, which operate on code and artifacts to generate a container. A pipeline, in turn, generates an artifact, which the developers can package into a container.
The development pipeline is special, letting the team do development work directly in containers. This means the code is containerized from the beginning, with a development environment that's almost the same as the production one.
Services, such as databases and custom APIs, can reside in their own container. This allows any number of container images to invoke a containerized service running with specified environment variables.
The Community Edition is available for free. The Virtual Private Pipelines version, which Wercker recommends for commercial projects, starts at $350 per month. They're promising a Virtual Private Cloud release in the future.
Drone is a recent entry in the field, offering a Web-based, command-line CI environment for developers. Project creators using GitHub, Bitbucket, and Google Code repositories can log in from their respective accounts and use commits to trigger a build. The developer gets to see errors and warnings from unit tests on the browser in real time, as if they were scrolling through a terminal window.
Drone is itself containerized and includes strong support for building containerized applications. Plugins are available to aid with notifications, deployment, and integration with remote services.
The use of Drone is free for open-source projects; "starter" and "unlimited" monthly price tiers are available to developers of commercial projects.
What's the comparison?
Jenkins has two obvious advantages: It's free without conditions, and it has plugins for many development environments. UrbanCode can be a good choice for large teams running with IBM-favored tools, but it's not the right choice for all projects. Bamboo offers attractive deals to small and open-source developers. Wercker gives the impression of a work in progress, but it's worth keeping an eye on. Drone looks like a good choice for developers who like the command line, and it's a good choice for open-source projects.
Continuous delivery plus Containership offers a powerful combination for smoothly creating and deploying containerized applications.
To get started with Containership, click here to sign up for a demo.