Continuous Integration is a popular topic among software developers and architects. Agile methodology is reshaping the way many technology teams work and manual task automation plays a big role in delivering software more often. Continuous integration and continuous delivery helps teams to be confident to push their code to production at any time.
Good choice of CI tools and services exists for development teams to address delivery lifecycle automation.
Some continuous integration solutions are available only as SaaS (software as a service), others are self-hosted and the team has to install and maintain them on their own servers / infrastructure.
CI solutions also differ by the technology stack they are build upon, as well as having the proprietary and open source licenses.
The goal of this post is to list the most popular and commonly used continuous integration and continuous delivery tools and services in one place. Together with a short summary about each of them.
Continuous Integration Servers
JenkinsCI is the most popular open source continuous integration server out there. JenkinsCI was forked from its parent project Hudson and is now being actively developed under MIT license. It has very active contributor community with over 5000 stars on public GitHub repository.
On PopularOwl, we have several posts about setting up Jenkins CI server and creating various continuous integration flows. We also have Jenkins CI video tutorial series.
GoCD is an open source continuous delivery server created by ThoughtWorks. Much younger then JenkinsCI it was designed around the concept of the continuous delivery pipeline and visualization.
And as JenkinsCI has to yet catch up with visualising delivery pipelines (they are doing some good work recently) GoCD has this built in from the ground up.
Will be interesting to watch how GoCD open source project develops going forward, but so far it looks very promising and might potentially be a great alternative to JenkinsCI for continuous delivery heavy projects.
CloudBees is cloud hosted JenkinsCI platform. It was started by core JenkinsCI contributor Kohsuke Kawaguchi and is aiming to provide enterprise level, hosted CI service. If you don’t want to self-host JenkinsCI, but still prefer to use it for continuous integration, CloudBees is a great potential platform to consider.
Travis-ci is the popular continuous integration solution which is available as SaaS and as on-premise installations for Enterprises. Travis-ci is written in Ruby programming language and application source code is freely accessible on GitHub under MIT license. However, the application is open sourced in pieces, without clear installation instructions.
Shippable is a SaaS continuous integration solution. It aims to enable full continuous delivery, with artifact management and full REST API support. It’s available as SaaS as well as on-premise installation. Shippable says that they support hybrid deployment model, but do not specify what hybrid CI installation means.
CircleCI is cloud-based SaaS application. It offers a free plan with 1500 build minutes per month (not so much if you will be using TDD within the team). Then prices start from $50/month.
It also supports build on both Linux and Mac OSX (something iOS developers would definitely appreciate).
Again, SaaS CI application, without on-premise installation options. Integrates with only 2 code version control systems – GitHub and BitBucket. Has organizations and user role setup and integrates with notification tools like Slack or Hipchat.
This post describes the main differences between above mentioned TravisCI, CircleCI, and Codeship.
Bamboo is continuous integration and continuous delivery tool from Atlassian who are most known for their Jira and Confluence solutions. It, of course, integrates well with the Jira issues and documentation pieces maintained on Confluence. It works best if used with Atlassian BitBucket (code version management).
Overall, we found Bamboo to be quite complex to setup, specifically for continuous deployment pipelines. Its good integration with Atlassian product family is great, but it also is its downside – Bamboo is lacking the integration with toolset outside Atlassian domain.
Another CI solution built by a company which is known for their developer-facing tools – JetBrains.
TeamCity is very compatible with Microsoft dev stack and is being used by many development teams who are using Microsoft platform and runtimes for development. TeamCity has also inbuilt Maven support which is common build tool used by Java developers, however, Java dev teams usually prefer JenkinsCI for their CI flows.
We are happy to add any new Continuous Integration solutions to this list. The comments section under the post is open for all readers, let us know if we have missed any useful CI project.