from buildbot.plugins import *
from buildbot_common.build_helpers import *
import os
+from buildbot.util import bytes2unicode
+import json
__all__ = [ "configure", "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())