If you are familiar with the concept of Continuous Integration we can agree that using it has become mandatory.
There are many Continuous Integration tools out there, and in this article, we will go through some of the greatest tools available on the market and see how they fare.
After reading this list you will have a better understanding what tools are available to you and choose the perfect tool for yourself.
So without further ado and in no particular order of importance, I present you the list of the top 8 Continuous Integration tools:
Jenkins is an open-source CI tool written in Java. It originated as the fork of Hudson when the Oracle bought the Sun Microsystems. Jenkins is a cross-platform CI tool and it offers configuration both through GUI interface and console commands.
What makes Jenkins very flexible is the feature extension through plugins. Jenkins plugin list is very comprehensive and you can easily add your own. Besides extensibility, Jenkins prides itself on distributing builds and test loads on multiple machines. It is published under MIT license so it is free to use and distribute.
Cloudbees also offers hosted solution in the form of the Jenkins in the Cloud.
Verdict: One of the best solutions out there, both powerful and flexible at the same time. The learning curve could be a bit steep, but if you need flexibility it very well pays off to learn how to use it.
Official website: Jenkins
TeamCity is the mature CI server, coming from the labs of the JetBrains company. JetBrains has established authority in the software development world, and their tools like WebStorm and ReSharper are used by developers worldwide.
TeamCity offers all the features in its free version, but it is limited to the 20 configurations and 3 build agents. Additional build agents and build configurations need to be purchased. You can find out pricing here.
Out of the box, TeamCity works on many different platforms and has the support for wide variety of tools and frameworks. There are many publicly available plugins, developed both by JetBrains and third parties.
Despite being the Java-based solution, TeamCity offers the best .NET support among the tools on this list. There are also different enterprise packages, that scale by the number of agents needed.
Verdict: Great solution overall, but due to its complexity and price, better suited for enterprise needs.
Official website: TeamCity
Availability: Free for 3 agents and 20 build configurations and paid for additional agents
Platform: Servlet container (On-premises)
Travis CI is one of the oldest hosted solutions out there and it has won the trust of many people. Although it’s mostly known for the hosted solution, it offers the on premise version too in a form of enterprise package.
Travis CI is free for all open source projects hosted on the GitHub and for the first 100 builds otherwise. There are a few pricing plans you can choose from, the main difference being the number of concurrent builds you can run.
Builds are configured using .travis.yml file which contains the build tasks that will be executed upon running the build. It supports a variety of different languages and a good documentation to back them up.
Verdict: A Mature solution that offers both hosted and On-premises variants, loved and used by many teams, very well documented.
Official website: Travis CI
Availability: Free for open source plans and first 100 builds, paid plans for everything else
Platform: Hosted and On-premises
Go is the newest Cruise Control incarnation from the ThoughtWorks company. Excluding the commercial support that ThoughtWorks offers, Go is free of charge. It is available for Windows, Mac, and various Linux distributions.
What makes Go stand out from the crowd is the concept of pipelines which makes the modeling of the complex build workflows easy. On the pipeline concept, how it can help with Continuous Delivery and how it compares to Jenkins pipelines you can read here. It is designed from the scratch to support pipelines and eliminate build process bottlenecks with the parallel execution of the tasks.
Verdict: On-premises solution, great for complex scenarios, free of charge with paid support.
Official website: Go CD
Availability: Free with paid support
Platform: On-premises for Windows, Mac and some Linux distributions
Atlassian is the company focused on providing tools for software development teams and you might know them by their tools like JIRA and Bitbucket. Bamboo originally offered both cloud and On-premises solutions, but in the May 2016 the cloud version was discontinued in the favor of the Bitbucket pipelines (accessible through the left panel of your Bitbucket account).
Being powered by Docker, Bitbucket Pipelines are very efficient and fast solution that is rapidly growing and becoming a worthy successor to the Bamboo Cloud.
Bamboo is free to try for 30 days, and after that, there are two plans for small and growing teams. Being the Atlassian tool, it has the native support for JIRA and BitBucket and you can even import your Jenkins configurations into the Bamboo easily.
Verdict: Great On-premises CI tool that originally offered Cloud solution too. The cloud solution was replaced by Bitbucket pipelines, modern and fast cloud CI tool integrated into Bitbucket. Has a free trial for 30 days, and paid plans after that.
Official website: Bamboo
Availability: Paid with free trial
GitLab CI is an integral part of the open-source Rails project GitLab, which was brought to light by the company GitLab inc. GitLab is hosted on GitLab.com, a free hosted service and it provides detailed git repository management with features like access control, issue tracking, code reviews and much more.
GitLab CI is fully integrated with GitLab and it can easily hook projects using the GitLab API. GitLab runners, that process builds are written in Go language and can run on Windows, Linux, OSX, FreeBSD, and Docker.
Verdict: Phenomenal hosted tool with impressive list of features, offers both free and enterprise solutions.
Official website: GitLab CI
Availability: Free and paid with trial
Platform: Hosted (can be hosted for you on Gitlab.com)
Another cloud alternative that comes from the company with the same name. CircleCI currently only supports GitHub and the list of supported languages includes Java, Ruby/Rails, Python, Node.js, PHP, Haskell, and Skala.
What separates CircleCI from the other tools is the way they offer services. The main pricing block for the CircleCI is the “container”. One container is free and you can build as many projects on it as you need. Once you start adding more containers (at a fixed price each) you can choose the level of parallelization that suits your needs.
There are 5 levels of parallelization (1x, 4x, 8x, 12x and 16x). So, starting with the 16 containers, you can achieve maximum parallelization of 16x on one build. Or you can run 4 builds on 16 containers with 4x parallelization. It is up to you.
And did I mention CircleCI supports Docker?
Verdict: Flexible cloud CI tool that offers parallelization up to 16x. Excellent if you need something built fast and money is not the biggest issue (can reach up to $3150/mo).
Official website: CircleCI
Availability: Free and paid with trial
If you haven’t had enough hosted solutions up until now, here is another one.
Codeship comes in two different versions: Basic and Pro. Basic version offers out-of-the-box Continuos Integration service but doesn’t have docker support and its main purpose is to build applications with common workflows through the UI. Pro version offers more flexibility and docker support.
The basic version comes in several paid packages, where the more expensive ones have more parallelization power. In the pro version, you get to choose your instance type and the amount of parallelization up to 20x). It can get a bit pricey, but some teams may need that kind of power.
Verdict: Powerful hosted solution with docker support, flexible plans suited both for small teams and enterprises alike.
Official website: Codeship
Availability: Free for 100 builds per month and paid for more than that
Honorable mention: Codefresh
Docker can be a bit overwhelming to figure out at first, and the guys from the Codefresh inc. are well aware of that. In addition to working with existing docker files, you can choose from several different templates to ease the migration of your project to Docker containers. UI is clean and intuitive, there is almost no need to parse through the documentation to get started.
The reason this CI tool deserves to be on the list lies in a feature that surprised me a bit. And that feature is launching your images to a stage-like environment. When the project is built and image created, you can launch it to see if it works. That effectively means you get a staging environment without a need to provision additional virtual machines or deploy anything. And that’s great!
Codefresh is still very young and has room for improvement and new features, (eg. .NET core template and more deployment options), but it treats containers as a first class citizen and that makes it an ideal solution for any team that plans to utilize Docker.
Verdict: Easy to use tool with Docker containers at its core and very nice feature of launching the built Docker images to the hosted environment.
Official website: Codefresh
Availability: Free for 200 builds per month, 5 concurrent builds, and 1 hosted environment, paid for additional stuff
Platform: Hosted and On Premises via Kubernetes and Helm Charts
So, what is the perfect Continuous Integration tool for you and your team?
There are several things to keep in mind when choosing the right CI tool for your projects.
On-premises solutions offer a great deal of build process flexibility and the artifacts are stored locally. This may or may not be important to you, but in some cases and for some companies, it might be mandatory.
On the other hand, the hosted solutions offer no hassle setup and greater scalability since you don’t need hardware to host them.
Another important thing is the Docker support. Docker revolutionalized the way we distribute our apps and has become something that should not be ignored. Although the vast majority of the tools support Docker, some take it more seriously than others.
And the last and often neglected aspect is the user interface. I found some of the tools from the list much easier to use than others. You cannot say with the clear conscious that the UI is not important because one of the main roles of any good CI tool is to make a build process easier. It should not be hard or complicated.
Which CI tool do you use? Share your thoughts in the comment section below.