The first step to build a successful DevOps toolchain and have a good continuous delivery pipeline is to choose the right continuous integration tool. There was a time when the only choice was either Cruise Control or custom scripts that you had to hack together. However today there is plethora of tools available each with their unique advantages and shortcomings. Below is a list of a few continuous integration servers to get you started.
- Jenkins – Jenkins is arguably, the most popular CI tool of them all. An offshoot of Oracle’s Hudson project, Jenkins has gained immense popularity because of its plugin based architecture. Jenkins is primarily geared towards Maven based projects but can be configured for projects written in any language or can even run shell commands. It has plugins available that allow you to run tests, build code metrics and even build Docker images of your compiled code. Plugins also allow it to checkout code from various version control systems like Git, Subversion, Perforce etc. However the first time setup can be a bit daunting specially if you are running distributed builds or distributed tests, or you build on multiple platforms.
- TeamCity – TeamCity by JetBrains, dubbed as intelligent CI server, supports a lot of languages and build tools without the need to install any additional plugins. The basic version is free which supports 20 build configurations and 1 build agent. Being part of JetBrain suite of products, it integrates well with its other offerings like its issue tracking system YouTrack. It can also integrate with clouds like Azure and AWS and launch build agents on them and scale them down when the load dies down. On the flip side, as you scale out the product license gets expensive.
- Bamboo – Bamboo is a CI offering from Atlassian. Bamboo’s features are comparable to TeamCity. Being from Atlassian it integrates well with other Atlassian products like BitBucket and Jira. However it is free only for the first 30 days. After which you will have to buy one of the licenses which will suite your teams. Bamboo also supports scaling out to clouds and building to and via Docker. Out of the box, it also has support for all the modern technology stacks. However it is only well suited for large enterprise setups.
- CircleCI – CircleCI is a PaaS that gets your up and running very fast provided your code is on Github. It infers your project’s language, code and test structure and automatically parallelizes the tests across multiple servers to speed up testing. CircleCI is currently free for Open Source projects and everyone from Github gets one free build container. After that the cost depends on the scaling and parallelism of the builds needed. CircleCI is well suited for modern web stacks and mobile development. However its lack of support for any other VCS than git is a major shortcoming.
- Travis CI – Travis CI is also a hosted PaaS that is free for Open Source and paid for other projects. Travis spawns a new VM for each build. It supports a host of languages out of the box like Node, Ruby, Python, Java, C# and some of the obscures ones like Haskell, Closure, Go, Smalltalk etc. It also integrates with feedback systems like Slack, Hip chat and good old email. The premium plan is capped at 10 concurrent builds after which you may have to opt for an on-site install.
- Codeship – Another PaaS, CodeShip integrates with Github and Bitbucket. It works well very well with Ruby based projects but also works well with other languages like PHP, Python, Java etc. It supports deployment via Capistrano or via custom scripts and to major cloud providers. Its major selling point is test parallelization by configuring different test pipelines within seconds. Codeship is well suited for small to medium sized teams that develop primarily on Git.
- Semaphore CI – Semaphore is also a hosted platform that is free for Open Source projects. It integrates primarily with Github. It is very branch aware and will tell you if a branch is ready for merging. It will keep building all active branches in parallel and provide feedback on all of them. It also provides feedback on pull requests. Like CodeShip and Travis, it supports test parallelism. It can analyze a project automatically after it is added and start building it. Again its lack of integration with other VCS is a hindrance.
- Drone.io – Drone.io is another up and coming hosted platform that is free for Open Source projects. Following the Github model, you too can have free builds on it but the builds are public. To make your builds private, charges apply. It supports a host of languages like C++, Go, Ruby, Python, Node.js, PHP, Python, Java, etc. Deployments are supported via SSH and to various clouds like Heroku, AppEngine and S3. Again the only VCS supported are Github. It also lacks most of the functionality that other PaaS provide.
What is your favorite CI tool? Did I miss any in my list? Let me know in the comments below.