ProxyPreserveHost On
</Location>
<Location /buildbot/${project.name}/change_hook/base>
- Require local
+ <RequireAny>
+ Require local
+ Require ldap-group cn=users,ou=${project.name},cn=buildbot,ou=services,dc=immae,dc=eu
+ ${if lib.attrsets.hasAttr "webhookTokens" project then ''
+ Require expr "req('Access-Key') in { ${builtins.concatStringsSep ", " (map (x: "'${x}'") project.webhookTokens)} }"
+ '' else ""}
+ </RequireAny>
</Location>
'') myconfig.env.buildbot.projects;
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://caldance.immae.eu"
TITLE = "Caldance"
+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": "webhook",
+ "project": "Caldance",
+ "properties": {
+ "environment": args.get("environment", "integration"),
+ "build": "caldance_{}.tar.gz".format(args.get("build", "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"))
c['workers'].append(worker.LocalWorker("deploy-worker"))
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"))
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())