Continuous integration is the practice of immediately testing and integrating codebase changes as developers add them. This best practice results in well-tested and viable products, as well as a more streamlined development process.
Today, continuous integration is seen as virtually mandatory as a development practice, as it prevents untested flaws from going unnoticed and then appearing at a later date, where they then become far more challenging to fix.
The benefits of continuous integration are many, from lowering integration risk on complex projects with multiple team members, a higher final code quality, fewer conflicts between team members, a shorter deployment time, faster code corrections, and multiple code builds to fall back on and trace bugs efficiently.
There are many open source and commercial continuous integration tools currently available that are used to support the practice. However, it can be challenging for firms to determine which particular option will work best for their projects.
Below you will find a brief comparison of some of the top tools that are used to automate or facilitate many of the steps involved in continuous integration including Jenkins, TeamCity, Bamboo, and GitLab CI.
Each tool offers its own benefits and disadvantages, with some like GitLab CI fulfilling more specific CI needs while others like Jenkins being more flexible and versatile.
As the most widely used open source CI solution today, Jenkwas one of the earliest available CI servers. It offers a relatively easy installation in a self-contained Java based program, with packages for OS X, Windows, and Unix-like operating systems.
Designed for users of all experience levels, it is easily configurable and manageable. It is available with a huge library of plugins to enhance its functionality, from building environments, to language support, compatibility with third party tools, and just about anything else.
As one downside, the heavy reliance on plugins can result in fragility and security flaws, due to a lack of support or updates from community developers. It can also be difficult to replicate a configuration on a different instance of Jenkins.
TeamCity is a commercial Java based CI server developed by JetBrains, a software development authority in its own right. TeamCity is available in a free version that can be used on up to 100 build configurations with up to 3 build agents.
Team City is easily configurable right out of the box, even more so than Jenkins, and is compatible with several different operating systems including both Windows and Linux. A well-designed GUI makes it easily accessible even for lesser experienced developers.
A vast library of plugins has been developed by JetBrains and its user community to rival Jenkins. As a result, TeamCity offers many of the same capabilities but with more secure and well-supported plugins.
Many developers prefer TeamCity because of the intuitive interface and out-of-the-box functionality, as well as the better supported plugins.
However, one downside is the limitations of the build configurations for the free version and the cost. For smaller projects and organizations, Jenkins is likely sufficient, but TeamCity is more than capable of fulfilling enterprise-level CI needs.
Also, although TeamCIty has excellent community support, because Jenkins has been around so long its community support is a step above TeamCity and there are many helpful tutorials online.
Atlassian has developed Bamboo, a top CI tool, and is also notable for developing Bitbucket and Jira.
Bamboo is an on-premises CI tool. It once had a cloud version that was later replaced by Bitbucket Pipelines. It is compatible with Windows, OSX and Linux.
It allows for an efficient development workflow with the ability to easily run automated tests, control environment permissions, create multi-stage build plans, assign agents for crucial deployments and builds and more.
There are also over 150 plugins available from Atlassian verified developers and other developers in the Bamboo marketplace to enhance its functionality and provide greater compatibility with third party tools and services.
Bamboo is available in a free version to test for 30 days, after which it must be paid for. However, scalable plans are available for smaller teams.
Compared to Jenkins, Bamboo allows for the ability to test automation out-of-the-box and also naturally features built-in Bitbucker server and Jira software integration. Jenkins configurations can also be imported into Bamboo. For those who already use Jira and Bitbucket, Bamboo or Bitbucket Pipelines is the obvious CI solution.
The cloud version of Bamboo, Bitbucket Pipelines is a similarly feature-rich, modern, and versatile CI tool naturally built into Bitbucket. Like other cloud CI solutions, it may be preferred for the ease of deployment, unified workflow, and ability to easily run multiple builds concurrently.
As another top open source CI solution, Gitlab CI is built into GitLab, a widely used git development tools and repository hosting platform. The GitLab runner that processes builds is written in Go and compatible with Linux, Windows, and OSX.
GitLab CI can be self-hosted or hosted on Gitlab.com. As a result of its coupling with GitLab, GitLab CI is not a viable option for developers who use other repository hosting platforms.
However, for those who happen to use GitLab, the natural integration of GitLab CI is easier to work with compared to installing a separate tool. Features include issue tracking, code reviews, access control and more.
Although Gitlab and Gitlab CI are open source, higher levels of support are available with their commercial solutions.
So Which CI Tool Do You Choose?
These are just a few of the currently available CI options, and there are several things to bear in mind as you decide on a tool.
Consider the functionality needed out of the box, preferred user interface, build process flexibility, cost, scalability, and the tools that your team currently uses.
Although your research likely won’t end here as you make a final decision on a CI tool, we hope this information will help you narrow down the options.
If you are torn between a few different solutions, it’s always a good idea to test each of them out (as most offer a free trial) get familiar with the user interface and see which one truly makes the development process easier for you and your team.