[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 :-(
Thanks,
richard.
>
> --
> 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