## # This file is part of TALER # (C) 2016-2020 Taler Systems SA # # TALER is free software; you can redistribute it and/or # modify it under the terms of the GNU Affero General Public # License as published by the Free Software Foundation; either # version 3, or (at your option) any later version. # # TALER is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public # License along with TALER; see the file COPYING. If not, # see # # @author Florian Dold # @author Marcello Stanisci # @author ng0 # @author Christian Grothoff import re import json from buildbot.steps.source.git import Git from buildbot.steps.shell import ShellCommand from buildbot.plugins import (worker, changes, schedulers, util, reporters) c = BuildmasterConfig = {} # Silence warning and allow very basic phoning home. c["buildbotNetUsageData"] = "basic" ####### WORKERS c["workers"] = [worker.Worker("all-worker", "all-pass")] c["protocols"] = {"pb": {"port": "tcp:9990:interface=127.0.0.1"}} ####### CHANGESOURCES # the 'change_source' setting tells the buildmaster how it should # find out about source code changes. # NOTE: BB is bound to localhost ALLCS = changes.PBChangeSource(user="allcs", passwd="allcs") c["change_source"] = [ALLCS] ####### SCHEDULERS FORCE_SCHEDULER = schedulers.ForceScheduler( name="force-scheduler", builderNames=["all-builder"] ) GITPUSH_SCHEDULER = schedulers.SingleBranchScheduler( name="gitpush-scheduler", change_filter=util.ChangeFilter( branch="master", project="libeufin" ), treeStableTimer=None, builderNames=["all-builder"] ) c["schedulers"] = [ FORCE_SCHEDULER, GITPUSH_SCHEDULER ] ####### FACTORIES BOOTSTRAP_COMMAND = ShellCommand( name="Bootstrap repository", description="Bootstrap..", descriptionDone="Bootstrap done", haltOnFailure=True, command=["./bootstrap"] ) CONFIGURE_COMMAND = ShellCommand( name="Configure project", description="Configure..", descriptionDone="Configure done", haltOnFailure=True, command=["./configure"] ) ALL_FACTORY = util.BuildFactory() ALL_FACTORY.addSteps([ Git(repourl="git://git.taler.net/libeufin", alwaysUseLatest=True), BOOTSTRAP_COMMAND, CONFIGURE_COMMAND, ShellCommand( name="Unit tests", description="Running unit tests", descriptionDone="Unit tests done", flunkOnFailure=True, command=["make", "check"] ), ShellCommand( name="Integration tests", description="Running integration tests", descriptionDone="Integration tests done", flunkOnFailure=True, command=["make", "tests"] ), ShellCommand( name="Parsing tests", description="Running the parsing tests", descriptionDone="Parsing tests done", flunkOnFailure=True, command=["make", "parse"] ) ]) ##### BUILDERS ALL_BUILDER = util.BuilderConfig( name="all-builder", workernames=["all-worker"], factory=ALL_FACTORY ) c["builders"] = [ ALL_BUILDER ] ####### PROJECT IDENTITY c["title"] = "LibEuFin" c["titleURL"] = "https://buildbot.libeufin.tech/" c["buildbotURL"] = "https://buildbot.libeufin.tech/" BUILDER_LIST = ["all-builder"] emailNotifier = reporters.MailNotifier( fromaddr="libeufin-build@taler.net", sendToInterestedUsers=False, mode=("change"), builders=("all-builder"), extraRecipients=["libeufin@taler.net"], subject="Libeufin build." ) c["services"] = [emailNotifier] with open("/home/libeufin/.buildbot_accesses", "r") as data: accesses_data = data.read() accesses = json.loads(accesses_data) c["www"] = { "port": 8020, "plugins": { "waterfall_view": {}, "console_view": {} }, "allowed_origins": ["https://*.libeufin.tech"], "avatar_methods": [], "auth": util.UserPasswordAuth([ (user, password) for user, password in accesses.items() ]), "authz": util.Authz( allowRules=[ util.ForceBuildEndpointMatcher( role="admins", builder="all-builder" ), util.RebuildBuildEndpointMatcher( role="admins", builder="all-builder" ), ], roleMatchers=[ util.RolesFromUsername( roles=["admins"], usernames=["ms"] ) ] ) } ####### 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", }