[Buildbot-devel] Why 3-level separation?

Greg Ward gerg.ward+buildbot at gmail.com
Wed Feb 11 13:48:35 UTC 2009

On 11 February 2009, Alexey Eremenko said:
> I have read the docs, but I am still struggling to understand why
> BuildBot has 3 level hierarchy (factory/builder/build-slave) ?

Actually I think a better way to look at the hierarchy is:

  (factory/builder) -> build -> build step

where the build step can (but does not have to) run code remotely,
on the slave.  (It always runs code on the master, starting in start()
and ending in finish().)

The important difference is lifetime.  The factory and builder are
both long-lived: I like to think of a complete column in the waterfall
view, from the beginning of time to right now, as a "builder".  (It's
a little more complicated than that because some of that info lives on
disk and only some of it is in memory, but never mind that.)

Each "build", on the other hand, is spawned from a builder, and has a
limited lifetime.  If it takes 10 min to checkout/configure/make/test
your project, then the corresponding build object lives for 10 min.

Finally, a build step is one component of the build.  It sticks around
for however long it takes to do the checkout, or make, or whatever.
Build steps are created from the build's builder's factory.  That's
where the factory comes into things.


More information about the devel mailing list