[Buildbot-devel] My workaround to multi-repository builds

Ben Hearsum bhearsum at mozilla.com
Mon Sep 12 08:03:52 UTC 2011


If there's somebody willing to take it on, absolutely! IMHO this is one 
of the most painful limitations of Buildbot currently.

In the meantime, how do you feel about upstreaming something similar to 
what I've done? I'm hard pressed to think of a case where the desired 
behaviour is ignoring the revision but using the other parts of the 
SourceStamp.

On 09/09/11 05:17 PM, Dustin J. Mitchell wrote:
> This is a great solution.  I wonder if multi-repo support, or at least a
> fixup of source stamps similar to this, would make a good gsoc project
> next year?
>
> Dustin
>
> On Sep 9, 2011 8:10 AM, "Ben Hearsum" <bhearsum at mozilla.com
> <mailto:bhearsum at mozilla.com>> wrote:
>  > Hi all,
>  >
>  > I've been setting up a Buildbot for Flask (http://flask.pocoo.org/) and
>  > its supported extensions. For this Buildbot, we're polling both the
>  > Flask repository, and each extension's repository. When changes are made
>  > to the Flask repository, Builds are run to run Flask's own unit tests,
>  > and also to run each of the extension's unit tests against the new Flask
>  > code. When changes are made to at extension's repository, its tests are
>  > run against multiple versions of Flask.
>  >
>  > Because we're polling multiple, unrelated repositories (in the VCS
>  > sense), and triggering the same builders in multiple different ways, I
>  > hit some issues with the Source steps. Specifically: when an extension
>  > test builder was triggered from a commit to the Flask repository, the
>  > Source step that checked out the extension's code tried to update to a
>  > revision only present in the Flask repository.
>  >
>  > After some head-desking, I found a pretty simple solution: Ignore the
>  > SourceStamp completely when its repository doesn't match the one set on
>  > the Source step. Concretely, this looks like:
>  > class RepositoryCheckingGit(Git):
>  > def startVC(self, branch, revision, patch):
>  > ss = self.build.getSourceStamp()
>  > if ss.repository != self.repourl:
>  > Git.startVC(self, None, None, None)
>  > else:
>  > Git.startVC(self, branch, revision, patch)
>  >
>  > I'm not sure how generally useful this is, but given that Source steps
>  > ignore the SourceStamp's repository when they have their own set, this
>  > makes a lot of sense to me. I hope it's useful to someone else, too!
>  >
>  > - Ben
>  >
>  >
> ------------------------------------------------------------------------------
>  > Why Cloud-Based Security and Archiving Make Sense
>  > Osterman Research conducted this study that outlines how and why cloud
>  > computing security and archiving is rapidly being adopted across the IT
>  > space for its ease of implementation, lower cost, and increased
>  > reliability. Learn more. http://www.accelacomm.com/jaw/sfnl/114/51425301/
>  > _______________________________________________
>  > Buildbot-devel mailing list
>  > Buildbot-devel at lists.sourceforge.net
> <mailto:Buildbot-devel at lists.sourceforge.net>
>  > https://lists.sourceforge.net/lists/listinfo/buildbot-devel




More information about the devel mailing list