aboutsummaryrefslogblamecommitdiff
path: root/nixops/modules/buildbot/common/master.cfg
blob: abe08e0a24066890d84c9875c2fbccd8aeccfe56 (plain) (tree)




































































                                                                               
# -*- 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)