[Buildbot-devel] scheduler support for multiple repositories

tom fogal tfogal at alumni.unh.edu
Tue Mar 9 03:18:03 UTC 2010


Hi,

please keep your replies on-list.  I'm not your personal buildbot slave
(har, har ;)

Prakash Santhanagopalan <prakashs at gmail.com> writes:
> Thanks for your reply Tom. In my case, assuming change sources are
> c1, c2 and c3, I want to call a sequence of buildsteps if changes are
> committed to c1, call a different set of buildsteps if changes are
> committed to c2 and so on. Is that possible in BBot?

The devs can correct me if I'm wrong, but nope -- you'd need to have a
mapping from Schedulers to change_sources for this, and I don't think
BB supports that.

There is a pretty common solution to this though -- run 3 buildbot
masters.  Masters are pretty lightweight, so it's not really a big deal
for your server.

Slaves are what you need to worry about.  If you've got one physical
machine slaving for multiple masters, the masters don't know about
each other and thus can't intelligently schedule builds.  Whether or
not this is an issue for you depends on how often commits hit multiple
repos at around the same time, and how expensive the processes are on
your slaves.

I'm not sure if there's an idiom to workaround that, at present.  One
master to rule them all is a feature I hear requested often, though.

-tom

> On Mon, Mar 8, 2010 at 5:57 PM, tom fogal <tfogal at alumni.unh.edu> wrote:
> 
> >  Prakash Santhanagopalan <prakashs at gmail.com> writes:
> > > Is there a provision for a buildbot scheduler to feed off a specific
> > > change source in a list of change sources for a single project? How
> > > can I trigger certain builds depending on what change source
> > > triggered the change? Any help is much appreciated.
> >
> > I think, if I understand what you're asking.  Just define a list of
> > change sources instead of a single one.  I've got this in one of my
> > master.cfg's, for example:
> >
> >  c['change_source'] = [ SVNPoller(iv3d_root, pollinterval=80),
> >                         SVNPoller(tuvok_root, pollinterval=40),
> >                         SVNPoller(basics_root, pollinterval=90),
> >                         SVNPoller(scio_root, pollinterval=60) ]
> >
> > later, as a build step:
> >
> >  checkout = source.SVN(svnurl=iv3d_root, mode="copy")
> >
> > Really, our SW consists of the repo given by `iv3d_root', but the other
> > 3 repos are setup as svn:externals.  Unfortunately, BBot will use the
> > revision from say, tuvok_root, if that repo changes, even though it
> > really should always just pull iv3d_root's latest.
> >
> > The attached tiny patch forces it to pull HEAD.  It's a bit annoying
> > and probably breaks the "build this revision" feature, but that's not
> > important for us.
> >
> > If I'm totally off base, maybe the "fileIsImportant" argument of a
> > Scheduler is what you're looking for.
> >
> > Cheers,
> >
> > -tom




More information about the devel mailing list