Saturday, December 29, 2007

BuildBot: Continuous Integration System

I've spent some of this holiday season learning how to set up BuildBot (http://buildbot.net/) which is a Continuous Integration system that is especially aimed at open-source style projects: You set up a central "build master", and one or more "build slaves" - and it is very easy for someone to set up a new build slave, so if you have some new platform you want to test a project on you can add a build slave. The build-master admin has to add your slave on the master side, and the slave needs to be able to access the source code repository (CVS in my case.)

I've got three of my Perl projects from my CVS repo running under BuildBot now, and it's all working, except email notification of build status - no email is getting to the mail server, and i have yet to learn how to debug that.

When I commit a change to my CVS repository for one of these projects that kicks off a build on one or more build slaves, which checks out the latest code, and runs all the unit tests. The build master shows the results in a web page.

I've got about 9.5 hours into it, (out of an initial estimate of 12) include various yak-shaving activities.

For now I have the build status pages for the three projects at:
  • Perl-Metrics-Simple - Building using both MakeMaker and Module::Build. This distro provides modules for a utility program to count lines, packages, subs and complexity of Perl files.
  • DBIx-Wrapper-VerySimple - Simplify use of DBI.
  • Text-TagTemplate - Lightweight flexible template parsing module.
See also my earlier posting with a review of a book on Continuous Integration and a link to a comparison of several CI systems.

2007-12-29 update: Starting to add notes to the Perl-QA Wiki.
2008-01-06 update: The email issue was caused by a typo in my master.cfg file.
subject='%(builder) BUILD STATUS', WRONG
subject='%(builder)s BUILD STATUS', CORRECT
Note the missing 's' after the closing parenthesis - it is part of a  Python extended printf statement.
Also, I have now added a fourth buildmaster which builds the Parrot project. All my buildbot configurations are now at: http://www.eigenstate.net/buildbot/masters.html
2008-01-17 update: The open source webkit project uses buildbot - you can see their build status at http://build.webkit.org/

Technorati Tags: , ,

2 comments:

jm said...

why buildbot over cruisecontrol?

Matisse Enzer said...

Good questions Jim - i have used Cruise Control and it is a fine system. BuildBot is specifically designed to support multiple build platforms - all reporting back to a central build master which displays/sends status information. For an example see http://buildbot.eigenstate.net:8040/ - those are status reports from builds happening on two different machines.