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:
- Thread Extension
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.
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.
Do you have a page that goes more in the details of how one would setup such an environment?
I basically just followed the getting started page from cruisecontrol
Instead of ant files I simply used bash scripts, our configuration can be found under
Project Automation Book
This book ( http://www.pragmaticprogrammer.com/sk/auto/ ) talk about this topic and show good examples.
You can see Buildix ( http://buildix.thoughtworks.com/ ) an Agile development platform with
1) Subversion for Source Control
2) Trac for a Wiki, Bug-Tracker and general Project Management
3) Cruise Control for Continuous Integration