[Buildbot-devel] understanding buildbot & writing custom 'process'
warner-buildbot at lothar.com
Fri Dec 12 17:09:41 UTC 2003
> > Those are just customizations of the base classes for Twisted. Since
> > Twisted was the first customer for the buildbot, its customizations
> > got included into the package. They are handy as examples though. :-)
> Yes, they are.. although I imagine that some part of it could be really
> promoted to 'generic' buildbot classes/behaviour (especially the
> unittestresult parsing is something I'm going to 'reuse' for my project)
Absolutely. Code to parse the output of commonly-available test suites is
most welcome :).
> I want to use the same buildbot master to control slaves for different
> sources. Imagine to use the same buildbot for both the twisted and the
> glib projects.
> Change notifications for twisted should only trigger 'twisted builders'
> (slaves) and the same goes for the glib ones.
> Can this currently be done or not with buildbot?
It can be done, but the current design is really intended for one buildmaster
per source tree.
Each Builder has a method which is called isFileImportant(), which is given a
filename and asked if it should trigger a new build. The Twisted example
classes use this to ignore changes made in the "sandbox" (a subdirectory used
for experimental code) and a few trivial documentation directories. Those
"unimportant changes" are accumulated and deferred until an "important
change" causes a build to run.
Each build gets a list of the Changes that went into it (both important and
unimportant). This makes it possible to do CVS updates of individual files
(which, for very large source trees, is a lot faster than a project-wide
update; however it has occasional problems with new directories).
This means you could probably write a Builder subclass that used
isFileImportant() to accomplish your goal. Just remember that the builds that
didn't fire because of any particular Change still remember that the Change
happened, they're just waiting until an "important" one takes place before
they start the timers.
More information about the devel