From bbd5220ca7879e49858f309cb8fc22443138b4b9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Isma=C3=ABl=20Bouya?= Date: Sun, 9 Jun 2019 12:37:53 +0200 Subject: [PATCH] Add lock for buildbot caldance builds --- .../buildbot/projects/caldance/__init__.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/modules/private/buildbot/projects/caldance/__init__.py b/modules/private/buildbot/projects/caldance/__init__.py index 2c0bad5..8d4e804 100644 --- a/modules/private/buildbot/projects/caldance/__init__.py +++ b/modules/private/buildbot/projects/caldance/__init__.py @@ -77,14 +77,16 @@ def configure(c): c['workers'].append(worker.LocalWorker("generic-worker")) c['workers'].append(worker.LocalWorker("deploy-worker")) + db_lock = util.MasterLock("deploy_after_build") + c['schedulers'].append(hook_scheduler("Caldance", timer=1)) c['schedulers'].append(force_scheduler("force_caldance", ["Caldance_build"])) c['schedulers'].append(deploy_scheduler("deploy_caldance", ["Caldance_deploy"])) c['schedulers'].append(deploy_hook_scheduler("Caldance", timer=1)) - c['builders'].append(factory("caldance")) + c['builders'].append(factory("caldance", locks=[db_lock.access('exclusive')])) - c['builders'].append(deploy_factory("caldance")) + c['builders'].append(deploy_factory("caldance", locks=[db_lock.access('exclusive')])) c['services'].append(SlackStatusPush( name="slack_status_caldance", @@ -96,7 +98,7 @@ def configure(c): recipients=E.XMPP_RECIPIENTS, password=open(E.SECRETS_FILE + "/notify_xmpp_password", "r").read().rstrip())) -def factory(project, ignore_fails=False): +def factory(project, locks=[], ignore_fails=False): release_file = "{1}/{0}_%(kw:clean_branch)s.tar.gz" package = util.Interpolate("{0}_%(kw:clean_branch)s.tar.gz".format(project), clean_branch=clean_branch) @@ -111,6 +113,7 @@ def factory(project, ignore_fails=False): return util.BuilderConfig( name="{}_build".format(project.capitalize()), + locks=locks, workernames=["generic-worker"], factory=factory) def compute_build_infos(project): @@ -133,7 +136,7 @@ def puppet_host(props): environment = props["environment"] if props.hasProperty("environment") else "integration" return E.PUPPET_HOST.get(environment, "host.invalid") -def deploy_factory(project): +def deploy_factory(project, locks=[]): package_dest = util.Interpolate("{0}/%(prop:build)s".format(E.RELEASE_PATH)) factory = util.BuildFactory() @@ -144,7 +147,10 @@ def deploy_factory(project): build_hash=util.Property("build_hash"), ldap_password=util.Secret("ldap"))) factory.addStep(steps.MasterShellCommand(command=[ "ssh", "-o", "UserKnownHostsFile=/dev/null", "-o", "StrictHostKeyChecking=no", "-o", "CheckHostIP=no", "-i", E.SSH_KEY_PATH, puppet_host])) - return util.BuilderConfig(name="{}_deploy".format(project.capitalize()), workernames=["deploy-worker"], factory=factory) + return util.BuilderConfig( + name="{}_deploy".format(project.capitalize()), + locks=locks, + workernames=["deploy-worker"], factory=factory) from twisted.internet import defer from buildbot.process.buildstep import FAILURE -- 2.41.0