From 53957fcb19771e7db14950ba81b7d4e86532f412 Mon Sep 17 00:00:00 2001 From: http://jason.rampaginggeek.com/ Date: Sat, 7 Aug 2010 13:58:18 -0700 Subject: [PATCH] --- AFSLore/buildbotmasternotes.mdwn | 223 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 223 insertions(+), 0 deletions(-) create mode 100644 AFSLore/buildbotmasternotes.mdwn diff --git a/AFSLore/buildbotmasternotes.mdwn b/AFSLore/buildbotmasternotes.mdwn new file mode 100644 index 0000000..73596a8 --- /dev/null +++ b/AFSLore/buildbotmasternotes.mdwn @@ -0,0 +1,223 @@ +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/" + +====================================================== -- 1.7.1