X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=nixops%2Fmodules%2Fbuildbot%2Fprojects%2Ftest%2F__init__.py;h=e6b8d51474ca40bd4b6d8cbdfd57a6fd43e4babe;hb=256d607c2db3e56a2f481a2097ffa3ccd109d141;hp=adda289667673fa4679f6505601721f57597dc35;hpb=e2b96bf56f536b3a8db732294ac13977e96cf322;p=perso%2FImmae%2FConfig%2FNix.git diff --git a/nixops/modules/buildbot/projects/test/__init__.py b/nixops/modules/buildbot/projects/test/__init__.py index adda289..e6b8d51 100644 --- a/nixops/modules/buildbot/projects/test/__init__.py +++ b/nixops/modules/buildbot/projects/test/__init__.py @@ -1,6 +1,8 @@ from buildbot.plugins import * from buildbot_common.build_helpers import * import os +from buildbot.util import bytes2unicode +import json __all__ = [ "configure", "E" ] @@ -17,6 +19,7 @@ class E(): LDAP_HOST = "ldap.immae.eu" LDAP_DN = "cn=buildbot,ou=services,dc=immae,dc=eu" LDAP_ROLES_BASE = "ou=roles,ou=hosts,dc=immae,dc=eu" + XMPP_RECIPIENTS = os.environ["BUILDBOT_XMPP_RECIPIENTS"].split(" ") # master.cfg SECRETS_FILE = os.getcwd() + "/secrets" @@ -28,16 +31,52 @@ class E(): TITLE_URL = "https://git.immae.eu/?p=perso/Immae/TestProject.git;a=summary" TITLE = "Test project" +class CustomBase(webhooks.base): + def getChanges(self, request): + try: + content = request.content.read() + args = json.loads(bytes2unicode(content)) + except Exception as e: + raise ValueError("Error loading JSON: " + str(e)) + + args.setdefault("comments", "") + args.setdefault("repository", "") + args.setdefault("author", args.get("who", "unknown")) + + if args["category"] == "deploy_webhook": + args = { + "category": "deploy_webhook", + "comments": "", + "repository": "", + "author": "unknown", + "project": "TestProject", + "properties": { + "environment": args.get("environment", "integration"), + "build": "test_{}.tar.gz".format(args.get("branch", "master")) + } + } + + return ([args], None) + +def deploy_hook_scheduler(project, timer=1): + return schedulers.AnyBranchScheduler( + change_filter=util.ChangeFilter(category="deploy_webhook", project=project), + name="{}_deploy".format(project), treeStableTimer=timer, builderNames=["{}_deploy".format(project)]) + def configure(c): c["buildbotURL"] = E.BUILDBOT_URL c["www"]["port"] = E.SOCKET + c["www"]["change_hook_dialects"]["base"] = { + "custom_class": CustomBase + } c['workers'].append(worker.LocalWorker("generic-worker-test")) c['workers'].append(worker.LocalWorker("deploy-worker-test")) c['schedulers'].append(hook_scheduler("TestProject", timer=1)) c['schedulers'].append(force_scheduler("force_test", ["TestProject_build"])) c['schedulers'].append(deploy_scheduler("deploy_test", ["TestProject_deploy"])) + c['schedulers'].append(deploy_hook_scheduler("TestProject", timer=1)) c['builders'].append(factory()) c['builders'].append(deploy_factory()) @@ -46,6 +85,11 @@ def configure(c): name="slack_status_test_project", builders=["TestProject_build", "TestProject_deploy"], serverUrl=open(E.SECRETS_FILE + "/slack_webhook", "r").read().rstrip())) + c['services'].append(XMPPStatusPush( + name="xmpp_status_test_project", + builders=["TestProject_build", "TestProject_deploy"], + recipients=E.XMPP_RECIPIENTS, + password=open(E.SECRETS_FILE + "/notify_xmpp_password", "r").read().rstrip())) def factory(): package = util.Interpolate("test_%(kw:clean_branch)s.tar.gz", clean_branch=clean_branch)