## # 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("unittests-worker", "unittests-pass"), worker.Worker("integration-tests-worker", "integration-tests-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=["unittests-builder", "integration-tests-builder"] ) GITPUSH_SCHEDULER = schedulers.SingleBranchScheduler( name="gitpush-scheduler", change_filter=util.ChangeFilter( branch="master", project_re="(libeufin)" ), treeStableTimer=None, builderNames=["unittests-builder", "integration-tests-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"] ) UNITTESTS_FACTORY = util.BuildFactory() UNITTESTS_FACTORY.addSteps([ Git(repourl="git://git.taler.net/libeufin"), BOOTSTRAP_COMMAND, CONFIGURE_COMMAND, ShellCommand( name="Unit tests", description="Running unit tests", descriptionDone="Unit tests done", haltOnFailure=True, command=["make", "check"] ) ]) INTEGRATION_TESTS_FACTORY = util.BuildFactory() INTEGRATION_TESTS_FACTORY.addSteps([ Git(repourl="git://git.taler.net/libeufin"), BOOTSTRAP_COMMAND, CONFIGURE_COMMAND, ShellCommand( name="Integration tests", description="Running the integration tests", descriptionDone="Integration tests done", haltOnFailure=True, command=["make", "tests"] ) ]) ##### BUILDERS UNITTESTS_BUILDER = util.BuilderConfig( name="unittests-builder", workernames=["unittests-worker"], factory=UNITTESTS_FACTORY ) INTEGRATION_TESTS_BUILDER = util.BuilderConfig( name="integration-tests-builder", workernames=["integration-tests-worker"], factory=INTEGRATION_TESTS_FACTORY ) c["builders"] = [ UNITTESTS_BUILDER, INTEGRATION_TESTS_BUILDER ] ####### PROJECT IDENTITY c["title"] = "LibEuFin" c["titleURL"] = "https://buildbot.libeufin.tech/" c["buildbotURL"] = "https://buildbot.libeufin.tech/" BUILDER_LIST = [ "unittests-builder", "integration-tests-builder" ] emailNotifier = reporters.MailNotifier( fromaddr="libeufin-build@taler.net", sendToInterestedUsers=False, mode=("change"), builders=("integration-tests-builder", "unittests-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="integration-tests"), util.ForceBuildEndpointMatcher(role="admins", builder="unit-tests"), util.RebuildBuildEndpointMatcher(role="admins", builder="integration-tests"), util.RebuildBuildEndpointMatcher(role="admins", builder="unit-tests") ], 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", }