167 lines
6.4 KiB
Python
167 lines
6.4 KiB
Python
# -*- 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 sumfiles import DejaResults, set_web_base
|
|
import os.path
|
|
import urllib
|
|
from buildbot.status import words
|
|
|
|
|
|
# This is the dictionary that the buildmaster pays attention to. We also use
|
|
# a shorter alias to save typing.
|
|
c = BuildmasterConfig = {}
|
|
|
|
c['mergeRequests'] = False
|
|
|
|
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'])
|
|
]
|
|
|
|
# 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_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))
|
|
|
|
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.
|
|
|
|
c['schedulers'] = []
|
|
|
|
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' }))
|
|
|
|
# c['schedulers'].append(Try_Jobdir("try1",
|
|
# builderNames = all_gdb_builder_names,
|
|
# jobdir = '/home/buildbot/Jobs',
|
|
# properties = { 'isTryBuilder' : 'yes' }))
|
|
|
|
gdb_users = []
|
|
# FIXME init gdb_users here
|
|
|
|
c['schedulers'].append(Try_Userpass("try1",
|
|
builderNames = all_gdb_builder_names,
|
|
port = 8031,
|
|
userpass = gdb_users,
|
|
properties = { 'isTryBuilder' : 'yes' }))
|
|
|
|
|
|
####### 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'] = []
|
|
|
|
# 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')
|
|
|
|
c['status'].append(html.WebStatus(http_port=8010,
|
|
allowForce=False,
|
|
order_console_by_time=True,
|
|
changecommentlink=cc_re_tuple
|
|
))
|
|
|
|
c['status'].append(words.IRC(host="irc.yyz.redhat.com", nick="gdbbot",
|
|
channels=["#gdb"]))
|
|
|
|
# from buildbot.status import client
|
|
# c['status'].append(client.PBListener(9988))
|
|
|
|
|
|
####### 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")
|
|
|
|
|
|
####### 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.
|
|
|
|
c['projectName'] = "GDB"
|
|
c['projectURL'] = "http://sourceware.org/gdb/"
|
|
|
|
# the 'buildbotURL' string should point to the location where the buildbot's
|
|
# internal web server (usually the html.Waterfall 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/"
|