diff options
author | Marcello Stanisci <marcello.stanisci@inria.fr> | 2017-02-16 15:13:59 +0100 |
---|---|---|
committer | Marcello Stanisci <marcello.stanisci@inria.fr> | 2017-02-16 15:13:59 +0100 |
commit | bd15915cbf129d0b0455189f50e2be83df29f551 (patch) | |
tree | 0d49466ca2948e764cf7ce0a2ebc06b294a4b963 /buildbot/master.cfg | |
parent | 34e714765c01d4d70571496f3ad75757413b1622 (diff) | |
download | deployment-bd15915cbf129d0b0455189f50e2be83df29f551.tar.gz deployment-bd15915cbf129d0b0455189f50e2be83df29f551.tar.bz2 deployment-bd15915cbf129d0b0455189f50e2be83df29f551.zip |
master.cfg uses same style of gnunet.org's buildbot master.cfg.
Diffstat (limited to 'buildbot/master.cfg')
-rw-r--r-- | buildbot/master.cfg | 283 |
1 files changed, 213 insertions, 70 deletions
diff --git a/buildbot/master.cfg b/buildbot/master.cfg index a037951..a356ad0 100644 --- a/buildbot/master.cfg +++ b/buildbot/master.cfg @@ -1,70 +1,140 @@ # -*- python -*- # ex: set syntax=python: -c = BuildmasterConfig = {} -local = "${HOME}/local" +# This is a sample buildmaster config file. It must be installed as +# 'master.cfg' in your buildmaster's base directory (although the filename +# can be changed with the --basedir option to 'mktap buildbot master'). + +# It has one job: define a dictionary named BuildmasterConfig. This +# dictionary has a variety of keys to control different aspects of the +# buildmaster. They are documented in docs/config.xhtml . -####### LOGS SIZE +# This is the dictionary that the buildmaster pays attention to. We also use +# a shorter alias to save typing. +c = BuildmasterConfig = {} -c['changeHorizon'] = 20 -c['buildHorizon'] = 10 -c['logHorizon'] = 4 -c['buildCacheSize'] = 2 +c['buildbotNetUsageData'] = None ####### BUILDSLAVES +# the 'slaves' list defines the set of allowable buildslaves. Each element is +# a tuple of bot-name and bot-password. These correspond to values given to +# the buildslave's mktap invocation. from buildbot.worker import Worker c['workers'] = [Worker("lcovSlave", "taler"), Worker("containersSlave", "taler")] -c['protocols'] = {'pb': {'port': 9989}} +# to limit to two concurrent builds on a slave, use +# c['workers'] = [Worker("bot1name", "bot1passwd", max_builds=2)] + + +# 'slavePortnum' defines the TCP port to listen on. This must match the value +# configured into the buildslaves (with their --master option) + +c['protocols'] = { + 'pb': { + 'port': 9989 + } +} ####### CHANGESOURCES -# They are just "pointers" to monitored codebases. +# the 'change_source' setting tells the buildmaster how it should find out +# about source code changes. Any class which implements IChangeSource can be +# put here: there are several in buildbot/changes/*.py to choose from. + +from buildbot.changes.pb import PBChangeSource from buildbot.changes.gitpoller import GitPoller -c['change_source'] = [] -c['change_source'].append(GitPoller( - 'git://git.taler.net/exchange.git', - workdir='gitpoller-workdir', branches=True, - pollinterval=300)) -c['change_source'].append(GitPoller( - 'git://git.taler.net/merchant.git', - workdir='gitpoller-workdir', branches=True, - pollinterval=300)) -c['change_source'].append(GitPoller( - 'git://git.taler.net/bank.git', - workdir='gitpoller-workdir', branches=True, - pollinterval=300)) -c['change_source'].append(GitPoller( - 'git://git.taler.net/merchant-frontends.git', - workdir='gitpoller-workdir', branches=True, - pollinterval=300)) +c['change_source'] = [ + PBChangeSource(), + + GitPoller(repourl="https://git.taler.net/wallet-webex.git", branch="master", project="wallet-webex", pollInterval=600, pollAtLaunch=True), + GitPoller(repourl="https://git.taler.net/exchange.git", branch="master", project="exchange", pollInterval=600, pollAtLaunch=True), + GitPoller(repourl="https://git.taler.net/merchant.git", branch="master", project="merchant", pollInterval=600, pollAtLaunch=True), +] + +# For example, if you had CVSToys installed on your repository, and your +# CVSROOT/freshcfg file had an entry like this: +#pb = ConfigurationSet([ +# (None, None, None, PBService(userpass=('foo', 'bar'), port=4519)), +# ]) + +# then you could use the following buildmaster Change Source to subscribe to +# the FreshCVS daemon and be notified on every commit: +# +#from buildbot.changes.freshcvs import FreshCVSSource +#fc_source = FreshCVSSource("cvs.example.com", 4519, "foo", "bar") +#c['change_source'] = fc_source + +# or, use a PBChangeSource, and then have your repository's commit script run +# 'buildbot sendchange', or use contrib/svn_buildbot.py, or +# contrib/arch_buildbot.py : +# +#from buildbot.changes.pb import PBChangeSource +#c['change_source'] = PBChangeSource() + ####### SCHEDULERS -# They take action: actually trigger the build. + +## configure the Schedulers from buildbot.schedulers.basic import SingleBranchScheduler -from buildbot.schedulers.forcesched import ForceScheduler -from buildbot.schedulers.timed import * -from buildbot.changes import filter +from buildbot.scheduler import Scheduler +from buildbot.plugins import util -gitMaster = SingleBranchScheduler( - name="global-master", - reason="Commit pushed for one of the sub-projects", - change_filter=filter.ChangeFilter(branch='master'), - treeStableTimer=300, - builderNames=["lcov-build", "auto-click"]) +c['schedulers'] = [] +c['schedulers'].append(SingleBranchScheduler(name="wallet-webex", + treeStableTimer=30*60, + change_filter=util.ChangeFilter(project="wallet-webex", branch="master"), + builderNames=[ + "selenium-test" +])) -force = ForceScheduler(name="force-build", - builderNames=["lcov-build", "auto-click"]) +c['schedulers'].append(SingleBranchScheduler(name="exchange", + treeStableTimer=30*60, + change_filter=util.ChangeFilter(project="exchange", branch="master"), + builderNames=[ + "lcov-build" +])) + +c['schedulers'].append(SingleBranchScheduler(name="merchant", + treeStableTimer=30*60, + change_filter=util.ChangeFilter(project="merchant", branch="master"), + builderNames=[ + "lcov-build" +])) + + +from buildbot.schedulers.forcesched import ForceScheduler +c['schedulers'].append(ForceScheduler( + name="force", + builderNames=[ + "selenium-test", + "lcov-build" +])) -c['schedulers'] = [] -c['schedulers'].append(gitMaster) -c['schedulers'].append(force) ####### BUILDERS +# the 'builders' list defines the Builders. Each one is configured with a +# dictionary, using the following keys: +# name (required): the name used to describe this bilder +# slavename (required): which slave to use, must appear in c['bots'] +# builddir (required): which subdirectory to run the builder in +# factory (required): a BuildFactory to define how the build is run +# periodicBuildTime (optional): if set, force a build every N seconds + +# buildbot/process/factory.py provides several BuildFactory classes you can +# start with, which implement build processes for common targets (GNU +# autoconf projects, CPAN perl modules, etc). The factory.BuildFactory is the +# base class, and is configured with a series of BuildSteps. When the build +# is run, the appropriate buildslave is told to execute each Step in turn. + +# the first BuildStep is typically responsible for obtaining a copy of the +# sources. There are source-obtaining Steps in buildbot/steps/source.py for +# CVS, SVN, and others. + +## TALER from buildbot.process.factory import BuildFactory from buildbot.steps.source.git import Git from buildbot.steps.shell import ShellCommand @@ -100,46 +170,119 @@ autoClick.addStep(ShellCommand(name="clicker", command=["launch_selenium_test"], env={'PATH': "${HOME}/local/bin:${PATH}"})) -from buildbot.config import BuilderConfig +lcov_builder = {"name": "lcov-build", + "workername": "lcovSlave", + # "builddir": ???, + "factory": lcov} + +autoclick_builder = {"name": "auto-click", + "workername": "containersSlave", + # "builddir": ???, + "factory": autoClick} -c['builders'] = [] -c['builders'].append( - BuilderConfig(name="lcov-build", - workernames=["lcovSlave"], - factory=lcov)) -c['builders'].append( - BuilderConfig(name="auto-click", - workernames=["containersSlave"], - factory=autoClick)) +c['builders'] = [lcov_builder, autoclick_builder] +## END-TALER ####### STATUS TARGETS -c['status'] = [] -from buildbot.plugins import util +# '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. -authz = util.Authz( - allowRules=[ - util.StopBuildEndpointMatcher(role="admins"), - util.ForceBuildEndpointMatcher(role="admins"), - util.RebuildBuildEndpointMatcher(role="admins") - ], - roleMatchers=[ - util.RolesFromEmails(admins=["marcello.stanisci@inria.fr"]) - ] -) +#c['status'] = [] -auth=util.UserPasswordAuth({'marcello.stanisci@inria.fr': 'mstantaler'}) +#from buildbot.status import html +#from buildbot.status.web import authz, auth -c['www'] = dict(port=8010, - plugins=dict(waterfall_view={}, console_view={}), - auth=auth, - authz=authz) +#authz_cfg=authz.Authz( +# # change any of these to True to enable; see the manual for more options +# auth=auth.BasicAuth([ +# ("team","gnunet"), +# ("lrn", "kyU,nBn,kbeO"), +# ]), +# gracefulShutdown = False, +# forceBuild = 'auth', +# forceAllBuilds = True, #'auth', +# pingBuilder = 'auth', +# stopBuild = 'auth', +# stopAllBuilds = 'auth', +# cancelPendingBuild = 'auth',) + +#c['status'].append(html.WebStatus(http_port=8010, authz=authz_cfg)) + +# from buildbot.status import mail +# c['status'].append(mail.MailNotifier(fromaddr="buildbot@localhost", +# extraRecipients=["builds@example.com"], +# sendToInterestedUsers=False)) +# + +#from buildbot.status import words +#c['status'].append(words.IRC(host="irc.freenode.net", nick="gnunet-bb", +# channels=["#gnunet"])) + +# from buildbot.status import client +# c['status'].append(client.PBListener(9988)) + +c['www'] = { + 'port': 8010, + 'plugins': { + 'console_view': {}, + 'waterfall_view': {}, # 'num_builds': 50 + }, + 'auth': util.UserPasswordAuth({ + "marcello.stanisci@inria.fr": "taler"}), +} + +c['services'] = [] + +from buildbot.plugins import reporters +irc = reporters.IRC("irc.eu.freenode.net", "taler-bb", + useColors=False, + channels=[{"channel": "#taler"}], + #password="mysecretnickservpassword", + notify_events={ + 'exception': 1, + 'successToFailure': 1, + 'failureToSuccess': 1, + }) +c['services'].append(irc) + +####### 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 commiting 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'] = "f1955c29e336834e88476f74c1825cdb" + +# 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 -c['title'] = "Taler" -c['titleURL'] = "https://taler.net/" + +# 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'] = "Taler" +c['projectURL'] = "https://taler.net/" + +# 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'] = "https://buildbot.taler.net/" |