[Buildbot-devel] Triggering a build on all idle red builders?

Dan Kegel dank at kegel.com
Wed Feb 6 05:48:13 UTC 2013

It might be handy to have a button on the builder list page
that forced a build on all idle red builders.

(The use case is "a whole bunch of interdependent
builders with no build coordination, and a user bringing
up a new bot.  Pressing the button once will build everything,
but only the builders with no dependencies will succeed.
After that, pressing the button a second time will build
just the things with one or more dependencies, and
only the builders who depend just on the things that built
the first time will succeed.  etc.  A lot easier than trying
to figure out which builder to trigger next by hand.)

Looking at the IRC interface in buildbot/status/words.py, it
seems like it ought to be easy to hack this together, e.g.

    def command_FORCERED(self, args, who):
            builders = self.getAllBuilders()
            for b in builders:
                state = b.getState()[0]
                if state == 'idle':
                    last = b.getLastFinishedBuild()
                    res = last.getResults()
                    if res == FAILURE:
                        bc = self.getControl(b)
                        reason = "forced: by %s: %s" %
(self.describeUser(who), reason)
                        ss = SourceStamp()
                        bc.submitBuildRequest(ss, reason)

I haven't looked at buildbot/status/web/builder.py yet, but presumably
that's not much more complicated than the irc interface.

Has anybody done anything like this already?

More information about the devel mailing list