Mozilla/mozilla/tools/buildbot/docs/examples/twisted_master.cfg
mozpreed%sigkill.com cb24fb162e This commit was generated by cvs2svn to compensate for changes in r238586,
which included commits to RCS files with non-trunk default branches.

git-svn-id: svn://10.0.0.236/trunk@238587 18797224-902f-48f8-a5cc-f745e15eee43
2007-11-06 18:04:00 +00:00

330 lines
12 KiB
Python

#! /usr/bin/python
# NOTE: this configuration file is from the buildbot-0.7.5 era or earlier. It
# has not been brought up-to-date with the standards of buildbot-0.7.6 . For
# examples of modern usage, please see hello.cfg, or the sample.cfg which is
# installed when you run 'buildbot create-master'.
# This configuration file is described in $BUILDBOT/docs/config.xhtml
# This is used (with online=True) to run the Twisted Buildbot at
# http://www.twistedmatrix.com/buildbot/ . Passwords and other secret
# information are loaded from a neighboring file called 'private.py'.
import sys
sys.path.append('/home/buildbot/BuildBot/support-master')
import os.path
from buildbot.changes.pb import PBChangeSource
from buildbot.scheduler import Scheduler, Try_Userpass
from buildbot.steps.source import SVN
from buildbot.process.factory import s
from buildbot.process.process_twisted import \
QuickTwistedBuildFactory, \
FullTwistedBuildFactory, \
TwistedReactorsBuildFactory
from buildbot.status import html, words, client, mail
import extra_factory
reload(extra_factory)
from extra_factory import GoodTwistedBuildFactory
import private # holds passwords
reload(private) # make it possible to change the contents without a restart
BuildmasterConfig = c = {}
# I set really=False when testing this configuration at home
really = True
usePBChangeSource = True
c['bots'] = []
for bot in private.bot_passwords.keys():
c['bots'].append((bot, private.bot_passwords[bot]))
c['sources'] = []
# the Twisted buildbot currently uses the contrib/svn_buildbot.py script.
# This makes a TCP connection to the ChangeMaster service to push Changes
# into the build master. The script is invoked by
# /svn/Twisted/hooks/post-commit, so it will only be run for things inside
# the Twisted repository. However, the standard SVN practice is to put the
# actual trunk in a subdirectory named "trunk/" (to leave room for
# "branches/" and "tags/"). We want to only pay attention to the trunk, so
# we use "trunk" as a prefix for the ChangeSource. This also strips off that
# prefix, so that the Builders all see sensible pathnames (which means they
# can do things like ignore the sandbox properly).
source = PBChangeSource(prefix="trunk/")
c['sources'].append(source)
## configure the builders
if 0:
# always build on trunk
svnurl = "svn://svn.twistedmatrix.com/svn/Twisted/trunk"
source_update = s(SVN, svnurl=svnurl, mode="update")
source_copy = s(SVN, svnurl=svnurl, mode="copy")
source_export = s(SVN, svnurl=svnurl, mode="export")
else:
# for build-on-branch, we use these instead
baseURL = "svn://svn.twistedmatrix.com/svn/Twisted/"
defaultBranch = "trunk"
source_update = s(SVN, baseURL=baseURL, defaultBranch=defaultBranch,
mode="update")
source_copy = s(SVN, baseURL=baseURL, defaultBranch=defaultBranch,
mode="copy")
source_export = s(SVN, baseURL=baseURL, defaultBranch=defaultBranch,
mode="export")
builders = []
b24compile_opts = [
"-Wignore::PendingDeprecationWarning:distutils.command.build_py",
"-Wignore::PendingDeprecationWarning:distutils.command.build_ext",
]
b25compile_opts = b24compile_opts # FIXME
b1 = {'name': "quick",
'slavename': "bot1",
'builddir': "quick",
'factory': QuickTwistedBuildFactory(source_update,
python=["python2.3", "python2.4"]),
}
builders.append(b1)
b23compile_opts = [
"-Wignore::PendingDeprecationWarning:distutils.command.build_py",
"-Wignore::PendingDeprecationWarning:distutils.command.build_ext",
]
b23 = {'name': "debian-py2.3-select",
'slavename': "bot-exarkun",
'builddir': "full2.3",
'factory': FullTwistedBuildFactory(source_copy,
python=["python2.3", "-Wall"],
# use -Werror soon
compileOpts=b23compile_opts,
processDocs=1,
runTestsRandomly=1),
}
builders.append(b23)
b24 = {'name': "debian-py2.4-select",
'slavenames': ["bot-exarkun"],
'builddir': "full2.4",
'factory': FullTwistedBuildFactory(source_copy,
python=["python2.4", "-Wall"],
# use -Werror soon
compileOpts=b24compile_opts,
runTestsRandomly=1),
}
builders.append(b24)
b24debian64 = {
'name': 'debian64-py2.4-select',
'slavenames': ['bot-idnar-debian64'],
'builddir': 'full2.4-debian64',
'factory': FullTwistedBuildFactory(source_copy,
python=["python2.4", "-Wall"],
compileOpts=b24compile_opts),
}
builders.append(b24debian64)
b25debian = {
'name': 'debian-py2.5-select',
'slavenames': ['bot-idnar-debian'],
'builddir': 'full2.5-debian',
'factory': FullTwistedBuildFactory(source_copy,
python=["python2.5", "-Wall"],
compileOpts=b24compile_opts)}
builders.append(b25debian)
b25suse = {
'name': 'suse-py2.5-select',
'slavenames': ['bot-scmikes-2.5'],
'builddir': 'bot-scmikes-2.5',
'factory': FullTwistedBuildFactory(source_copy,
python=["python2.5", "-Wall"],
compileOpts=b24compile_opts),
}
builders.append(b25suse)
reactors = ['poll', 'epoll', 'gtk', 'gtk2']
b4 = {'name': "debian-py2.4-reactors",
'slavename': "bot2",
'builddir': "reactors",
'factory': TwistedReactorsBuildFactory(source_copy,
python="python2.4",
reactors=reactors),
}
builders.append(b4)
bosx24 = {
'name': 'osx-py2.4-select',
'slavenames': ['bot-exarkun-osx'],
'builddir': 'full2.4-exarkun-osx',
'factory': FullTwistedBuildFactory(source_copy,
python=["python2.4", "-Wall"],
compileOpts=b24compile_opts,
runTestsRandomly=1)}
builders.append(bosx24)
forcegc = {
'name': 'osx-py2.4-select-gc',
'slavenames': ['bot-exarkun-osx'],
'builddir': 'full2.4-force-gc-exarkun-osx',
'factory': GoodTwistedBuildFactory(source_copy,
python="python2.4")}
builders.append(forcegc)
# debuild is offline while we figure out how to build 2.0 .debs from SVN
# b3 = {'name': "debuild",
# 'slavename': "bot2",
# 'builddir': "debuild",
# 'factory': TwistedDebsBuildFactory(source_export,
# python="python2.4"),
# }
# builders.append(b3)
b24w32_scmikes_select = {
'name': "win32-py2.4-select",
'slavename': "bot-scmikes-win32",
'builddir': "W32-full2.4-scmikes-select",
'factory': TwistedReactorsBuildFactory(source_copy,
python="python",
compileOpts2=["-c","mingw32"],
reactors=["default"]),
}
builders.append(b24w32_scmikes_select)
b25w32_scmikes_select = {
'name': "win32-py2.5-select",
'slavename': "bot-scmikes-win32-2.5",
'builddir': "W32-full2.5-scmikes-select",
'factory': TwistedReactorsBuildFactory(source_copy,
python="python",
compileOpts2=["-c","mingw32"],
reactors=["default"]),
}
builders.append(b25w32_scmikes_select)
b24w32_win32er = {
'name': "win32-py2.4-er",
'slavename': "bot-win32-win32er",
'builddir': "W32-full2.4-win32er",
'factory': TwistedReactorsBuildFactory(source_copy,
python="python",
compileOpts2=["-c","mingw32"],
reactors=["win32"]),
}
builders.append(b24w32_win32er)
b24w32_iocp = {
'name': "win32-py2.4-iocp",
'slavename': "bot-win32-iocp",
'builddir': "W32-full2.4-iocp",
'factory': TwistedReactorsBuildFactory(source_copy,
python="python",
compileOpts2=[],
reactors=["iocp"]),
}
builders.append(b24w32_iocp)
b24freebsd = {'name': "freebsd-py2.4-select-kq",
'slavename': "bot-landonf",
'builddir': "freebsd-full2.4",
'factory':
TwistedReactorsBuildFactory(source_copy,
python="python2.4",
reactors=["default",
"kqueue",
]),
}
builders.append(b24freebsd)
osxtsr = {'name': "osx-py2.4-tsr",
'slavename': "bot-exarkun-osx",
'builddir': "osx-tsr",
'factory': TwistedReactorsBuildFactory(
source_copy,
python="python2.4",
reactors=["tsr"])}
builders.append(osxtsr)
bpypyc = {'name': 'osx-pypyc-select',
'slavename': 'bot-jerub-pypy',
'builddir': 'pypy-c',
'factory': TwistedReactorsBuildFactory(source_copy,
python="pypy-c",
reactors=["default"])}
builders.append(bpypyc)
c['builders'] = builders
# now set up the schedulers. We do this after setting up c['builders'] so we
# can auto-generate a list of all of them.
all_builders = [b['name'] for b in c['builders']]
all_builders.sort()
all_builders.remove("quick")
## configure the schedulers
s_quick = Scheduler(name="quick", branch=None, treeStableTimer=30,
builderNames=["quick"])
s_try = Try_Userpass("try", all_builders, port=9989,
userpass=private.try_users)
s_all = []
for i, builderName in enumerate(all_builders):
s_all.append(Scheduler(name="all-" + builderName,
branch=None, builderNames=[builderName],
treeStableTimer=(5 * 60 + i * 30)))
c['schedulers'] = [s_quick, s_try] + s_all
# configure other status things
c['slavePortnum'] = 9987
c['status'] = []
if really:
p = os.path.expanduser("~/.twistd-web-pb")
c['status'].append(html.Waterfall(distrib_port=p))
else:
c['status'].append(html.Waterfall(http_port=9988))
if really:
c['status'].append(words.IRC(host="irc.freenode.net",
nick='buildbot',
channels=["twisted"]))
c['debugPassword'] = private.debugPassword
#c['interlocks'] = [("do-deb", ["full-2.2"], ["debuild"])]
if hasattr(private, "manhole"):
from buildbot import manhole
c['manhole'] = manhole.PasswordManhole(*private.manhole)
c['status'].append(client.PBListener(9936))
m = mail.MailNotifier(fromaddr="buildbot@twistedmatrix.com",
builders=["quick", "debian-py2.3-select"],
sendToInterestedUsers=True,
extraRecipients=["warner@lothar.com"],
mode="problem",
)
c['status'].append(m)
c['projectName'] = "Twisted"
c['projectURL'] = "http://twistedmatrix.com/"
c['buildbotURL'] = "http://twistedmatrix.com/buildbot/"