There are Jason's notes for setting up the buildbot master The buildbot master was installed in a VM on debian lenny. The VM has the following configuration: * 10GB disk (partitions: 3GB root, 500MB swap, the rest for /home * RAM 384MB When installing lenny, uncheck desktop system and check web server edit sources.list and comment out the cdrom source root# apt-get build-dep buildbot root# apt-get install git-core root# apt-get install openssh-server login as buildmaster user % git clone git://github.com/jaysoffian/buildbot.git buildbot-src % cd buildbot-src/ % git checkout -b gerrit e4c0d458374b9a0ce34c // fix a debugclient bug % git cherry-pick 9ab140a03378baa5ec98 // allow for not clobbering the git tree each build % git cherry-pick 7fa5137bbc449144d76334bd366920d8b6a7c2c0 // following http://buildbot.net/buildbot/docs/0.8.1/Installing-the-code.html#Installing-the-code // follow 8.1 docs % python setup.py build root# python setup.py install root# apt-get install python-json root# apt-get install python-jinja // cvs is required to make the buildbot test suite go all clear root# apt-get install cvs // run the unit tests % PYTHONPATH=. trial buildbot.test % mkdir $HOME/buildbot/master/openafs // create the buildbot master % buildbot create-master $HOME/buildbot/master/openafs edit config ... repourl="git://git.openafs.org/openafs.git" from buildbot.process import factory from buildbot.steps.source import Git from buildbot.steps.shell import Compile from buildbot.steps.shell import Configure f1 = factory.BuildFactory() f1.addStep(Git(repourl=repourl, mode="clobber")) f1.addStep(Configure(command=["sh","regen.sh"])) f1.addStep(Configure(command=["./configure","--enable-checking"])) f1.addStep(Compile(command=["make"])) f1.addStep(Compile(command=["make","dest"])) b1 = {'name': "buildbot-full", 'slavename': "debian-i386", 'builddir': "full", 'factory': f1, } c['builders'] = [b1] ... ================================================= // test config % buildbot checkconfig master.cfg // start the buildmaster % /usr/bin/buildbot start $HOME/buildbot/master/openafs check http://localhost:8010 for web output //install openafs builddeps root# apt-get build-dep openafs root# apt-get install automake1.9 linux-headers-2.6-686 flex bison dblatex docbook-xsl root# useradd -d /home/buildslave -m buildslave buildslave% mkdir -p $HOME/buildbot/slave/openafs buildslave% buildbot create-slave $HOME/buildbot/slave/openafs localhost:9989 debian-i386 PASSWORD edit files in /home/buildslave/buildbot/slave/openafs/info // start the buildslave buildslave% buildbot start $HOME/buildbot/slave/openafs /// begin setting up gerrit stuff // create ssh key for buildbot // sign in to gerrit and add buildbot ssh key buildmaster% touch ~buildmaster/buildbot-src/contrib/__init__.py Here is a working config snippet (minus the slave passwords) for gerrit+buildbot: import sys sys.path.append('/home/buildmaster/buildbot-src/contrib') from gerrit import GerritChangeSource #c['change_source'] = GerritChangeSource() ## configure the Schedulers from buildbot.scheduler import Scheduler, Periodic mybuilders = [] mybuilders.append("debian-linux-i386-builder") mybuilders.append("win2008-builder") stable14_builders = [] stable14_builders.append("debian-linux-i386-builder") c['schedulers'] = [] c['schedulers'].append(Scheduler(name="all", branch=None, treeStableTimer=30, builderNames=mybuilders)) c['schedulers'].append(Periodic("every_4_hours", ["irix-builder"], 4*60*60)) from gerrit import GerritScheduler c['schedulers'].append(GerritScheduler("gerrit_scheduler", mybuilders, branches=["master","openafs-devel-1_5_x"])) c['schedulers'].append(GerritScheduler("gerrit_stable_scheduler", stable14_builders, branches=["openafs-stable-1_4_x"])) ####### BUILDERS repourl="git://git.openafs.org/openafs.git" from buildbot.process import factory from buildbot.steps.source import Git from buildbot.steps.shell import Compile from buildbot.steps.shell import Configure from buildbot.steps.shell import ShellCommand f1 = factory.BuildFactory() #f1.addStep(ShellCommand(command=["git","clean","-xdf"])) #f1.addStep(Git(repourl=repourl, mode="clobber")) f1.addStep(ShellCommand(command=["sleep","120"])) f1.addStep(Git(repourl=repourl, mode="update", ignore_ignores=True, retry=[120,60])) f1.addStep(ShellCommand(command=["sh","regen.sh"])) f1.addStep(Configure(command=["./configure","--enable-checking","--enable-supergroups","--enable-namei-fileserver"])) f1.addStep(Compile(command=["make"])) f1.addStep(ShellCommand(command=["make","dest"])) b1 = {'name': "debian-linux-i386-builder", 'slavename': "debian-i386", 'builddir': "full", 'factory': f1, } c['builders'] = [b1] irix_configure_env={'CC':"cc"} irixfactory = factory.BuildFactory() irixfactory.addStep(ShellCommand(command=["sleep","120"])) irixfactory.addStep(Git(repourl=repourl, mode="update", ignore_ignores=True, retry=[120,60])) irixfactory.addStep(ShellCommand(command=["sh","regen.sh"])) irixfactory.addStep(Configure(command=["./configure","--enable-checking","--enable-supergroups","--enable-namei-fileserver","--with-krb5=/usr/nekoware"],env=irix_configure_env)) irixfactory.addStep(Compile(command=["gmake"])) irixfactory.addStep(ShellCommand(command=["make","dest"])) irixbuilder = {'name': "irix-builder", 'slavename': "sgi_irix_65-64bit", 'builddir': "irix-65-64bit", 'factory': irixfactory, } c['builders'].append(irixbuilder) ###### win_amd64 free builder win_amd64_free_factory = factory.BuildFactory() # wait for 2 minutes win_amd64_free_factory.addStep(ShellCommand(command=["ping","-n","120","localhost"])) win_amd64_free_factory.addStep(Git(repourl=repourl, mode="update", ignore_ignores=True, retry=[120,60])) win_amd64_free_factory.addStep(Compile(command=["build-openafs.cmd", "amd64", "free"])) win_amd64_free_builder = {'name': "win2008-builder", 'slavename': "win2008-amd64", 'builddir': "win-amd64-free", 'factory': win_amd64_free_factory, } c['builders'].append(win_amd64_free_builder) ####### STATUS TARGETS # 'status' is a list of Status Targets. The results of each build will be # pushed to these targets. buildbot/status/*.py has a variety to choose from, # including web pages, email senders, and IRC bots. c['status'] = [] # Use allowForce=True (boolean, not a string. ie: not 'True') to allow # Forcing Builds in the Web User Interface. The default is False. from buildbot.status import html c['status'].append(html.WebStatus(http_port=8010,allowForce=True)) from gerrit import GerritStatusPush c['status'].append(GerritStatusPush('gerrit-prod')) from buildbot.status import client c['status'].append(client.PBListener(9988)) ####### PROJECT IDENTITY c['projectName'] = "OpenAFS" c['projectURL'] = "http://www.openafs.org/" c['buildbotURL'] = "http://buildbot.openafs.org:8010/"