[Buildbot-devel] one master - multiple projects

Mark Pauley mpauley at apple.com
Thu May 4 17:42:47 UTC 2006


I've accomplished just this.

First, I hacked the svn_buildbot.py script to report the repository  
name in the changes

fooProj/trunk/foo.txt

instead of trunk/foo.txt

then, I subclassed the Scheduler class like so:

RCS file: /cvsroot/buildbot/buildbot/buildbot/scheduler.py,v
retrieving revision 1.15
diff -U5 -r1.15 scheduler.py
--- buildbot/scheduler.py       12 Mar 2006 11:28:04 -0000      1.15
+++ buildbot/scheduler.py       4 May 2006 17:34:08 -0000
@@ -180,10 +180,13 @@

      def stopService(self):
          self.stopTimer()
          return service.MultiService.stopService(self)

+class OnlyImportantScheduler(Scheduler):
+    def addUnimportantChange(self, change):
+        log.msg("%s: change is not important, discarding %s" % (self,  
change))

  class AnyBranchScheduler(BaseUpstreamScheduler):
      """This Scheduler will handle changes on a variety of branches.  
It will
      accumulate Changes for each branch separately. It works by  
creating a
      separate Scheduler for each new branch it sees."""


and lastly, I did the following to my master.cfg:

thisMaster_projects = [
					  "foo",
					  "bar",
					  "baz"
					]

...

def isChangeImportant(project_name, change):
         project_name_expr = re.compile(project_name)

         for file in change.files:
                 if project_name_expr.match(file) != None:
                         return True

         return False


def make_importanceTest(project_name):
         return lambda change: isChangeImportant(project_name, change)



#fix this to get it's list from the same place as the builders
for project in thisMaster_projects:
         c['schedulers'].append(OnlyImportantScheduler(name=project +  
"_thisMaster",
                                          branch=None,
                                          treeStableTimer=2*60,
                                          builderNames=[project +  
"_thisMaster"],
                                          fileIsImportant= 
(make_importanceTest(project + "/trunk"))
                                 ) )

then set up the builders for each of those projects with the same name  
"foo_thisMaster",  etc.
and you should be good.

The krux was OnlyImportantScheduler and the closure-based trick for  
generating importance tests on the fly.
Not re.compiling every time is also possible by moving the regular  
expression object you're matching against
into the closure.


_Mark



On May 4, 2006, at 7:44 AM, Alexander Lorenz wrote:

> hello,
>
> as discussed in former mailings, it is obvious that buildbot was  
> originally designed to be used in a way that assigns one project to  
> one master.
> as also discussed, this is a limitation that does not meet  
> everybody's building/testing requirements,and we are one of these  
> companies.
> to avoid redundancies and for the sake of simplicity of use for all  
> involved developers, it is very desirable for us to have one master  
> handle  all our projects.
>
> when you try to do this, several obvious issues occur, and i don't  
> know how far these have been noticed and made part of future plans  
> for buildbot.
> the so far most important question being: is there a way that only  
> those changes are shown in the waterfall display, the mails, the  
> blamelist and so on, that are important for one of the schedulers,  
> and not just _all_ changes?
> we have a very large cvs, lots of people committing, but only a few  
> projects built with buildbot.
> the current situation leads to a bloated up waterfall display with  
> changes that noone is interested in, an incorrect blamelist and  
> change list with authors that commited _some_thing, bu nothing of  
> importance to the project.
>
>
> thanks and regards
>
> alex
>
>
>
>
> -------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services,  
> security?
> Get stuff done quickly with pre-integrated technology to make your  
> job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache  
> Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> _______________________________________________
> Buildbot-devel mailing list
> Buildbot-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/buildbot-devel





More information about the devel mailing list