Continuous integration

From Freehackers
Jump to: navigation, search

Context

Serious projects use nightly builds and tests for Quality concerns. At freehackers, we felt like we would like having some great tools for that. This article is about the search we did, the tool we choose, and a detailed explanation of how we did.

Our purpose is to have daily builds and tests for several projects. Some of them have unit tests, but others don't.

Big players

First, we needed to decide about our criteria:

  1. Free software. We don't want close source
  2. Maintained.
  3. Good documentation (better if this is provided by the actual authors)
  4. Can work with different Source management tools, different build systems (qmake, cmake, ..), and different languages.

Googling a little, we've found a lot of different tools. Lot of them are really java centric. Most of them are using close source licences.

At the end remained only two tools : Dart, and buildbot. We now study them more thoroughly.

CDash (previously Dart)

Lot of big projects are using CDash. This is edited by kitware, the authors of cmake. Used by eigen.

It's tightly coupled to cmake. It's possible to use for something else, but it's hacky at least.

Documentation is scarce, but a lot better than it once was.

Buildbot

Another common one was buildbot.

Buildbot has been used for several years at freehackers. We stop using it because maintaining it was a nightmare and the interface was ugly. It's based on twisted, which gives it a lot more minus points.

Maintained since it started, long ago (validate point 2) It has good documentation : a architecture overview, a well-written README, and a full manual. The installation is easy. So far, it seems that buildbot fulfill our criteria.

It has two other big advantages:

  • It is written in python. We like python :-)
  • It is available in gentoo. Even labelled as stable

Moreover, this tool is used by some important projects : python itself, Openoffice, Zope, and webkit. This last one is interesting, as it is very kde related.

Openoffice is more or less thinking about developing and using their own tool, inspired by buildbot, but it seems dead.

Jenkins (formerly Hudson)

https://en.wikipedia.org/wiki/Hudson_(software)

The standard nowadays. Written in Java, but has existed for very long, and can probably handle most languages/build systems. I did some experiments in 2010, but the support for cmake was not working.


No

Travis-CI : is probably the most used one today by free software projects. It's written in ruby. It is not really Freely available. Source code is on github, but it's almost impossible to setup your own travis-ci. Or at least it's not documented, nobody has done it, and it looks quite complicated.

Other build software

After this study, other build software have been discovered, but not studied. Maybe for next time.

  • Maven : is not only a CI tool, so it doesn't really fit the bill here. Moreover, it is too much specific on Java.
  • CruiseControl Seems really too much centered on Java.