Question

Cruisecontrol and Hudson are two popular continuous integration systems. Although both systems are able to do the automated continuous builds nicely, it just seems a lot easier to create a batch or bash build script, then use Windows scheduler or cron to schedule builds.

Are there better continuous integration systems available for C++ projects? Or is just using a script and a scheduler the simpler way?

Was it helpful?

Solution

We have been using CruiseControl for CI on a C++ project. While it is the only thing we use ant for, the ant build script for CruiseControl just starts our normal build script, so it is very simple and we haven't really needed to update it in a long while. Therefore the fact that CrusieControl is Java based has not really been an issue at all for us.

The main benefits of using something like cruise control are

  • A nice web page showing build status
  • Email after each build or after failed builds
  • Automatically build after a commit to the source control system
  • A firefox plugin to monitor the build status
  • Shows the output for any build errors.
  • Shows what files have changed since the last build (good for seeing which developer broke the buid)

Of course you can write a script yourself which does all of this, but why do all that work? In the long run the extra initial cost of setting up CruiseControl (or something similar) is probably much less than the cost of maintaining and updating a custom CI build script.

If all you need is to launch a daily build and a simple script started by cron is sufficient for your needs then by all means do that. However, one of the advantages of CI is that you get a build status report after every check in. Writing a script to do that takes more work and CruiseControl already does it.

OTHER TIPS

We use Hudson for CI and SonarQube for code metrics. They're integrated, and Hudson has a handful of plugins that no cronjob can beat.

One great plugin is CI Game, which keeps a score about who breaks the builds and who commits without breaking it. Hudson has plugins to play with VMWare, Selenium, SVN, CSV, Git. It has RSS syndication, which can help you to automate even more everything else.

Hudson is great...

We've been using Dart Dashboard. It's open source but driven by KitWare. They've since changed the name to CDash which I presume is still as capable. We're doing several kinds of testing including nightly and continuous integration across 10 different platforms in both debug and release mode as well as running 1000s of application tests and reporting the results there too.

I've been using Buildbot for the Spring RTS engine project succesfully.

You can also try JetBrains' TeamCity. It's a commercial product but it gives a free license for up to 20 build configurations.

One of the nice features of a continuous integration (CI) tool is that a build gets triggered every time something is checked into your source control repository.

If that is not something you need then you are probably better of using the windows task scheduler or cron jobs.

In addition CI tools also come with a (web) dashboard and advanced logging capabilities.

Your question seems to me more "why would I use a CI tool" then "which CI tool should I use". If a batch script serves your needs, please use that. (Re)creating a build environment only becomes easier if you do not need a CI tool as an additional component. If you want source control triggered build, a dashboard, storage of old build results or other logging, use a CI tool and avoid developing all such functions in batch or shell scripts.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top