Using an automatic build and testing system

A couple of days ago we setup an automatic build and testing system for our development of Origo. We used CruiseControl as the base of the system.
CruiseControl does check if there were any changes to the source code and launches a build.

For the build we wrote some small bash scripts that first get the most up to date source of our dependencies and our code. After this, everything is built and at the end our test cases are run.
Our testing consists of starting several applications and then executing xml rpc requests on our API interface. To do the testing we choose python as there exists a python unit test framework that generates an xml output which is compatible to the xml output of junit which cruisecontrol can directly parse.

The result of the test runs is then published on a website and mailed to the developers.

Our dependencies are at the moment:

EiffelThread

EiffelStore

Gobo

Eposix

Goanna

Log4e

Thread Extension

Vampeer

So this might even help to detect problems in those libraries as we use the trunk version of the libraries at the moment.

So far we are very happy with our setup and in the coming days we'll add more test cases.

Comments

Till Bay(11 years ago 13/7/2007)

This setup is a great advantage

I'd just like to add here that this setup proves to be extremely useful in the development of Origo. We detect regressions almost instantly and getting an email after a successful build and test of Origo is always cool. The system even let's us know how long it took to do a clean build - at the moment a bit more than twenty minutes.

A similar approach should in my opinion be used for every bigger project.

Manu(11 years ago 16/7/2007)

More details

Do you have a page that goes more in the details of how one would setup such an environment?

Thanks,
Manu

Patrick Ruckstuhl(11 years ago 16/7/2007)

I basically just followed the getting started page from cruisecontrol

http://cruisecontrol.sourceforge.net/gettingstartedsourcedist.html

Instead of ant files I simply used bash scripts, our configuration can be found under