Continuous integration is an integral part of an agile setup. Sprint after sprint teams strive to “not break the build” while delivering incremental features. But, while developers focus completely on adding features, it happens sometimes that code errors creep in and render the software unusable. To stop such errors from being integrated to the SCM, a CI server is the gatekeeper that helps keep a tab on code quality. Even if the code is integrated to SCM, a CI server can very quickly tell you what went wrong. In this post, lets look at 6 open source CI server tools, that you can use in your agile setup.
Photo by Siyan Ren
Jenkins
The best known among the CI servers, Jenkins branched from Hudson. It is developed in Java and can be easily installed using “java -jar jenkins.war”. You can also deploy it in servlet containers. Jenkins supports an array of SCM tools - Git, Mercurial, Subversion, Clearcase and many more. You can build Apache Ant, Apache Maven based projects and other shell scripts or windows batch files for pre/post build activities.
- Product page
- http://jenkins-ci.org/
- License
- Creative commons attribution 4.0
- Source code
- https://github.com/jenkinsci
Buildbot
Developed in Python, it is based on Twisted framework. It started as an alternative to the Tinderbox project, and is now used at projects like Mozilla, Webkit, Chromium etc. Buildbot installation has one or more masters and a collection of slaves. The masters monitor source-code repositories for changes, coordinate the activities of the slaves, and report results to users and developers. Slaves run on a variety of operating systems. You can configure Buildbot by providing a Python configuration script to the master. This script can be very simple, configuring built-in components, but full python power is available.
- Product page
- http://buildbot.net/
- License
- GNU GPL V2
- Source code
- https://github.com/buildbot/buildbot
Travis CI
Travis CI is probably one of the most easiest CI servers to get started with. Apart from being open source and free to host on your own infrastructure, Travis CI offers a SaaS version that allows free testing for open source projects. Set up is as easy as linking your GitHub account, giving the relevant permissions and updating the .travis.yaml file with your project specific requirements. A new Travis CI build is triggered after a file is committed to GitHub. Read more here.
*Fun fact: we at Taiga use Travis CI.
- Product page
- https://travis-ci.org/
- License
- MIT License
- Source code
- https://github.com/travis-ci
Strider-cd
Strider is written in Node.JS / JavaScript and uses MongoDB as a backing store. MongoDB and Node.js are prerequisites for installing Strider. Finally you can install it using “npm install”. Though, extremely customizable through plugins, Strider may need you to put your hands in code - not a bad thing to do, but if you would like a more quick setup without much programming effort, you should probably look at other options.
- Product page
- http://stridercd.com/
- License
- BSD License
- Source code
- https://github.com/Strider-CD/strider
GoCD
As with other advanced CI servers, GoCD lets you distribute your builds across different systems and monitor them at one place. Activities that you regularly perform can be added as pipelines in GoCD and then instances of these activities are called as jobs. GoCD comes with an easy to use GUI and a detailed documentation. GoCD was created and then open sourced by ThoughtWorks.
- Product page
- http://www.go.cd/
- License
- Apache license V2
- Source code
- https://github.com/gocd/gocd/
Integrity
Built on Ruby, integrity is available under MIT license. Preconditions to install Integrity are Ruby (>= 1.8.7), RubyGems (>= 1.3.5) and git (>= 1.6). Once you install Integrity, you need to configure it using “init.rb” file. A sample for this file is available in the Integrity product page. Note that Integrity currently works with git only.
- Product page
- http://integrity.github.io/
- License
- MIT License (From Wikipedia)
- Source code
- https://github.com/integrity/integrity