[Buildbot-devel] Packaging submodules in a tree

Paul Fredrickson qmoto0 at gmail.com
Fri Mar 30 21:52:32 UTC 2007


Hi Buildbot-dev!

I'm setting up my first buildbot network, and it's turning out to be a
rather ambitious endeavor.  What I have so far is successful builds on
multiple platforms, which is a huge step forward! (And I am hugely thankful
for a product like this I can so easily take advantage of!)

What I am looking for next is to add some builders to package up the results
of the builds, and upload them to some place for distribution.  I guess I'm
looking for some consulting on how to best configure that sort of
arrangement.

First, a general question.  It seems that each builder needs it's own
working directory.  Can't I somehow share that working directory between the
bot that does the build and the bot that creates the package? I don't have
redundancy for the same builds, so I can guarantee that the same buildslave
that is supposed to create the .zip package did the windows build, and that
the buildslave that's supposed to create the .dmg package did the mac build,
for example. (If I can't share them, I'll just work around it by having the
package script first change to the build directory.  Sorta hackish, though.)

What I can't figure out is this: Is there some way to pass additional
parameters through the scheduler to the builder to the buildslave?

Why would I want to do this?  Let me describe the setup I have so far.
Maybe it's already off-base somehow.  I have a separate web app that people
will go to to "cut a release".  They enter in comments that go in the
release notes and push a "Release" button.  The app checks everything in (to
Clearcase of all things), creates a new release label (similar to a CVS
tag), and then sends a PBChange message to the buildbot master.  That sends
commands to build on the windows buildslave (in all six DDK environments),
on mac (a universal build), and linux.  Obviously, I'd want the
packager-builders to be dependent on a successful build, but I don't package
the whole tree.

I have multiple modules in this source tree and they are related, but often
released separately.  Consider them modules X and Y, and module my-utils.
When someone pushes the "Release" button, I want the entire tree to be built
and tested, but then I only need to create a new package for the module
being released.  This can be a single command "make_package X.tar.gz", which
will find the list of files for X, and create the archive.  (Or
"make_package X.zip" or "make_package Y.zip", etc.)   I actually have more
than just the three modules, and would hate to have to have a separate
builder for each possible module and package type, where only the one I need
gets invoked.  Especially because I know the scheduler knows which module is
being released (from the PBChange info), I'd like to somehow just pass that
to a single packager builder which invoked the proper command once the build
was done.

Am I explaining my problem clearly?  Does my setup make sense or have I made
it harder on myself by overlooking something?  I don't mind creating a new
scheduler or builder or whatever, either, if someone would be kind enough to
help me through the semantics a little.  I'm still working through the code
and getting used to the twisted way of doing things.

Anyway, thanks again!

--Paul
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://buildbot.net/pipermail/devel/attachments/20070330/3bd54f6b/attachment.html>


More information about the devel mailing list