diff --git a/master.cfg b/master.cfg index 6fa7c4c..bd70f3c 100644 --- a/master.cfg +++ b/master.cfg @@ -1,106 +1,127 @@ # -*- python -*- # ex: set syntax=python: -from buildbot.buildslave import BuildSlave -from gdbgitpoller import GDBGitPoller -# from buildbot.changes.gitpoller import GitPoller -from buildbot.changes.pb import PBChangeSource -from buildbot.process import factory -from buildbot.process.buildstep import LogLineObserver -from buildbot.process.properties import WithProperties -from buildbot.scheduler import AnyBranchScheduler -from buildbot.scheduler import Scheduler -from buildbot.scheduler import Try_Jobdir -from buildbot.scheduler import Try_Userpass -from buildbot.schedulers.filter import ChangeFilter -from buildbot.status import html -from buildbot.status.builder import SUCCESS, WARNINGS, FAILURE, EXCEPTION -from buildbot.steps.python_twisted import Trial -from buildbot.steps.shell import Compile -from buildbot.steps.shell import Configure -from buildbot.steps.shell import SetProperty -from buildbot.steps.shell import ShellCommand -from buildbot.steps.source import Git -from gdbbuilder import make_gdb_builder +#from gdbbuilder import make_gdb_builder +from gdbbuilder import load_config from sumfiles import DejaResults, set_web_base import os.path import urllib -from buildbot.status import words +# This is a sample buildmaster config file. It must be installed as +# 'master.cfg' in your buildmaster's base directory. # This is the dictionary that the buildmaster pays attention to. We also use # a shorter alias to save typing. c = BuildmasterConfig = {} -c['mergeRequests'] = False +####### BUILDSLAVES -c['slavePortnum'] = 9989 - -c['change_source'] = [ - PBChangeSource(), - # Didn't finish fixing this; it was simpler to just use cron. - # GDBGitPoller(repourl = 'git://sourceware.org/git/gdb.git', - # workdir = '/home/buildbot/GitWatcher/gdb/', - # branch = ['master', 'gdb_7_3-branch']) -] +# The 'slaves' list defines the set of recognized buildslaves. Each element is +# a BuildSlave object, specifying a unique slave name and password. The same +# slave name and password must be configured on the slave. # Base directory for the web server. gdb_web_base = os.path.expanduser(os.path.join(basedir, 'public_html', 'results')) set_web_base (gdb_web_base) -all_gdb_builders = [ - make_gdb_builder ('f14', 'x86_64'), - make_gdb_builder ('f14', 'x86_64', 'dwarf4'), - make_gdb_builder ('f14', 'x86_64', 'index'), - make_gdb_builder ('f14', 'x86_64', 'm32'), - make_gdb_builder ('f14', 'x86_64', 'gdbserver'), - ] +#all_gdb_builders = [ +# make_gdb_builder ('f20', 'x86_64'), +# make_gdb_builder ('f14', 'x86_64', 'dwarf4'), +# make_gdb_builder ('f14', 'x86_64', 'index'), +# make_gdb_builder ('f20', 'x86_64', 'm32'), +# make_gdb_builder ('f20', 'x86_64', 'gdbserver'), +# ] -all_gdb_builder_names = [] -c['slaves'] = [] +#all_gdb_builder_names = [] +#c['slaves'] = [] -for builder in all_gdb_builders: - name = builder['name'] - all_gdb_builder_names.append(name) - c['slaves'].append(BuildSlave(name, name + '-password', # yes -- lame - max_builds = 1)) +#from buildbot.buildslave import BuildSlave +#for builder in all_gdb_builders: +# name = builder['name'] +# all_gdb_builder_names.append(name) +# c['slaves'].append(BuildSlave(name, name + '-password', max_builds = 1)) +# c['slaves'] = [BuildSlave("gdb-slave", "pwdgdb")] -c['builders'] = all_gdb_builders -# FIXME: we'd like to make the Try builder run the baseline build -# using a triggerable builder, but it isn't clear whether this is -# possible. +# 'protocols' contains information about protocols which master will use for +# communicating with slaves. +# You must define at least 'port' option that slaves could connect to your master +# with this protocol. +# 'port' must match the value configured into the buildslaves (with their +# --master option) +c['protocols'] = {'pb': {'port': 9989}} +#c['protocols'] = {"pb": {"port": "tcp:10000:interface=127.0.0.1"}} -c['schedulers'] = [] +####### CHANGESOURCES -branch_filter = ChangeFilter(branch = ['master', - 'gdb_7_3-branch']) -c['schedulers'].append(AnyBranchScheduler(name="all", - change_filter = branch_filter, - treeStableTimer = 0, - builderNames = all_gdb_builder_names, - properties = { 'isTryBuilder' : 'no' })) -# c['schedulers'].append(AnyBranchScheduler(name="all", -# branch = 'master', -# treeStableTimer = 0, -# builderNames = all_gdb_builder_names, -# properties = { 'isTryBuilder' : 'no' })) +# the 'change_source' setting tells the buildmaster how it should find out +# about source code changes. Here we point to the buildbot clone of pyflakes. -# c['schedulers'].append(Try_Jobdir("try1", -# builderNames = all_gdb_builder_names, -# jobdir = '/home/buildbot/Jobs', -# properties = { 'isTryBuilder' : 'yes' })) +from buildbot.changes.gitpoller import GitPoller +c['change_source'] = [] +c['change_source'].append(GitPoller( +# repourl = 'git://sourceware.org/git/binutils-gdb.git', + repourl = 'file:///home/buildbot/binutils-gdb', + workdir='/home/buildbot/my-binutils-gdb', + branches= [ 'master' ], + pollinterval=30)) +# 'git://github.com/buildbot/pyflakes.git', +# workdir='gitpoller-workdir', branch='master', +# pollinterval=300)) -gdb_users = [] -# FIXME init gdb_users here +####### SCHEDULERS -c['schedulers'].append(Try_Userpass("try1", - builderNames = all_gdb_builder_names, - port = 8031, - userpass = gdb_users, - properties = { 'isTryBuilder' : 'yes' })) +# Configure the Schedulers, which decide how to react to incoming changes. In this +# case, just kick off a 'runtests' build +from buildbot.schedulers.basic import SingleBranchScheduler, AnyBranchScheduler +from buildbot.schedulers.forcesched import ForceScheduler +from buildbot.changes import filter + +#c['schedulers'] = [] + +#branch_filter = filter.ChangeFilter(branch = ['master']) +#c['schedulers'].append(AnyBranchScheduler(name="all", +# change_filter = branch_filter, +# treeStableTimer = None, +# builderNames = all_gdb_builder_names, +# properties = { 'isTryBuilder' : 'no' })) + +#c['schedulers'] = [] +#c['schedulers'].append(SingleBranchScheduler( +# name="all", +# change_filter=filter.ChangeFilter(branch='master'), +# treeStableTimer=None, +# builderNames=["runtests"])) +#c['schedulers'].append(ForceScheduler( +# name="force", +# builderNames=["runtests"])) + +####### BUILDERS + +# The 'builders' list defines the Builders, which tell Buildbot how to perform a build: +# what steps, and which slaves can execute them. Note that any particular build will +# only take place on one slave. + +from buildbot.process.factory import BuildFactory +from buildbot.steps.source.git import Git +from buildbot.steps.shell import ShellCommand + +#factory = BuildFactory() +# check out the source +#factory.addStep(Git(repourl='git://github.com/buildbot/pyflakes.git', mode='incremental')) +# run the tests (note that this will require that 'trial' is installed) +#factory.addStep(ShellCommand(command=["trial", "pyflakes"])) + +from buildbot.config import BuilderConfig + +#c['builders'] = all_gdb_builders +#c['builders'] = [] +#c['builders'].append( +# BuilderConfig(name="runtests", +# slavenames=["example-slave"], +# factory=factory)) ####### STATUS TARGETS @@ -113,55 +134,68 @@ c['status'] = [] # Catch things like PR gdb/42, PR16, PR 16 or bug #11, # and turn them into gdb bugzilla URLs. cc_re_tuple = (r'(PR [a-z]+/|PR ?|#)(\d+)', - r'http://sourceware.org/bugzilla/show_bug.cgi?id=\2') + r'http://sourceware.org/bugzilla/show_bug.cgi?id=\2') -c['status'].append(html.WebStatus(http_port=8010, - allowForce=False, - order_console_by_time=True, - changecommentlink=cc_re_tuple - )) +from buildbot.status import html +from buildbot.status.web import authz, auth -c['status'].append(words.IRC(host="irc.yyz.redhat.com", nick="gdbbot", - channels=["#gdb"])) +authz_cfg=authz.Authz( + # change any of these to True to enable; see the manual for more + # options +# auth=auth.BasicAuth([("t","t")]), + gracefulShutdown = False, + forceBuild = True, # use this to test your slave once it is set up +# forceAllBuilds = 'auth', # ..or this + pingBuilder = False, + stopBuild = True, + stopAllBuilds = True, + cancelPendingBuild = True, +) +c['status'].append(html.WebStatus(http_port=8010, authz=authz_cfg)) -# from buildbot.status import client -# c['status'].append(client.PBListener(9988)) +#c['status'].append(html.WebStatus(http_port=8010, +# forceBuild = True, +# allowForce=False, +# order_console_by_time=True, +# changecommentlink=cc_re_tuple)) +#from buildbot.status import words +#c['status'].append(words.IRC(host="irc.yyz.redhat.com", nick="sdj-gdbbot", +# channels=["#gdbbuild"])) -####### DEBUGGING OPTIONS - -# if you set 'debugPassword', then you can connect to the buildmaster with -# the diagnostic tool in contrib/debugclient.py . From this tool, you can -# manually force builds and inject changes, which may be useful for testing -# your buildmaster without actually committing changes to your repository (or -# before you have a functioning 'sources' set up). The debug tool uses the -# same port number as the slaves do: 'slavePortnum'. - -#c['debugPassword'] = "debugpassword" - -# if you set 'manhole', you can ssh into the buildmaster and get an -# interactive python shell, which may be useful for debugging buildbot -# internals. It is probably only useful for buildbot developers. You can also -# use an authorized_keys file, or plain telnet. -#from buildbot import manhole -#c['manhole'] = manhole.PasswordManhole("tcp:9999:interface=127.0.0.1", -# "admin", "password") +#from buildbot.status import mail +#mn = mail.MailNotifier(fromaddr="sergiodj@redhat.com", +# sendToInterestedUsers=False, +# extraRecipients=['gdb-testers@sourceware.org'], +# relayhost="smtp.corp.redhat.com", +# mode=('failing'), +# smtpPort=25) +#c['status'].append(mn) ####### PROJECT IDENTITY -# the 'projectName' string will be used to describe the project that this -# buildbot is working on. For example, it is used as the title of the -# waterfall HTML page. The 'projectURL' string will be used to provide a link -# from buildbot HTML pages to your project's home page. +# the 'title' string will appear at the top of this buildbot +# installation's html.WebStatus home page (linked to the +# 'titleURL') and is embedded in the title of the waterfall HTML page. -c['projectName'] = "GDB" -c['projectURL'] = "http://sourceware.org/gdb/" +c['title'] = "GDB" +c['titleURL'] = "https://gnu.org/s/gdb" # the 'buildbotURL' string should point to the location where the buildbot's -# internal web server (usually the html.Waterfall page) is visible. This +# internal web server (usually the html.WebStatus page) is visible. This # typically uses the port number set in the Waterfall 'status' entry, but # with an externally-visible host name which the buildbot cannot figure out # without some help. c['buildbotURL'] = "http://localhost:8010/" + +####### DB URL + +c['db'] = { + # This specifies what database buildbot uses to store its state. You can leave + # this at its default for all but the largest installations. + 'db_url' : "sqlite:///state.sqlite", +} + +load_config (c)