Open Source Continuous Integration Tools

Open Source Continuous Integration Tools

Continuous integration (CI) is central part of the modern agile software development setup. Sprint by sprint, teams deliver incremental features, while the current status of the build will give them confidence. An open source continuous integration system is the core component to keep the code quality high and deliver on time. Combine a software configuration management (SCM) like Git and a CI system and your team can focus on writing new features and have an instant feedback on the impact of their work.

Why use an open source CI system?

Some companies can not use cloud providers for their tooling. They either are not allowed to do so by contracts with their customers. Or do not want to be dependent on the availability and stability of an external provider. Other companies are hitting the limits of existing providers because they have too many things going on in their development department and the build jobs start piling up and slowing the whole company down. For those companies a self hosted open source CI system can be a big a advantage to grow without interruption.

When using a commercial CI system is not an option many rely on hosting their own toolchain. Here are five open source CI systems that have been proven to the industry.

Jenkins

jenkins open source

 

The Jenkins project is developed in Javan and has been forked off Hudson CI after they have been acquired by Sun Microsystems. Since then it has been heavily improved and extended. Despite its dusty looking interface, Jenkins is one of the most complete and powerful open source CI systems.

Jenkins gets shipped with an endless amount of plugins and extensions. It has support for most SCM tools like Git, SVN, mercurial. Installing and running Jenkins is fairly easy and well documented. It is released under the MIT license and the code can be obtained on the Jenkins GitHub organisation.

 

Buildbot

buildbot

Buildbot is a job scheduling system written in Python, that queues jobs, executes the jobs when the required resources are available, and reports the results back. It supports parallel and distributed execution of builds/jobs across multiple platforms, a wide number of version-control systems, extensive status reporting, and more through plugins. It comes with an extensive documentation. Buildbot is released under the GPLv2 on GitHub.

 

go Continuous Delivery

gocontinuous_delivery

go allows you to set up very complex and customised build pipelines that will make your developers very happy. However there might be some coding involved  to get it where you want it. It uses node JavaScript as a language. go CD has been developed and open sourced by ThoughtWorks. go is released under the Apache v2 license and can easily installed through the npm package manager. As so many good open source tools,go is developed using GitHub and the progress can be followed on their organisation. The documentation very well done and should answer most questions around the concepts.

 

Strider Continuous Delivery

strider

Strider is one of the most extensible open source CI systems. Using node and JavaScript it can virtually do anything you add as a plugin. It has support for most SCM tools and can be deployed with click to Heroku to test it out. Strider is published under the BSD license and is developed by a group of CI enthusiasts.

game pad

Continuous Integration for Open Source

Every open source project these days should have a test suite with a decent coverage. These tests should run on a continuous integration (CI) system to ensure the stability and correctness of the project. However choosing the right tool to run your tests in an automated manner can quite hard with the enormous amount of CI systems.

The right CI tool for your open source Project

Choosing the right tool can be hard and somehow a religious act. Many people will advocate for their favourite tool but do not understand the needs for the project. Important things to consider are: easy configuration, openness, stability and build times.

You will have different needs for your project if you build a self contained library, a tool that connects two different services or an extension for another open source project. You should also keep in mind if you want to run your tests for different language versions or implementations.

At one point in time, when your open source project has been adopted by the community, it can happen that you outgrow your continuous integration system and you need to reconsider your choice. Some projects can – with the help of the community or sponsors – afford to pay for the service they are using. Others move on to a different platform. The continuous integration system should always help you with achieving your goals as an open source project, never be in your way.

Open source friendly continuous integration services

This is a selection and by far a not complete list of existing providers.

Travis CI

Travis CI Logo

Travis CI is the godmother of providing a free hosted CI service to open source projects. They are considered “the home of open source testing”. With over 200 000 projects and more than 126 000 users they are by far the biggest player. Having so many projects and users can sometimes result in a few minutes waiting time until your builds will be queued for execution. This used to be annoying in the past but they seemed to get this under control. The new infrastructure is based on containers and allows you to use predefined Linux containers.

 

Codeship

Codeship Logo

The team at Codeship allows you to use their service for open source projects for free. They lack a good build overview for free projects, so only people who are part of the Codeship project are able to see why a build or a pull request has failed. They release a great number of very helpful posts on their blog.

 

Wercker

Wercker logo

Wercker was one of the first services that was experimenting with Docker containers as a build environment. Their service is free for all users with public and private projects. They offer a high level of flexibility, but only allow you to run two builds at a time.

CircleCI

circle ci logo

Another container-able continuous integration system that supports open source projects is CircleCI.  They allow you to run up to one build in parallel on their system. Using Docker containers makes the build process very flexible if you need special versions of a library or want to craft your own build container.

 

GitLab

GitLab logo open source

As the only service that hosts your source code, has an integrated CI system and is 100% open source, GitLab steps out of the line from the other mentioned services. They offer a hosted version, although it seems they are currently having problems with their stability. It is very interesting for projects that want to have the comfort of a hosted service, but be in control of their data and build processes.

 

Summary

The variety of continuous integration services that support open source projects is amazing and it should be possible for every project to find their fit. Many of them provide a great service and help maintainers to create great and stable tools.