/
shared.cfg
144 lines (108 loc) · 4.28 KB
/
shared.cfg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# -*- python -*-
# ex: set syntax=python:
c = BuildmasterConfig = {}
from buildbot.buildslave import BuildSlave
import json
import os
import os.path
import site
# set umask back to public reading against twistd daemonize
os.umask(18)
# don't conserve disk space
c['buildHorizon'] = c['logHorizon'] = False
# hook up elmo and django and friends
site.addsitedir(os.path.join(basedir, '..', 'vendor-local'))
os.environ['DJANGO_SETTINGS_MODULE'] = settings.__name__
buildbase = os.path.abspath(os.path.join(basedir, settings.buildbase, master_name))
_slavedata = json.load(open(os.path.join(basedir, 'slaves.json')))
def _slavenames(*tags):
return [sd['name']
for sd in _slavedata
if all(tag in sd['tags'] for tag in tags)]
c['slaves'] = [
BuildSlave(sd['name'], sd['password']) for sd in _slavedata
]
c['slavePortnum'] = None # needs to be in master.cfg
import bb2mbdb.status
reload(bb2mbdb.status)
bb2mbdb.status.setupBridge(master_name, None, c)
import l10ninsp.logger
reload(l10ninsp.logger)
l10ninsp.logger.init(
scheduler = l10ninsp.logger.DEBUG
)
# l10n inspection factory
import l10ninsp.process
reload(l10ninsp.process)
import l10ninsp.steps
reload(l10ninsp.steps)
import l10ninsp.scheduler
reload(l10ninsp.scheduler)
from l10ninsp.process import Factory, DirFactory
####### CHANGESOURCES
# the 'change_source' list tells the buildmaster how it should find out about
# source code changes. Any class which implements IChangeSource can be added
# to this list: there are several in buildbot/changes/*.py to choose from.
c['change_source'] = []
from buildbot.changes.pb import PBChangeSource
c['change_source'].append(PBChangeSource())
import l10ninsp.changes
reload(l10ninsp.changes)
c['change_source'].append(l10ninsp.changes.createChangeSource(settings.__name__))
####### SCHEDULERS
## configure the Schedulers
if not 'schedulers' in c:
c['schedulers'] = []
sa = l10ninsp.scheduler.AppScheduler('l10n-apps', ['compare'],
'l10nbuilds.ini', 'tree-builder')
c['schedulers'].append(sa)
try:
_dirdata = json.load(open(os.path.join(basedir, 'dir-builds.json')))
except IOError:
_dirdata = []
for _dd in _dirdata:
ds = l10ninsp.scheduler.DirScheduler('%s-sched' % _dd['name'],
_dd['name'],
_dd['repo'],
['dc'],
_dd['server'],
locales=_dd.get('locales'))
c['schedulers'].append(ds)
def mergeRequests(builder, req1, req2):
return req1.properties == req2.properties
c['mergeRequests'] = mergeRequests
####### BUILDERS
from buildbot.process import factory
from buildbot.process.properties import WithProperties
c['builders'] = []
f = Factory(settings.REPOSITORY_BASE, master_name)
c['builders'].append({'name': 'compare',
'slavenames': _slavenames('compare'),
'builddir': os.path.join(buildbase, 'compare'),
'factory': f})
if _dirdata:
# we have some directory-based addons, create a builder for them
df = DirFactory(settings.REPOSITORY_BASE, 'l10n-master')
c['builders'].append({'name': 'dc',
'slavenames': _slavenames('compare'),
'builddir': os.path.join(buildbase, 'dc'),
'factory': df})
treefactory = factory.BuildFactory()
treefactory.addStep(l10ninsp.steps.TreeLoader,
treename=WithProperties('%(tree)s'),
l10nbuilds=WithProperties('%(l10nbuilds)s'),
cb=sa.addTree)
c['builders'].append({'name': 'tree-builder',
'slavenames': _slavenames('tree'),
'builddir': os.path.join(buildbase, 'tree_builds'),
'factory': treefactory,
})
####### STATUS TARGETS
# 'status' is a list of Status Targets. The results of each build will be
# pushed to these targets. buildbot/status/*.py has a variety to choose from,
# including web pages, email senders, and IRC bots.
if not 'status' in c:
c['status'] = []
from buildbot.status import html
c['status'].append(html.WebStatus(http_port=web_port,
allowForce=True))