Many, many years ago, when I was testing an early, pre-1.0 beta of Mozilla, I found a weird link to what the Mozilla developers call "tinderbox". And I was amazed. This is Mozilla's continuous build system, that automatically builds Mozilla on several platforms and runs automated test around the clock. It also has references to who did the last checkins in CVS and what was changed since the last successful build, if the build failed.
This is very practical is you're working in a team that is changing pretty much the same code at the same time, as you can trac easily who's doing what where and detect errors sooner. Also, you can always get an "installation-ready" build at any time.
Sometimes tough you don't want to build your application all the time, but maybe only when someone checks in, that is only when the code changes, which makes sense. What's nicer when you use SubVersion is that the checkins are atomic, and the build number could simply be the revision number of when the checkout was made.
If you're developing in Java then you surely already are using Ant or Maven, testing libraries like JUnit, jMock and EasyMock, and some version control system. In that case I highly recommend CruiseControl.
Here is a nice 2-minute video by Mike Clark about what CruiseControl does.
Also, an advantage you have of using Maven instead of Ant to build the project is that Maven will generate many reports for you as part of the build process, so you can compare many "metrics" about code quality by comparing the reports over time.
I'll be talking in more detail about the automated test libraries I mentioned above in a future post.
Published on September 13, 2005 at 17:18 EDT
Older post: Dependency Injection
Newer post: Using interfaces instead of inheritance