# -*- python -*- # ex: set syntax=python: c = BuildmasterConfig = {} local = "${HOME}/local" ####### LOGS SIZE c['changeHorizon'] = 20 c['buildHorizon'] = 10 c['logHorizon'] = 4 c['buildCacheSize'] = 2 ####### BUILDSLAVES from buildbot.worker import Worker c['workers'] = [Worker("lonelySlave", "taler"), Worker("lcovSlave", "taler"), Worker("containersSlave", "taler")] c['protocols'] = {'pb': {'port': 9989}} ####### CHANGESOURCES # They are just "pointers" to monitored codebases. 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)) ####### SCHEDULERS # They take action: actually trigger the build. from buildbot.schedulers.basic import SingleBranchScheduler from buildbot.schedulers.forcesched import ForceScheduler from buildbot.schedulers.timed import * from buildbot.changes import filter gitMaster = SingleBranchScheduler( name="global-master", reason="Commit pushed for one of the sub-projects", change_filter=filter.ChangeFilter(branch='master'), treeStableTimer=300, builderNames=["lone-builder", "lcov-build"]) force = ForceScheduler(name="force-build", builderNames=["lone-builder", "lcov-build"]) # For now, the whole withdraw/pay cliking is started manually # (as the blue-green infrastructure needs some upgrading) forceClick = ForceScheduler( name="force-clicking", builderNames=["auto-click"]) c['schedulers'] = [force, forceClick, gitMaster] ####### BUILDERS # They know *how* to build: which scripts need to be invoked, # where in the filesystem.. from buildbot.process.factory import BuildFactory from buildbot.steps.source.git import Git from buildbot.steps.shell import ShellCommand from buildbot.steps.shell import Configure from buildbot.steps.shell import Compile from buildbot.steps.shell import Test import os lonelyness = BuildFactory() lonelyness.addStep(Git(repourl='git://git.taler.net/deployment.git', mode='full', method='fresh', alwaysUseLatest=True, haltOnFailure=True, branch='master')) lonelyness.addStep(ShellCommand(name="invalidation", description="Invalidating timestamps", descriptionDone="timestamps invalidated", command=["./invalidate.sh"], workdir="build/taler-build")) lonelyness.addStep(ShellCommand(name="builder", description="Lone compilation..", descriptionDone="Compilation passed", command=["make"], workdir="build/taler-build", env={'PATH': "${HOME}/local/bin:${PATH}", 'TALER_CHECKDB' : "postgresql:///talercheck?host=/home/${USER}/sockets"})) lcov = BuildFactory() lcov.addStep(Git(repourl='git://git.taler.net/deployment.git', mode='full', method='fresh', alwaysUseLatest=True, haltOnFailure=True, branch='master')) lcov.addStep(ShellCommand(name="invalidation", description="Invalidating timestamps", descriptionDone="timestamps invalidated", command=["./invalidate.sh"], workdir="build/taler-build")) lcov.addStep(ShellCommand(name="builder", description="Compiling..", descriptionDone="lcov files generated", command=["make", "lcov"], workdir="build/taler-build", env={'PATH': "${HOME}/local/bin:${PATH}", 'TALER_CHECKDB' : "postgresql:///talercheck?host=/home/${USER}/sockets"})) autoClick = BuildFactory() autoClick.addStep(ShellCommand(name="clicker", description="Performing demo", descriptionDone="Demo finished", command=["launch_selenium_test.sh"], env={'PATH': "${HOME}/deployment/docker/selenium:${PATH}"})) from buildbot.config import BuilderConfig c['builders'] = [] c['builders'].append( BuilderConfig(name="lone-builder", workernames=["lonelySlave"], factory=lonelyness)) c['builders'].append( BuilderConfig(name="lcov-build", workernames=["lcovSlave"], factory=lcov)) c['builders'].append( BuilderConfig(name="auto-click", workernames=["containersSlave"], factory=autoClick)) ####### STATUS TARGETS c['status'] = [] from buildbot.plugins import util authz = util.Authz( allowRules=[ util.StopBuildEndpointMatcher(role="admins"), util.ForceBuildEndpointMatcher(role="admins"), util.RebuildBuildEndpointMatcher(role="admins") ], roleMatchers=[ util.RolesFromEmails(admins=["marcello.stanisci@inria.fr"]) ] ) auth=util.UserPasswordAuth({'marcello.stanisci@inria.fr': 'mstantaler'}) c['www'] = dict(port=8010, plugins=dict(waterfall_view={}, console_view={}), auth=auth, authz=authz) ####### PROJECT IDENTITY c['title'] = "Taler" c['titleURL'] = "https://taler.net/" c['buildbotURL'] = "https://buildbot.taler.net/" ####### DB URL c['db'] = { 'db_url' : "sqlite:///state.sqlite", }