blob: 0b97bb30841eab0e20f13e03b74820d121fe859f [file] [log] [blame]
# -*- python -*-
# ex: set syntax=python:
from importlib import reload
# Extend paths to allow loading zorg and config modules.
import os, sys
# All the configuration files are under the directory
# where master.cfg file is.
cfg_path = os.path.abspath(os.path.dirname(__file__))
if cfg_path not in sys.path:
sys.path.append(cfg_path)
# Zorg is 3 levels up.
path = os.path.abspath(
os.path.join(cfg_path, '..', '..', '..')
)
if path not in sys.path:
sys.path.append(path)
##print(">>> sys.path={}}".format(sys.path)) # TODO: Remove this later.
# This is the dictionary that the buildmaster pays attention to. We also use
# a shorter alias to save typing.
c = BuildmasterConfig = {}
c['buildbotNetUsageData'] = None
import config
reload(config)
####### Workers
c['workers'] = config.workers.get_all()
c['protocols'] = {'pb': {'port': 9990}}
####### CHANGESOURCES
##from buildbot.changes.pb import PBChangeSource
from zorg.buildbot.changes.llvmgitpoller import LLVMPoller
from zorg.buildbot.process import buildrequest
reload(buildrequest)
from buildbot.plugins import changes
c['change_source'] = []
# TODO: Do we want to support a push mode for the changes? Probably not.
#c['change_source'].append(PBChangeSource())
c['change_source'].append(
LLVMPoller(repourl='https://github.com/llvm/llvm-project.git',
workdir='gitpoller-workdir',
pollinterval=120))
c['change_source'].append(
changes.GitPoller(repourl='https://github.com/llvm/llvm-lnt.git',
project='lnt',
branch='master',
workdir='gitpoller-llvm-lnt',
pollinterval=60*60))
c['collapseRequests'] = buildrequest.collapseRequests
####### BUILDERS
from buildbot.plugins import util
c['builders'] = builders = [
util.BuilderConfig(**b) for b in config.builders.all
]
####### SCHEDULERS
c['schedulers'] = config.schedulers.getSingleBranchSchedulers(
c['builders'])
c['schedulers'].extend(config.schedulers.getForceSchedulers(
c['builders']))
####### BUILDBOT SERVICES
# 'services' is a list of BuildbotService items like reporter targets. The
# status of each build will be pushed to these targets. buildbot/reporters/*.py
# has a variety to choose from, like IRC bots.
# Configure MailNotifier, IRC, buildbot.reporters.github.GitHubStatusPush, buildbot.reporters.github.GitHubCommentPush
c['services'] = config.status.getReporters()
####### PROJECT IDENTITY
c['title'] = config.options.get('Buildbot', 'title')
c['titleURL'] = config.options.get('Buildbot', 'title_url')
c['buildbotURL'] = config.options.get('Buildbot', 'my_url')
# minimalistic config to activate new web UI
c['www'] = dict(port=8011,
plugins=dict(waterfall_view={}, console_view={}, grid_view={}), # TODO: badges
default_page='console',
auth=config.auth.getAuth(),
authz=config.auth.getAuthz(),
#logRotateLength=
#maxRotatedFiles=
#versions=
)
####### DB URL
c['db'] = {
'db_url' : config.options.get('Database', 'db_url'),
}
####### RESOURCE USAGE
from datetime import timedelta
# TODO: Figure out the "changeHorizon" value for our usage.
#c["changeHorizon"] = 300
# configure a janitor which will delete all logs older than one month,
# and will run on sundays at noon
# TODO: Recheck the setting for the production bot.
c['configurators'] = [util.JanitorConfigurator(
logHorizon=timedelta(weeks=4), # Roughly once a month.
hour=12,
dayOfWeek=6
)]