Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: master.tryserver.nacl/master.cfg

Issue 5329006: Delete obsolete masters from tools/buildbot (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/buildbot/
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « master.tryserver.nacl/buildbot.tac ('k') | master.tryserver.nacl/public_html/announce.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # -*- python -*-
2 # ex: set syntax=python:
3
4 # Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
5 # Use of this source code is governed by a BSD-style license that can be
6 # found in the LICENSE file.
7
8 # This is the buildmaster config file for the 'chromium' bot. It must
9 # be installed as 'master.cfg' in your buildmaster's base directory
10 # (although the filename can be changed with the --basedir option to
11 # 'mktap buildbot master').
12
13 # It has one job: define a dictionary named BuildmasterConfig. This
14 # dictionary has a variety of keys to control different aspects of the
15 # buildmaster. They are documented in docs/config.xhtml .
16
17 from buildbot.scheduler import Triggerable
18
19 # Reload all the python files under master and common
20 import master
21 reload(master)
22 import common
23 reload(common)
24
25 # These modules are beside this configuration file. They should be moved to
26 # scripts/master.
27 from builders_pools import BuildersPools
28 from try_job_http import TryJobHTTP
29 from try_job_svn import TryJobSubversion
30
31 # These modules come from scripts/master, which must be in the PYTHONPATH.
32 import chromium_step
33 import try_job_status_update
34 from master.factory import commands
35 from master.factory import gyp_factory
36 from master.factory import nacl_factory
37 from master.factory import nacl_sdk_factory
38 from master.factory import o3d_factory
39 import master_utils
40 import slaves_list
41
42 # These modules come from scripts/common, which must be in the PYTHONPATH.
43 import chromium_config as config
44 import chromium_utils
45
46 ActiveMaster = config.Master.NativeClientTryServer
47
48 MAIL_NOTIFIER = True
49 UPDATE_CODEREVIEW = ActiveMaster.is_production_host
50
51 # This is the dictionary that the buildmaster pays attention to. We also use
52 # a shorter alias to save typing.
53 c = BuildmasterConfig = {}
54
55
56 ####### CHANGESOURCES
57
58 c['change_source'] = [ ]
59
60
61 ####### BUILDERS
62
63 c['builders'] = []
64
65 # FACTORIES
66
67 m_win32 = {}
68 m_win64 = {}
69 m_mac = {}
70 m_linux = {}
71 m_arm = {}
72
73 m_win32['nacl'] = nacl_factory.NativeClientFactory(
74 'native_client', 'win32', use_supplement=True).NativeClientFactory
75 m_win64['nacl'] = nacl_factory.NativeClientFactory(
76 'native_client', 'win64', use_supplement=True).NativeClientFactory
77 m_linux['nacl'] = nacl_factory.NativeClientFactory(
78 'native_client', 'linux2', use_supplement=True).NativeClientFactory
79 m_mac['nacl'] = nacl_factory.NativeClientFactory(
80 'native_client', 'darwin', use_supplement=True).NativeClientFactory
81 m_arm['nacl'] = nacl_factory.NativeClientFactory(
82 'native_client', 'arm', use_supplement=True).NativeClientFactory
83
84 m_win32['naclsdk'] = nacl_sdk_factory.NativeClientSDKFactory(
85 'native_client', 'wincyg').NativeClientSDKFactory
86 m_linux['naclsdk'] = nacl_sdk_factory.NativeClientSDKFactory(
87 'native_client', 'linux2').NativeClientSDKFactory
88 m_mac['naclsdk'] = nacl_sdk_factory.NativeClientSDKFactory(
89 'native_client', 'darwin').NativeClientSDKFactory
90
91 m_win32['gyp'] = gyp_factory.GYPFactory('trunk',
92 target_platform='win32').GYPFactory
93 m_mac['gyp'] = gyp_factory.GYPFactory('trunk',
94 target_platform='darwin').GYPFactory
95 m_linux['gyp'] = gyp_factory.GYPFactory('trunk',
96 target_platform='linux2').GYPFactory
97
98 m_win32['o3d'] = o3d_factory.O3DFactory('trunk',
99 target_platform='win32').O3DFactory
100 m_mac['o3d'] = o3d_factory.O3DFactory('trunk',
101 target_platform='darwin').O3DFactory
102 m_linux['o3d'] = o3d_factory.O3DFactory('trunk',
103 target_platform='linux2').O3DFactory
104
105
106 def CreateBot(platform, password=config.Master.GetBotPassword(),
107 builder_name=None, target=None, project=None,
108 tests=None, options=None, mode=None, timeout=1200,
109 slave_names=None, factory_properties=None):
110 """Generates and register a builder along with its slave(s).
111
112 Implicitly register slave_name or slave_names if they weren't registered yet.
113 If none of slave_name or slave_names is supplied, a slave name will be
114 constructed from the builder name."""
115 if platform not in ('win32', 'win64', 'linux', 'mac', 'arm'):
116 raise Exception(platform + ' is not an known os type')
117 run_crash_handler = False
118 # Don't enable auto_reboot for people testing locally.
119 auto_reboot = ActiveMaster.is_production_host
120 if platform == 'win32':
121 factory = m_win32[project]
122 run_crash_handler = True
123 formats = ['msvs']
124 elif platform == 'win64':
125 factory = m_win64[project]
126 run_crash_handler = True
127 formats = ['msvs']
128 elif platform == 'linux':
129 factory = m_linux[project]
130 formats = ['scons', 'make']
131 elif platform == 'mac':
132 factory = m_mac[project]
133 formats = ['xcode']
134 elif platform == 'arm':
135 factory = m_arm[project]
136 formats = ['scons', 'linux']
137 # Arm slaves have issue rebooting continuously.
138 auto_reboot = False
139 if project == 'nacl':
140 builder_factory = factory(
141 identifier=builder_name, slave_type='Trybot', target=target,
142 tests=tests, options=options, mode=mode, compile_timeout=timeout,
143 clobber=True, factory_properties=factory_properties)
144 elif project == 'naclsdk':
145 builder_factory = factory(
146 identifier=builder_name, slave_type='Trybot', target=target,
147 tests=tests, options=options, mode=mode, compile_timeout=timeout,
148 clobber=True, factory_properties=factory_properties,
149 official_release=False)
150 elif project == 'o3d':
151 builder_factory = factory(
152 identifier=builder_name, slave_type='Trybot',
153 tests=tests, options=options, mode=mode, compile_timeout=timeout,
154 clobber=True)
155 elif project == 'gyp':
156 builder_factory = factory(formats=formats)
157 else:
158 assert False
159 builder = {
160 'name': builder_name,
161 # TODO(maruel): remove
162 'builddir': builder_name.replace(' ', '-'),
163 'factory': builder_factory,
164 'auto_reboot': auto_reboot,
165 }
166 if slave_names:
167 builder['slavenames'] = slave_names
168 else:
169 builder['slavename'] = builder_name.replace(' ', '-')
170 c['builders'].append(builder)
171
172
173 # Try queues.
174 pools = BuildersPools('nacl')
175 number_slaves = 12
176 slaves = slaves_list.SlavesList('slaves.cfg', 'NativeClientTryServer')
177
178
179 # A index to slave name mapper.
180 def GetSlaveName(builder_names, index):
181 s = []
182 for b in builder_names:
183 s += slaves.GetSlavesName(builder=b)
184 # Fill up with dummy test slaves.
185 s.extend(['try-%s-%d' % (builder_names[0], i)
186 for i in range(1, number_slaves + 1 - len(s))])
187 return s[index - 1]
188
189
190 projects = [
191 {
192 'name': 'nacl',
193 'platforms': [
194 {
195 'name': 'hardy32_m32_n32_dbg',
196 'core_platform': 'linux',
197 'builder_names': ['hardy32'],
198 'target': 'dbg-linux,nacl,doc',
199 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests',
200 'nacl_selenium'],
201 'options': nacl_factory.generic_m32_n32_options,
202 },
203 {
204 'name': 'hardy32_m32_n32_opt',
205 'core_platform': 'linux',
206 'builder_names': ['hardy32'],
207 'target': 'opt-linux,nacl,doc',
208 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests',
209 'nacl_selenium'],
210 'options': nacl_factory.generic_m32_n32_options,
211 },
212 {
213 'name': 'lucid32_m32_n32_dbg',
214 'core_platform': 'linux',
215 'builder_names': ['lucid32'],
216 'target': 'dbg-linux,nacl,doc',
217 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests',
218 'nacl_selenium'],
219 'options': nacl_factory.generic_m32_n32_options,
220 },
221 {
222 'name': 'lucid32_m32_n32_opt',
223 'core_platform': 'linux',
224 'builder_names': ['lucid32'],
225 'target': 'opt-linux,nacl,doc',
226 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests',
227 'nacl_selenium'],
228 'options': nacl_factory.generic_m32_n32_options,
229 },
230 {
231 'name': 'hardy64_m32_n32_dbg',
232 'core_platform': 'linux',
233 'builder_names': ['hardy64'],
234 'target': 'dbg-linux,nacl,doc',
235 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests',
236 'nacl_selenium'],
237 'options': nacl_factory.generic_m32_n32_options,
238 },
239 {
240 'name': 'hardy64_m32_n32_opt',
241 'core_platform': 'linux',
242 'builder_names': ['hardy64'],
243 'target': 'opt-linux,nacl,doc',
244 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests',
245 'nacl_selenium'],
246 'options': nacl_factory.generic_m32_n32_options,
247 },
248 {
249 'name': 'lucid64_m32_n32_dbg',
250 'core_platform': 'linux',
251 'builder_names': ['lucid64'],
252 'target': 'dbg-linux,nacl,doc',
253 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests',
254 'nacl_selenium'],
255 'options': nacl_factory.generic_m32_n32_options,
256 },
257 {
258 'name': 'lucid64_m32_n32_opt',
259 'core_platform': 'linux',
260 'builder_names': ['lucid64'],
261 'target': 'opt-linux,nacl,doc',
262 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests',
263 'nacl_selenium'],
264 'options': nacl_factory.generic_m32_n32_options,
265 },
266 {
267 'name': 'hardy64_m64_n64_dbg',
268 'core_platform': 'linux',
269 'builder_names': ['hardy64'],
270 'target': 'dbg-linux,nacl,doc',
271 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests'],
272 'options': nacl_factory.hardy64_m64_n64_options,
273 },
274 {
275 'name': 'hardy64_m64_n64_opt',
276 'core_platform': 'linux',
277 'builder_names': ['hardy64'],
278 'target': 'opt-linux,nacl,doc',
279 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests'],
280 'options': nacl_factory.hardy64_m64_n64_options,
281 },
282 {
283 'name': 'lucid64_m64_n64_dbg',
284 'core_platform': 'linux',
285 'builder_names': ['lucid64'],
286 'target': 'dbg-linux,nacl,doc',
287 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests'],
288 'options': nacl_factory.generic_m64_n64_options,
289 },
290 {
291 'name': 'lucid64_m64_n64_opt',
292 'core_platform': 'linux',
293 'builder_names': ['lucid64'],
294 'target': 'opt-linux,nacl,doc',
295 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests'],
296 'options': nacl_factory.generic_m64_n64_options,
297 },
298 {
299 'name': 'mac_dbg',
300 'core_platform': 'mac',
301 'builder_names': ['mac'],
302 'target': 'dbg-mac,nacl,doc',
303 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests',
304 'nacl_selenium'],
305 'options': nacl_factory.generic_m32_n32_options,
306 },
307 {
308 'name': 'mac_opt',
309 'core_platform': 'mac',
310 'builder_names': ['mac'],
311 'target': 'opt-mac,nacl,doc',
312 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests',
313 'nacl_selenium'],
314 'options': nacl_factory.generic_m32_n32_options,
315 },
316 {
317 'name': 'win32_dbg',
318 'core_platform': 'win32',
319 'builder_names': ['win32'],
320 'target': 'dbg-win,nacl,doc',
321 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests'],
322 'options': nacl_factory.win_m32_n32_options,
323 'factory_properties': { 'vcvarsall': 'x86' },
324 },
325 {
326 'name': 'win32_opt',
327 'core_platform': 'win32',
328 'builder_names': ['win32'],
329 'target': 'opt-win,nacl,doc',
330 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests'],
331 'options': nacl_factory.win_m32_n32_options,
332 'factory_properties': { 'vcvarsall': 'x86' },
333 },
334 {
335 'name': 'win64_dbg',
336 'core_platform': 'win64',
337 'builder_names': ['win64'],
338 'target': 'dbg-win,nacl,doc',
339 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests'],
340 'options': nacl_factory.win_m64_n64_options,
341 'factory_properties': { 'vcvarsall': 'x64' },
342 },
343 {
344 'name': 'win64_opt',
345 'core_platform': 'win64',
346 'builder_names': ['win64'],
347 'target': 'opt-win,nacl,doc',
348 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests'],
349 'options': nacl_factory.win_m64_n64_options,
350 'factory_properties': { 'vcvarsall': 'x64' },
351 },
352 {
353 'name': 'arm_dbg',
354 'core_platform': 'arm',
355 # Use a single slave to prevent races on archive file.
356 'raw_slave_names': ['jega198'],
357 'target': 'dbg-linux,nacl,doc',
358 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests',
359 'nacl_trigger_arm_hw_dbg'],
360 'options': nacl_factory.linux_marm_narm_options['opt-arm-try'],
361 'factory_properties': {
362 'archive_build': True,
363 'archive_src': 'native_client/arm.tgz',
364 'archive_dst_base': 'between_builders',
365 'archive_dst': 'arm_try_dbg.tgz',
366 },
367 },
368 {
369 'name': 'arm_opt',
370 'core_platform': 'arm',
371 # Use a single slave to prevent races on archive file.
372 'raw_slave_names': ['jega199'],
373 'target': 'opt-linux,nacl,doc',
374 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests',
375 'nacl_trigger_arm_hw_opt'],
376 'options': nacl_factory.linux_marm_narm_options['opt-arm-try'],
377 'factory_properties': {
378 'archive_build': True,
379 'archive_src': 'native_client/arm.tgz',
380 'archive_dst_base': 'between_builders',
381 'archive_dst': 'arm_try_opt.tgz',
382 },
383 },
384 ],
385 },
386 {
387 'name': 'naclsdk',
388 'platforms': [
389 {
390 'name': 'linux',
391 'core_platform': 'linux',
392 'builder_names': ['hardy32', 'hardy64', 'lucid32', 'lucid64'],
393 'target': 'nacl_client_sdk',
394 },
395 {
396 'name': 'mac',
397 'core_platform': 'mac',
398 'builder_names': ['mac'],
399 'target': 'native_client_sdk',
400 },
401 {
402 'name': 'windows',
403 'core_platform': 'win32',
404 'builder_names': ['win32'],
405 'target': 'native_client_sdk',
406 },
407 ],
408 },
409 {
410 'name': 'gyp',
411 'tests': [],
412 'platforms': [
413 {
414 'name': 'linux',
415 'builder_names': ['hardy32', 'hardy64', 'lucid32', 'lucid64'],
416 },
417 {
418 'name': 'mac',
419 },
420 {
421 'name': 'win',
422 'core_platform': 'win32',
423 'builder_names': ['win32'],
424 },
425 ],
426 },
427 {
428 'name': 'o3d',
429 'tests': [],
430 'platforms': [
431 {
432 'name': 'linux',
433 'mode': 'dbg-linux',
434 #'builder_names': ['hardy32', 'hardy64', 'lucid32', 'lucid64'],
435 'builder_names': ['hardy32', 'hardy64'],
436 },
437 {
438 'name': 'mac',
439 'mode': 'dbg-mac',
440 },
441 {
442 'name': 'd3d',
443 'core_platform': 'win32',
444 'builder_names': ['win32'],
445 'mode': 'dbg-d3d',
446 },
447 ],
448 },
449 ]
450
451 for project in projects:
452 for platform in project['platforms']:
453 true_builder_names = platform.get('builder_names', [platform['name']])
454 slave_names = [GetSlaveName(true_builder_names, x)
455 for x in range(1, number_slaves + 1)]
456 # This allows builders to pluck out particular slaves to use.
457 # It is used for the arm cross-compile builds to prevent race conditions
458 # by allowing only a single slave to write to a share archive URL.
459 slave_names = platform.get('raw_slave_names', slave_names)
460 name = project['name'] + '-' + platform['name']
461 CreateBot(platform=platform.get('core_platform', platform['name']),
462 target=platform.get('target', project.get('target')),
463 tests=platform.get('tests', project.get('tests')),
464 mode=platform.get('mode'),
465 options=platform.get('options', project.get('options')),
466 factory_properties=platform.get(
467 'factory_properties', project.get('factory_properties')),
468 slave_names=slave_names,
469 project=project['name'],
470 builder_name=name)
471 pools[project['name']].append(name)
472
473
474 # Arm board tests
475 for mode in ('dbg', 'opt'):
476 name = 'nacl-arm_hw_%s' % mode
477 f = m_arm['nacl'](name, clobber=True,
478 target='%s-linux,nacl' % mode,
479 tests=['nacl_small_tests',
480 'nacl_medium_tests',
481 'nacl_large_tests',
482 'nacl_arm_hw',
483 'nacl_selenium'],
484 options=nacl_factory.linux_marm_narm_options['%s-arm' % mode],
485 slave_type='Tester',
486 factory_properties={
487 'archive_build': False,
488 'archive_url': ('http://chrome-web/buildbot/nacl_archive/'
489 'between_builders/arm_try_%s.tgz' % mode)
490 },
491 )
492 # ARM slaves have issue rebooting so don't make them auto reboot.
493 c['builders'].append({
494 'name': name,
495 'builddir': name,
496 'factory': f,
497 'slavenames': ['nacl-arm2', 'nacl-arm2c', 'nacl-arm2d', 'nacl-arm1d'],
498 })
499
500
501 ####### BUILDSLAVES
502
503 # The 'slaves' list defines the set of allowable buildslaves. List all the
504 # slaves registered to a builder. Remove dupes.
505 c['slaves'] = master_utils.AutoSetupSlaves(c['builders'],
506 config.Master.GetBotPassword())
507
508
509 ####### SCHEDULERS
510
511 # Configure the Schedulers;
512 # Main Tryscheduler for the try queue. groups is defined in the loop above.
513 c['schedulers'] = []
514
515 last_good_urls = {
516 'nacl': config.Master.NativeClient.last_good_url,
517 'naclsdk': None,
518 'o3d': config.Master.O3D.last_good_url,
519 'gyp': None,
520 }
521 code_review_sites = {
522 'nacl': config.Master.NativeClient.code_review_site,
523 'naclsdk': None,
524 'o3d': config.Master.O3D.code_review_site,
525 'gyp': config.Master.NativeClient.code_review_site,
526 }
527 c['schedulers'].append(TryJobHTTP(
528 name='try_job_http',
529 port=ActiveMaster.try_job_port,
530 last_good_urls=last_good_urls,
531 code_review_sites=code_review_sites,
532 pools=pools))
533
534 if ActiveMaster.svn_url:
535 c['schedulers'].append(TryJobSubversion(
536 name='try_job_svn',
537 svn_url=ActiveMaster.svn_url,
538 last_good_urls=last_good_urls,
539 code_review_sites=code_review_sites,
540 pools=pools))
541
542 for mode in ('dbg', 'opt'):
543 s = Triggerable(
544 name='arm_%s_hw_tests' % mode,
545 builderNames=['nacl-arm_hw_%s' % mode])
546 c['schedulers'].append(s)
547
548
549 ####### STATUS TARGETS
550
551 # Adds common status and tools to this master.
552 master_utils.AutoSetupMaster(c, ActiveMaster, False)
553
554 # Add more.
555
556 if MAIL_NOTIFIER:
557 # Add a dumb MailNotifier first so it will be used for BuildSlave with
558 # notify_on_missing set when they go missing.
559 from buildbot.status import mail
560 c['status'].append(mail.MailNotifier(
561 fromaddr=ActiveMaster.from_address,
562 builders=[],
563 relayhost=config.Master.smtp,
564 lookup=master_utils.FilterDomain()))
565
566 # Try job result emails.
567 from try_mail_notifier import TryMailNotifier
568 c['status'].append(TryMailNotifier(
569 fromaddr=ActiveMaster.from_address,
570 subject="try of %(reason)s @ r%(revision)s %(timestamp)s",
571 mode='all',
572 relayhost=config.Master.smtp,
573 lookup=master_utils.FilterDomain()))
574
575 if UPDATE_CODEREVIEW:
576 c['status'].append(try_job_status_update.TryJobStatusUpdate(
577 important_steps=['compile']))
578
579
580 # Keep last try jobs, the default is too low. Must keep at least a few days
581 # worth of try jobs.
582 c['buildHorizon'] = 2000
583 c['logHorizon'] = 2000
584 # Must be at least 2x the number of slaves.
585 c['eventHorizon'] = 100
586 # Must be at least 2x the number of on-going builds.
587 c['buildCacheSize'] = 100
588
589
590 ####### PROJECT IDENTITY
591
592 # The 'projectURL' string will be used to provide a link
593 # from buildbot HTML pages to your project's home page.
594 c['projectURL'] = 'http://go/ChromeTryServer'
595
596 # Buildbot master url:
597 c['buildbotURL'] = 'http://buildbot.jail.google.com/buildbot/nacl-tryserver/'
OLDNEW
« no previous file with comments | « master.tryserver.nacl/buildbot.tac ('k') | master.tryserver.nacl/public_html/announce.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698