[Buildbot-devel] Difficulties with concurrency and dependencies
gerg.ward+buildbot at gmail.com
Thu Nov 29 20:42:01 UTC 2007
On Nov 27, 2007 3:33 PM, I wrote:
> I'm having problems shoehorning our build requirements into Buildbot, and I
> want to bounce some ideas off the mailing list and see what everyone
> thinks. First, let me explain the requirements: our build produces a bunch
> of Linux server-side applications (a mix of mostly Java and C++) and a
> handful of client-side Windows apps (again, a mix of Java and C++). So we
> need at least two build slaves to handle the two different architectures.
> But the builds on the two systems are completely different; only a handful
> of core libraries are actually compiled on both build slaves.
> But wait! A third way has occurred to me: a new type of build step that
> (notionally) blocks until Something Happens. For me, Something would just
> be "each of these other build steps completes".
OK, after much digging through the guts of Buildbot to see how things
hook up, I have a "Blocker" build step that's getting close to what I
want. I'll attach the code; this came straight out of a test
Good things about this implementation of Blocker:
* it works! it blocks its build from running until exactly one other
build step, in any builder, completes
* if the upstream build step succeeds, so does Blocker; if it fails,
so does Blocker
* it updates the status text nicely: "blocking on <builder>.<step>"
while blocking, then e.g.
"<builder>.<step> success" when the upstream step completes successfully
Bad things about this implementation:
* it only supports a single upstream step; I think I know how to fix
this, but wanted to get a simple
version working first. would also be nice to get some feedback on
this simple implementation!
* it blows up if the upstream builder isn't currently running (what
else could I do? I don't know if
the upstream builder has completed, or if it has never even run)
* it ignores the possibility that there might be multiple copies of
the upstream builder running
* it feels like a lot of code for what it is; is there a simpler way
to do this?
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
More information about the devel