Continuous Integration (CI) is a software development practice where members of a team integrate their work frequently – usually each person integrates at least daily – leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.
The free availability of a wide range of automated build servers, and the fast build times of commonly used enterprise languages such as Java and C#, has meant that of all the software development practices popularised by the Agile movement, CI is almost certainly the one that has seen the widest adoption.
Criteria for Selecting CI Server
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 store the artifacts 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 you should not ignore. 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.
Popular CI Servers
A list of the top Continuous Integration tools: are
Jenkins – 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.
TeamCity – TeamCity is the mature CI server, coming from the labs of the JetBrains company. JetBrains has established authority in the software development world, and developers all over the world use their tools like WebStorm and ReSharper. TeamCity offers all the features in its free version, but it is limited to the 100 build configurations and 3 build agents. Additional build agents and build configurations need to be purchased. Recently JetBrains started offering a cloud trial of TeamCity where you can try it out for one project without a hassle of having to install it on-premises. It lasts 60 days and you can export the project afterward.
Travis CI – 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 on running the build. It supports a variety of different languages and a good documentation to back them up.
Bamboo – 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. By utilizing the power of Docker, Bitbucket Pipelines is offering very efficient and fast builds that and 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.
GitLab CI – GitLab CI is an integral part of the open-source Rails project GitLab, which was brought to light by the company GitLab inc. It 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 integrates seamlessly 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.
CircleCI – 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 Scala. 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.