[Buildbot-devel] Buildbot newbie question on complex setup

Richard Offer richard at whitequeen.com
Sun Apr 29 17:38:00 UTC 2012

On Apr 28, 2012, at 3:05 PM, Dmitry Nezhevenko wrote:

> On Sat, Apr 28, 2012 at 12:06:54PM -0700, Richard Offer wrote:
>> But this is what I need to piece together
>> 	the linux64 build is product master package
>> 	the linux32 and windows (on dedicated slaves) builds need to build
>> 	and their results (RPMs, MSIs) need to be passed to the linux64
>> 	build factory
>> 	the linux64 build then needs to start a final job on another agent
>> 	(running VMware Studio) to take all the pieces and package them
>> 	into an OVF.
>> Obviously the linux32 and windows builds should be in a BuildSet - but I
>> can leave that for now…
>> What is the best way to share "artifacts" between the various build
>> factories ?
> Do you need to build linux32 and windows and only then start linux64 with
> access to artifacts from two other builds? How these build are "matched"?
> Probably you want to build same VCS revision for all three builds, right?

Actually - with a bit of (lateral) rethinking I can split the four "jobs" (master, linux32, win32, ovf packaging") into separate (self contained) entities with a clear set of dependencies between them...

Trigger the master, linux32, and win32 (independently or as a build set) from SVN pollers, then trigger the OVF packaging once all the preceding steps have completed (including copying their results to separate server).

So I guess the question is now how to I trigger across build factories ? - or are build factories a logical collection and I should be using triggers between the build steps in two different factories ?

From your comments below it seems that using triggers between different factories isn't supported in the current objects ?

If I have to write code which is the best approach (potentially more useful to "not me") - allowing build steps to be triggered from a build step in another build factory or triggers between build factories ?

> I think that this is not possible "out of the box" with just editing
> master.cfg. I can propose followed:
> 1. Both linux32 and windows should use FileUpload step at the end of build
>   to publish artifact to master. You should use some well-known directory
>   name on master that may contain revision id from VCS. For example
>   /srv/builds/$REVISION/
> 2. Once it'll work, you can try to write custom scheduler that will
>   watch for changes in this directory and once two artifacts will be
>   available, trigger linux64 build. You can pass some URL's of artifacts
>   to this build from scheduler.
> It's not so hard as it sounds. As about watching, you can try to use
> something like inotify to avoid polling. Also instead of watching, you can
> try to subclass or write more advanced version of Triggerable scheduler
> that will "fire" a build once both "linux32" and "windows" build perform
> their Trigger step.
> Hope this helps.
> PS. It's pretty easy to trigger buildbot buidlds from Jenkins jobs and
> vice versa. So if you are trying to migrate from one system to another, it
> can be done step by step.

I'm looking to replace Bamboo with either Jenkins or Buildbot, having both just doubles my work :-(



> -- 
> WBR, Dmitry

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://buildbot.net/pipermail/devel/attachments/20120429/d68aafa1/attachment.html>

More information about the devel mailing list