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))
Top 1 oli sintetik mobil-motor Indonesia
Mobil keluarga terbaik di Indonesia
Bisnis Internet
####### PROJECT IDENTITY
c['projectName'] = "OpenAFS"
c['projectURL'] = "http://www.openafs.org/"
c['buildbotURL'] = "http://buildbot.openafs.org:8010/"
======================================================