]>
Commit | Line | Data |
---|---|---|
1 | # -*- python -*- | |
2 | # ex: set filetype=python: | |
3 | ||
4 | from buildbot.plugins import secrets, util, webhooks | |
5 | from buildbot.util import bytes2unicode | |
6 | import re | |
7 | import os | |
8 | from buildbot_config import E, configure | |
9 | import json | |
10 | ||
11 | class CustomBase(webhooks.base): | |
12 | def getChanges(self, request): | |
13 | try: | |
14 | content = request.content.read() | |
15 | args = json.loads(bytes2unicode(content)) | |
16 | except Exception as e: | |
17 | raise ValueError("Error loading JSON: " + str(e)) | |
18 | ||
19 | args.setdefault("comments", "") | |
20 | args.setdefault("repository", "") | |
21 | args.setdefault("author", args.get("who")) | |
22 | ||
23 | return ([args], None) | |
24 | ||
25 | userInfoProvider = util.LdapUserInfo( | |
26 | uri=E.LDAP_URL, | |
27 | bindUser=E.LDAP_ADMIN_USER, | |
28 | bindPw=open(E.SECRETS_FILE + "/ldap", "r").read().rstrip(), | |
29 | accountBase=E.LDAP_BASE, | |
30 | accountPattern=E.LDAP_PATTERN, | |
31 | accountFullName='cn', | |
32 | accountEmail='mail', | |
33 | avatarData="jpegPhoto", | |
34 | groupBase=E.LDAP_BASE, | |
35 | groupName="cn", | |
36 | groupMemberPattern=E.LDAP_GROUP_PATTERN, | |
37 | ) | |
38 | ||
39 | c = BuildmasterConfig = { | |
40 | "title": E.TITLE, | |
41 | "titleURL": E.TITLE_URL, | |
42 | "db": { | |
43 | "db_url": "sqlite:///state.sqlite" | |
44 | }, | |
45 | "protocols": { "pb": { "port": E.PB_SOCKET } }, | |
46 | "workers": [], | |
47 | "change_source": [], | |
48 | "schedulers": [], | |
49 | "builders": [], | |
50 | "services": [], | |
51 | "secretsProviders": [ | |
52 | secrets.SecretInAFile(E.SECRETS_FILE), | |
53 | ], | |
54 | "www": { | |
55 | "change_hook_dialects": { "base": { "custom_class": CustomBase } }, | |
56 | "plugins": { | |
57 | "waterfall_view": {}, | |
58 | "console_view": {}, | |
59 | "grid_view": {}, | |
60 | "buildslist": {}, | |
61 | }, | |
62 | "auth": util.RemoteUserAuth( | |
63 | header=b"X-Remote-User", | |
64 | userInfoProvider=userInfoProvider, | |
65 | headerRegex=re.compile(br"(?P<username>[^ @]+)")), | |
66 | } | |
67 | } | |
68 | ||
69 | configure(c) |