XMPP_RECIPIENTS = os.environ["BUILDBOT_XMPP_RECIPIENTS"].split(" ")
PUPPET_HOST = {
- "integration": "root@caldance.immae.eu",
+ "integration": [ "-p8022", "root@caldance.immae.eu"],
}
# master.cfg
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",
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)
return util.BuilderConfig(
name="{}_build".format(project.capitalize()),
+ locks=locks,
workernames=["generic-worker"], factory=factory)
def compute_build_infos(project):
return compute
@util.renderer
-def puppet_host(props):
+def puppet_ssh_command(props):
environment = props["environment"] if props.hasProperty("environment") else "integration"
- return E.PUPPET_HOST.get(environment, "host.invalid")
+ ssh_command = [
+ "ssh", "-o", "UserKnownHostsFile=/dev/null", "-o", "StrictHostKeyChecking=no", "-o", "CheckHostIP=no",
+ "-i", E.SSH_KEY_PATH ]
+ return ssh_command + 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()
factory.addStep(LdapPush(environment=util.Property("environment"),
project=project, build_version=util.Property("build_version"),
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)
+ factory.addStep(steps.MasterShellCommand(command=puppet_ssh_command))
+ 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