]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - modules/private/buildbot/common/master.cfg
Move rest of the modules outside of nixops
[perso/Immae/Config/Nix.git] / modules / private / buildbot / common / master.cfg
diff --git a/modules/private/buildbot/common/master.cfg b/modules/private/buildbot/common/master.cfg
new file mode 100644 (file)
index 0000000..abe08e0
--- /dev/null
@@ -0,0 +1,69 @@
+# -*- python -*-
+# ex: set filetype=python:
+
+from buildbot.plugins import secrets, util, webhooks
+from buildbot.util import bytes2unicode
+import re
+import os
+from buildbot_config import E, configure
+import json
+
+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"))
+
+        return ([args], None)
+
+userInfoProvider = util.LdapUserInfo(
+        uri=E.LDAP_URL,
+        bindUser=E.LDAP_ADMIN_USER,
+        bindPw=open(E.SECRETS_FILE + "/ldap", "r").read().rstrip(),
+        accountBase=E.LDAP_BASE,
+        accountPattern=E.LDAP_PATTERN,
+        accountFullName='cn',
+        accountEmail='mail',
+        avatarData="jpegPhoto",
+        groupBase=E.LDAP_BASE,
+        groupName="cn",
+        groupMemberPattern=E.LDAP_GROUP_PATTERN,
+        )
+
+c = BuildmasterConfig = {
+        "title": E.TITLE,
+        "titleURL": E.TITLE_URL,
+        "db": {
+            "db_url": "sqlite:///state.sqlite"
+            },
+        "protocols": { "pb": { "port": E.PB_SOCKET } },
+        "workers": [],
+        "change_source": [],
+        "schedulers": [],
+        "builders": [],
+        "services": [],
+        "secretsProviders": [
+            secrets.SecretInAFile(E.SECRETS_FILE),
+            ],
+        "www": {
+            "change_hook_dialects": { "base": { "custom_class": CustomBase } },
+            "plugins": {
+                "waterfall_view": {},
+                "console_view": {},
+                "grid_view": {},
+                "buildslist": {},
+                },
+            "auth": util.RemoteUserAuth(
+                header=b"X-Remote-User",
+                userInfoProvider=userInfoProvider,
+                headerRegex=re.compile(br"(?P<username>[^ @]+)")),
+            }
+        }
+
+configure(c)