OLD | NEW |
---|---|
1 # -*- python -*- | 1 # -*- python -*- |
2 # ex: set syntax=python: | 2 # ex: set syntax=python: |
3 | |
3 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 4 # Copyright (c) 2011 The Chromium Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 5 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 6 # found in the LICENSE file. |
6 | 7 |
7 # READ THIS: | 8 # This is the buildmaster config file for the 'chromeos' bot. It must |
8 # See http://dev.chromium.org/developers/testing/chromium-build-infrastructure | 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'). | |
9 | 12 |
10 # These modules come from scripts, which must be in the PYTHONPATH. | 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 # These modules come from scripts/master, which must be in the PYTHONPATH. | |
18 import master.cros_builder_mapping as cros_builder_mapping | |
19 # Perform reload so a 'make reconfig' picks up changes to cros_builder_mapping | |
20 reload(cros_builder_mapping) | |
21 | |
11 from master import master_utils | 22 from master import master_utils |
12 from master import slaves_list | 23 from master import slaves_list |
13 from master import try_job_status_update | 24 from master.cros_builders_pools import CrOSBuildersPools |
14 from master.builders_pools import BuildersPools | 25 from master.cros_try_job_git import CrOSTryJobGit |
15 from master.factory import chromium_factory, chromeos_factory | 26 from master.factory import chromeos_factory |
16 from master.try_job_http import TryJobHTTP | |
17 from master.try_job_svn import TryJobSubversion | |
18 | 27 |
28 # These modules come from scripts/common, which must be in the PYTHONPATH. | |
19 import config | 29 import config |
20 | 30 |
21 ActiveMaster = config.Master.TryServer | 31 ActiveMaster = config.Master.ChromiumOSTryServer |
22 | 32 |
23 | 33 TREE_GATE_KEEPER = ActiveMaster.is_production_host |
24 STATUS_PUSH = False | |
25 MAIL_NOTIFIER = True | |
26 UPDATE_CODEREVIEW = ActiveMaster.is_production_host | |
27 LISTEN_TO_SVN = ActiveMaster.svn_url and ActiveMaster.is_production_host | |
28 | 34 |
29 # This is the dictionary that the buildmaster pays attention to. We also use | 35 # This is the dictionary that the buildmaster pays attention to. We also use |
30 # a shorter alias to save typing. | 36 # a shorter alias to save typing. |
31 c = BuildmasterConfig = {} | 37 c = BuildmasterConfig = {} |
32 | 38 |
33 | |
34 ####### CHANGESOURCES | 39 ####### CHANGESOURCES |
35 | 40 |
36 c['change_source'] = [ ] | 41 c['change_source'] = [] |
37 | |
38 | 42 |
39 ####### BUILDERS | 43 ####### BUILDERS |
40 | 44 |
41 ## FACTORIES | 45 pools = CrOSBuildersPools(default_pool_name='ChromeOS', |
46 » » builder_mapping=cros_builder_mapping.CONFIG_NAME_DICT) | |
M-A Ruel
2011/10/14 23:21:20
Use spaces
rcui1
2011/10/14 23:52:08
Done.
| |
42 | 47 |
43 m_chromium_win = chromium_factory.ChromiumFactory( | 48 BUILDERS = [] |
44 'src/build', | |
45 target_platform='win32') | |
46 | 49 |
47 m_chromium_win_webkit = chromium_factory.ChromiumFactory( | 50 # ---------------------------------------------------------------------------- |
48 'src/build', | 51 # BUILDER DEFINITIONS |
49 target_platform='win32') | |
50 | 52 |
51 m_chromium_linux = chromium_factory.ChromiumFactory( | 53 # The 'builders' list defines the Builders. Each one is configured with a |
52 'src/build', | 54 # dictionary, using the following keys: |
53 target_platform='linux2') | 55 # name (required): the name used to describe this bilder |
56 # slavename (required): which slave to use, must appear in c['slaves'] | |
57 # builddir (required): which subdirectory to run the builder in | |
58 # factory (required): a BuildFactory to define how the build is run | |
59 # category (optional): it is not used in the normal 'buildbot' meaning. It is | |
60 # used by gatekeeper to determine which steps it should | |
61 # look for to close the tree. | |
62 # | |
54 | 63 |
55 m_chromium_mac = chromium_factory.ChromiumFactory( | 64 # Cros helper functions to build builders and factories. |
56 'src/build', | |
57 target_platform='darwin') | |
58 | 65 |
59 # Chromium for ChromiumOS | 66 def GetCBuildbotFactory(config): |
60 m_chromium_chromiumos = chromium_factory.ChromiumFactory( | 67 """Returns cros buildbot factories.""" |
61 'src/build', | 68 return chromeos_factory.CbuildbotFactory( |
62 target_platform='linux2') | 69 params=config, trybot=True, crostools_repo=None).get_factory() |
63 | 70 |
M-A Ruel
2011/10/14 23:21:20
Use 2 lines between file level symbols.
rcui1
2011/10/14 23:52:08
Done.
| |
71 def AddBuilderDefinition(display_name): | |
72 """Adds a builder definition given by the args. | |
64 | 73 |
65 def CreateBuilder(platform, builder_name, target, | 74 Args: |
66 tests=None, options=None, mode=None, timeout=2400, | 75 display_name: Name displayed on buildbot waterfall. |
67 slavebuilddir=None, extra_gyp_defines=None, | 76 """ |
68 gclient_env=None, sharding_supervisor=False, | 77 def GetConfig(): |
69 unsharded_tests=None): | 78 return cros_builder_mapping.NAME_CONFIG_DICT.get(display_name, display_name) |
70 """Generates and register a builder along with its slave(s).""" | |
71 if platform not in ('win32', 'win64', 'linux', 'mac'): | |
72 raise Exception(platform + ' is not a known os type') | |
73 factory_properties = { | |
74 'non_default': [ | |
75 'check_licenses', | |
76 'pyauto_functional_tests', | |
77 'googleurl_unittests' | |
78 ], | |
79 } | |
80 if sharding_supervisor: | |
81 factory_properties['sharding_supervisor'] = True | |
82 factory_properties['unsharded_tests'] = unsharded_tests or [] | |
83 project = None | |
84 if platform in ('win32', 'win64'): | |
85 factory = m_chromium_win | |
86 if builder_name == 'win_aura': | |
87 project = 'all.sln;aura_builder' | |
88 else: | |
89 project = 'all.sln' | |
90 factory_properties['process_dumps'] = True | |
91 factory_properties['gclient_env'] = { 'GYP_DEFINES' : 'fastbuild=1' } | |
92 factory_properties['start_crash_handler'] = True | |
93 elif platform == 'linux': | |
94 factory = m_chromium_linux | |
95 factory_properties['gclient_env'] = { 'GYP_DEFINES' : 'fastbuild=1' } | |
96 elif platform == 'mac': | |
97 factory = m_chromium_mac | |
98 factory_properties['gclient_env'] = { | |
99 'GYP_DEFINES' : 'fastbuild=1 enable_svg=0' } | |
100 if gclient_env: | |
101 factory_properties['gclient_env'] = gclient_env | |
102 if extra_gyp_defines: | |
103 factory_properties['gclient_env']['GYP_DEFINES'] += ' ' + extra_gyp_defines | |
104 builder_factory = factory.ChromiumFactory( | |
105 slave_type='Trybot', target=target, tests=tests, options=options, | |
106 mode=mode, compile_timeout=timeout, project=project, | |
107 factory_properties=factory_properties) | |
108 builder_info = { | |
109 'name': builder_name, | |
110 'factory': builder_factory, | |
111 } | |
112 if slavebuilddir: | |
113 builder_info['slavebuilddir'] = slavebuilddir | |
114 return builder_info | |
115 | 79 |
80 BUILDERS.append({ | |
81 'name': display_name, | |
82 'builddir': display_name.replace(' ', '-'), | |
83 'factory': GetCBuildbotFactory(GetConfig()), | |
84 'category': '1release full|info', | |
85 }) | |
116 | 86 |
117 def CreateCrosBuilder(builder_name, target, slavebuilddir=None, | 87 pools['ChromeOS'].append(display_name) |
118 short_name=None): | |
119 """Generates and register a ChromeOS builder along with its slave(s).""" | |
120 | 88 |
121 if short_name: | 89 # Pre Flight Queues |
122 buildroot = '/b/cbuild.%s' % short_name | 90 AddBuilderDefinition('x86 generic PFQ') |
123 else: | 91 AddBuilderDefinition('arm generic PFQ') |
124 buildroot = '/b/cbuild' | 92 AddBuilderDefinition('tegra2 PFQ') |
125 | 93 |
126 # Sets up a factory with the steps to pull out a chromium source tree and | 94 # Full Builders |
127 # apply a patch from a try job | 95 AddBuilderDefinition('x86 generic full') |
128 trial_chrome_factory = m_chromium_chromiumos.ChromiumOSFactory( | 96 AddBuilderDefinition('arm generic full') |
129 target=None, | 97 AddBuilderDefinition('tegra2 full') |
130 slave_type='CrossTry', | 98 AddBuilderDefinition('tegra2 seaboard full') |
131 tests=[], | 99 AddBuilderDefinition('x86 pineview full') |
132 ) | |
133 | 100 |
134 # Extends that factory with a Cbuildbot build steps to build and test | 101 AddBuilderDefinition('chromiumos sdk',) |
135 # CrOS using the chrome from the above chromium source tree | |
136 builder_factory = chromeos_factory.ChromeCbuildbotFactory( | |
137 params=target, | |
138 buildroot=buildroot, | |
139 crostools_repo=None, | |
140 dry_run=True, | |
141 chrome_root='.', # this is where ChromiumOSFactory has put "Chrome" | |
142 factory=trial_chrome_factory, | |
143 slave_manager=False, | |
144 ).get_factory() | |
145 | 102 |
146 builder_info = { | 103 c['builders'] = BUILDERS |
M-A Ruel
2011/10/14 23:21:20
You could set c['builders'] = [] around line 63 an
rcui1
2011/10/14 23:52:08
Done.
| |
147 'name': builder_name, | |
148 'factory': builder_factory, | |
149 } | |
150 if slavebuilddir: | |
151 builder_info['slavebuilddir'] = slavebuilddir | |
152 return builder_info | |
153 | |
154 # Try queues. | |
155 pools = BuildersPools('chrome') | |
156 | |
157 | |
158 # Tests that are not single-machine shard-safe on Linux | |
159 linux_unsharded = [ | |
160 'gfx_unittests', | |
161 'interactive_ui_tests', | |
162 'net_unittests', | |
163 'sql_unittests', | |
164 'ui_tests', | |
165 'unit_tests', | |
166 # dbus_unittests is not sharded because it takes less than 1 second to run. | |
167 'dbus_unittests'] | |
168 | |
169 # Linux builder | |
170 linux_tests = [ | |
171 'check_deps', | |
172 'check_licenses', | |
173 'base', | |
174 'net', | |
175 'googleurl', | |
176 'unit', | |
177 'ui', | |
178 'browser_tests', | |
179 'test_shell', | |
180 'webkit_unit', | |
181 'media', | |
182 'printing', | |
183 'remoting', | |
184 'nacl_integration', | |
185 'gpu', | |
186 'interactive_ui', | |
187 'safe_browsing', | |
188 'crypto', | |
189 'cacheinvalidation', | |
190 'jingle', | |
191 'dbus',] | |
192 b_linux = CreateBuilder(platform='linux', | |
193 target='Debug', | |
194 options=['--compiler=goma'], | |
195 tests=linux_tests, | |
196 builder_name='linux', | |
197 sharding_supervisor=True, | |
198 unsharded_tests=linux_unsharded) | |
199 pools['chrome'].append('linux') | |
200 | |
201 b_linux_rel = CreateBuilder(platform='linux', | |
202 target='Release', | |
203 options=['--compiler=goma'], | |
204 tests=linux_tests, | |
205 builder_name='linux_rel', | |
206 slavebuilddir='linux', | |
207 sharding_supervisor=True, | |
208 unsharded_tests=linux_unsharded, | |
209 extra_gyp_defines='dcheck_always_on=1') | |
210 | |
211 | |
212 # Tests that are not single-machine shard-safe on MacOS | |
213 mac_unsharded = [ | |
214 'gfx_unittests', | |
215 'interactive_ui_tests', | |
216 'ipc_tests', | |
217 'net_unittests', | |
218 'sql_unittests', | |
219 'ui_tests', | |
220 'unit_tests'] | |
221 | |
222 # Mac builder | |
223 mac_tests = [ | |
224 'check_deps', | |
225 'base', | |
226 'net', | |
227 'googleurl', | |
228 'unit', | |
229 'ui', | |
230 'browser_tests', | |
231 'test_shell', | |
232 'webkit_unit', | |
233 'media', | |
234 'printing', | |
235 'remoting', | |
236 'nacl_integration', | |
237 'gpu', | |
238 'interactive_ui', | |
239 'safe_browsing', | |
240 'crypto', | |
241 'pyauto_functional_tests', | |
242 'cacheinvalidation', | |
243 'jingle'] | |
244 b_mac = CreateBuilder(platform='mac', | |
245 target='Debug', | |
246 tests=mac_tests, | |
247 options=['--compiler=goma-clang'], | |
248 extra_gyp_defines='clang=1 clang_use_chrome_plugins=1', | |
249 builder_name='mac', | |
250 sharding_supervisor=True, | |
251 unsharded_tests=mac_unsharded) | |
252 pools['chrome'].append('mac') | |
253 | |
254 b_mac_rel = CreateBuilder(platform='mac', | |
255 target='Release', | |
256 tests=mac_tests, | |
257 builder_name='mac_rel', | |
258 options=['--compiler=goma-clang'], | |
259 extra_gyp_defines= | |
260 ('clang=1 ' + | |
261 'clang_use_chrome_plugins=1 ' + | |
262 'dcheck_always_on=1'), | |
263 slavebuilddir='mac', | |
264 sharding_supervisor=True, | |
265 unsharded_tests=mac_unsharded) | |
266 | |
267 | |
268 # Tests that are not single-machine shard-safe on Windows | |
269 win_unsharded = [ | |
270 'chrome_frame_net_tests', | |
271 'chrome_frame_unittests', | |
272 'content_unittests', | |
273 'gfx_unittests', | |
274 'interactive_ui_tests', | |
275 'ipc_tests', | |
276 'net_unittests', | |
277 'sql_unittests', | |
278 'ui_tests', | |
279 'unit_tests', | |
280 'views_unittests'] | |
281 | |
282 # Windows builder | |
283 win_tests = [ | |
284 'check_deps', | |
285 'base', | |
286 'net', | |
287 'googleurl', | |
288 'unit', 'ui', 'crypto', | |
289 'browser_tests', | |
290 'test_shell', | |
291 'webkit_unit', | |
292 'media', | |
293 'chrome_frame_unittests', | |
294 'chrome_frame_net_tests', | |
295 'printing', | |
296 'remoting', | |
297 'nacl_integration', | |
298 'gpu', | |
299 'installer', | |
300 'interactive_ui', | |
301 'safe_browsing', | |
302 'pyauto_functional_tests', | |
303 'cacheinvalidation', | |
304 'jingle', | |
305 'courgette'] | |
306 b_win = CreateBuilder(target='Debug', | |
307 platform='win32', | |
308 tests=win_tests, | |
309 builder_name='win', | |
310 sharding_supervisor=True, | |
311 unsharded_tests=win_unsharded) | |
312 pools['chrome'].append('win') | |
313 | |
314 b_win_rel = CreateBuilder(target='Release', | |
315 platform='win32', | |
316 tests=win_tests, | |
317 builder_name='win_rel', | |
318 slavebuilddir='win', | |
319 sharding_supervisor=True, | |
320 unsharded_tests=win_unsharded, | |
321 extra_gyp_defines='dcheck_always_on=1') | |
322 | |
323 | |
324 # TOOLKIT_VIEWS builder | |
325 b_view_linux = { | |
326 'name': 'linux_view', | |
327 'factory': m_chromium_chromiumos.ChromiumOSFactory( | |
328 target='Debug', | |
329 tests=['unit', | |
330 'base', | |
331 'net', | |
332 'googleurl', | |
333 'media', | |
334 'crypto', | |
335 'ui', | |
336 'printing', | |
337 'remoting', | |
338 'browser_tests', | |
339 'interactive_ui', | |
340 'safe_browsing', | |
341 'views', | |
342 'cacheinvalidation', | |
343 'jingle', | |
344 'dbus', | |
345 ], | |
346 options=['--compiler=goma', | |
347 'base_unittests', | |
348 'browser_tests', | |
349 'content_unittests', | |
350 'interactive_ui_tests', | |
351 'ipc_tests', | |
352 'googleurl_unittests', | |
353 'media_unittests', | |
354 'net_unittests', | |
355 'printing_unittests', | |
356 'remoting_unittests', | |
357 'safe_browsing_tests', | |
358 'sql_unittests', | |
359 'sync_unit_tests', | |
360 'ui_tests', | |
361 'unit_tests', | |
362 'views_unittests', | |
363 'gfx_unittests', | |
364 'crypto_unittests', | |
365 'cacheinvalidation_unittests', | |
366 'jingle_unittests', | |
367 'dbus_unittests', | |
368 ], | |
369 factory_properties={ | |
370 'gclient_env': {'GYP_DEFINES': 'toolkit_views=1 fastbuild=1'}}) | |
371 } | |
372 | |
373 # Chromium for ChromiumOS | |
374 b_chromium_chromiumos = { | |
375 'name': 'linux_chromeos', | |
376 'factory': m_chromium_chromiumos.ChromiumOSFactory( | |
377 target='Debug', | |
378 tests=['unit', | |
379 'base', | |
380 'net', | |
381 'googleurl', | |
382 'media', | |
383 'ui', | |
384 'printing', | |
385 'remoting', | |
386 'browser_tests', | |
387 'interactive_ui', | |
388 'safe_browsing', | |
389 'crypto', | |
390 'cacheinvalidation', | |
391 'jingle', | |
392 'dbus', | |
393 ], | |
394 options=['--compiler=goma', 'chromeos_builder'], | |
395 factory_properties={ | |
396 'gclient_env': {'GYP_DEFINES': 'chromeos=1 fastbuild=1'}}) | |
397 } | |
398 | |
399 # 32 bits tools can't link libwebcore.a anymore due to lack of virtual address | |
400 # space, including OSX 10.5. | |
401 valgrind_gyp_defines = ( | |
402 chromium_factory.ChromiumFactory.MEMORY_TOOLS_GYP_DEFINES + ' enable_svg=0') | |
403 | |
404 b_valgrind_linux = { | |
405 'name': 'linux_valgrind', | |
406 'factory': m_chromium_linux.ChromiumFactory( | |
407 target='Release', | |
408 options=['--compiler=goma', | |
409 'base_unittests', | |
410 'content_unittests', | |
411 'crypto_unittests', | |
412 'googleurl_unittests', | |
413 'ipc_tests', | |
414 'media_unittests', | |
415 'net_unittests', | |
416 'gfx_unittests', | |
417 'printing_unittests', | |
418 'remoting_unittests', | |
419 'safe_browsing_tests', | |
420 'sql_unittests', | |
421 'sync_unit_tests', | |
422 'unit_tests', | |
423 'ui_tests', | |
424 'test_shell_tests', | |
425 'DumpRenderTree', | |
426 ], | |
427 tests=['valgrind_base', | |
428 'valgrind_content', | |
429 'valgrind_crypto', | |
430 'valgrind_googleurl', | |
431 'valgrind_ipc', | |
432 'valgrind_media', | |
433 'valgrind_net', | |
434 'valgrind_printing', | |
435 'valgrind_remoting', | |
436 'valgrind_safe_browsing', | |
437 'valgrind_sql', | |
438 'valgrind_sync', | |
439 'valgrind_unit', | |
440 'valgrind_test_shell', | |
441 'valgrind_ui_gtest_filter_required', | |
442 ], | |
443 factory_properties={ | |
444 'needs_valgrind' : True, | |
445 'gclient_env': { | |
446 'GYP_DEFINES' : valgrind_gyp_defines + ' target_arch=ia32' | |
447 } | |
448 } | |
449 ), | |
450 } | |
451 | |
452 b_valgrind_mac = { | |
453 'name': 'mac_valgrind', | |
454 'factory': m_chromium_mac.ChromiumFactory( | |
455 target='Debug', | |
456 # This trybot will build every build target. We can speed up the build | |
457 # for Valgrind by building only what we really need if/when we want to. | |
458 # See http://crbug.com/42298 | |
459 tests=['valgrind_base', | |
460 'valgrind_content', | |
461 'valgrind_crypto', | |
462 'valgrind_googleurl', | |
463 'valgrind_ipc', | |
464 'valgrind_media', | |
465 'valgrind_net', | |
466 'valgrind_printing', | |
467 'valgrind_remoting', | |
468 'valgrind_safe_browsing', | |
469 'valgrind_sql', | |
470 'valgrind_unit', | |
471 'valgrind_test_shell', | |
472 'valgrind_ui_gtest_filter_required', | |
473 ], | |
474 factory_properties={ | |
475 'needs_valgrind' : True, | |
476 'gclient_env': { 'GYP_DEFINES' : valgrind_gyp_defines}}), | |
477 } | |
478 | |
479 b_chromium_chromiumos_valgrind = { | |
480 'name': 'linux_chromeos_valgrind', | |
481 'factory': m_chromium_chromiumos.ChromiumOSFactory( | |
482 target='Release', | |
483 options=['--compiler=goma', | |
484 'base_unittests', | |
485 'content_unittests', | |
486 'crypto_unittests', | |
487 'googleurl_unittests', | |
488 'ipc_tests', | |
489 'media_unittests', | |
490 'net_unittests', | |
491 'gfx_unittests', | |
492 'printing_unittests', | |
493 'remoting_unittests', | |
494 'safe_browsing_tests', | |
495 'sql_unittests', | |
496 'sync_unit_tests', | |
497 'unit_tests', | |
498 ], | |
499 tests=['valgrind_base', | |
500 'valgrind_content', | |
501 'valgrind_crypto', | |
502 'valgrind_googleurl', | |
503 'valgrind_ipc', | |
504 'valgrind_media', | |
505 'valgrind_net', | |
506 'valgrind_printing', | |
507 'valgrind_remoting', | |
508 'valgrind_safe_browsing', | |
509 'valgrind_sql', | |
510 'valgrind_sync', | |
511 'valgrind_unit', | |
512 ], | |
513 factory_properties={ | |
514 'needs_valgrind' : True, | |
515 'gclient_env': { | |
516 'GYP_DEFINES' : valgrind_gyp_defines + ' target_arch=ia32 chromeos=1' | |
517 } | |
518 } | |
519 ), | |
520 } | |
521 | |
522 b_tsan_linux = { | |
523 'name': 'linux_tsan', | |
524 # Reuse the directory. | |
525 'slavebuilddir': 'linux_valgrind', | |
526 'factory': m_chromium_linux.ChromiumFactory( | |
527 target='Release', | |
528 options=['--compiler=goma', | |
529 'base_unittests', | |
530 'content_unittests', | |
531 'crypto_unittests', | |
532 'googleurl_unittests', | |
533 'ipc_tests', | |
534 'media_unittests', | |
535 'net_unittests', | |
536 'gfx_unittests', | |
537 'printing_unittests', | |
538 'remoting_unittests', | |
539 'sql_unittests', | |
540 'sync_unit_tests', | |
541 'unit_tests', | |
542 ], | |
543 tests=['tsan_base', | |
544 'tsan_content', | |
545 'tsan_crypto', | |
546 'tsan_googleurl', | |
547 'tsan_ipc', | |
548 'tsan_media', | |
549 'tsan_net', | |
550 'tsan_printing', | |
551 'tsan_remoting', | |
552 'tsan_sql', | |
553 'tsan_sync', | |
554 'tsan_unit', | |
555 ], | |
556 factory_properties={ | |
557 'needs_valgrind' : True, | |
558 'gclient_env': { | |
559 'GYP_DEFINES' : valgrind_gyp_defines + ' target_arch=ia32' | |
560 } | |
561 } | |
562 ), | |
563 } | |
564 | |
565 # Linux coverage builder | |
566 GYP_DEFINES_FOR_COVERAGE = ('coverage=1 ' | |
567 'fastbuild=1 ' | |
568 'enable_svg=0 ') | |
569 | |
570 b_coverage_linux = { | |
571 'name': 'linux_coverage', | |
572 'factory': m_chromium_linux.ChromiumFactory( | |
573 target='Debug', | |
574 clobber=False, | |
575 options=['--compiler=goma', 'coverage_build'], | |
576 tests=['run_coverage_bundles', 'process_coverage'], | |
577 factory_properties={ | |
578 'gclient_env': { 'GYP_DEFINES' : GYP_DEFINES_FOR_COVERAGE}, | |
579 'perf_id': 'chromium-dbg-linux-try', | |
580 'use_build_number': True, | |
581 }), | |
582 } | |
583 | |
584 # WebKit Layout builders | |
585 b_linux_layout = { | |
586 'name': 'linux_layout', | |
587 'slavebuilddir': 'linux_layout', | |
588 'factory': m_chromium_linux.ChromiumFactory( | |
589 target='Debug', | |
590 tests=['test_shell', 'webkit_unit', 'webkit', 'webkit_gpu'], | |
591 options=['--compiler=goma', 'test_shell', 'test_shell_tests', | |
592 'webkit_unit_tests', 'DumpRenderTree']), | |
593 } | |
594 b_linux_layout_rel = { | |
595 'name': 'linux_layout_rel', | |
596 # Reuse the directory. | |
597 'slavebuilddir': 'linux_layout', | |
598 'factory': m_chromium_linux.ChromiumFactory( | |
599 target='Release', | |
600 tests=['test_shell', 'webkit_unit', 'webkit', 'webkit_gpu'], | |
601 options=['--compiler=goma', 'test_shell', 'test_shell_tests', | |
602 'webkit_unit_tests', 'DumpRenderTree']), | |
603 } | |
604 | |
605 b_mac_layout = { | |
606 'name': 'mac_layout', | |
607 'slavebuilddir': 'mac_layout', | |
608 'factory': m_chromium_mac.ChromiumFactory( | |
609 target='Debug', | |
610 tests=['test_shell', 'webkit_unit', 'webkit', 'webkit_gpu'], | |
611 factory_properties={ | |
612 'gclient_env': { 'GYP_DEFINES' : 'clang=1 clang_use_chrome_plugins=1'}}, | |
613 options=[ | |
614 '--compiler=goma-clang', | |
615 '--', '-project', '../webkit/webkit.xcodeproj']), | |
616 } | |
617 b_mac_layout_rel = { | |
618 'name': 'mac_layout_rel', | |
619 # Reuse the directory. | |
620 'slavebuilddir': 'mac_layout', | |
621 'factory': m_chromium_mac.ChromiumFactory( | |
622 target='Release', | |
623 tests=['test_shell', 'webkit_unit', 'webkit', 'webkit_gpu'], | |
624 factory_properties={ | |
625 'gclient_env': { 'GYP_DEFINES' : 'clang=1 clang_use_chrome_plugins=1'}}, | |
626 options=[ | |
627 '--compiler=goma-clang', | |
628 '--', '-project', '../webkit/webkit.xcodeproj']), | |
629 } | |
630 | |
631 b_win_layout = { | |
632 'name': 'win_layout', | |
633 'slavebuilddir': 'win_layout', | |
634 'factory': m_chromium_win_webkit.ChromiumFactory( | |
635 target='Debug', | |
636 project='all.sln;webkit_builder_win', | |
637 tests=['test_shell', 'webkit_unit', 'webkit', 'webkit_gpu']) | |
638 } | |
639 b_win_layout_rel = { | |
640 'name': 'win_layout_rel', | |
641 # Reuse the directory. | |
642 'slavebuilddir': 'win_layout', | |
643 'factory': m_chromium_win_webkit.ChromiumFactory( | |
644 target='Release', | |
645 project='all.sln;webkit_builder_win', | |
646 tests=['test_shell', 'webkit_unit', 'webkit', 'webkit_gpu']) | |
647 } | |
648 | |
649 | |
650 # Sync builders | |
651 b_linux_sync = CreateBuilder( | |
652 platform='linux', | |
653 target='Debug', | |
654 options=['--compiler=goma'], | |
655 tests=['sync_integration'], | |
656 builder_name='linux_sync', | |
657 slavebuilddir='linux') | |
658 b_mac_sync = CreateBuilder( | |
659 platform='mac', | |
660 target='Debug', | |
661 tests=['sync_integration'], | |
662 builder_name='mac_sync', | |
663 options=['--compiler=goma-clang'], | |
664 extra_gyp_defines='clang=1 clang_use_chrome_plugins=1', | |
665 slavebuilddir='mac') | |
666 b_win_sync = CreateBuilder( | |
667 platform='win32', | |
668 target='Debug', | |
669 tests=['sync_integration'], | |
670 builder_name='win_sync', | |
671 slavebuilddir='win') | |
672 | |
673 # Clang builders | |
674 b_linux_clang = CreateBuilder( | |
675 platform='linux', | |
676 target='Debug', | |
677 options=['--build-tool=make', '--compiler=clang'], | |
678 tests=[], | |
679 extra_gyp_defines='clang=1 clang_use_chrome_plugins=1', | |
680 builder_name='linux_clang') | |
681 | |
682 b_mac_clang_no_goma = CreateBuilder( | |
683 platform='mac', | |
684 target='Debug', | |
685 tests=['base', 'gfx', 'crypto', 'unit'], | |
686 options=['--compiler=clang'], | |
687 extra_gyp_defines='clang=1 clang_use_chrome_plugins=1', | |
688 builder_name='mac_clang_no_goma') | |
689 | |
690 b_linux_chromeos_clang = { | |
691 'name': 'linux_chromeos_clang', | |
692 'factory': m_chromium_chromiumos.ChromiumOSFactory( | |
693 target='Debug', | |
694 options=['--build-tool=make', '--compiler=clang', ], | |
695 tests=[], | |
696 factory_properties={ | |
697 'gclient_env': { | |
698 # CreateBuilder() adds "fastbuild=1" for the other 2 clang bots. | |
699 'GYP_DEFINES' : ('clang=1 clang_use_chrome_plugins=1 ' | |
700 ' target_arch=ia32 chromeos=1 fastbuild=1'), | |
701 } | |
702 } | |
703 ), | |
704 } | |
705 | |
706 # Touch builder(s) | |
707 b_linux_touch = CreateBuilder( | |
708 platform='linux', | |
709 target='Debug', | |
710 options=['--compiler=goma'] + | |
711 ['base_unittests', | |
712 'content_unittests', | |
713 'crypto_unittests', | |
714 'googleurl_unittests', | |
715 'gpu_unittests', | |
716 'media_unittests', | |
717 'printing_unittests', | |
718 'remoting_unittests', | |
719 'net_unittests', | |
720 'safe_browsing_tests', | |
721 'cacheinvalidation_unittests', | |
722 'jingle_unittests', | |
723 'sql_unittests', # from test target unit | |
724 'ipc_tests', # from test target unit | |
725 'sync_unit_tests', # from test target unit | |
726 'unit_tests', # from test target unit | |
727 'gfx_unittests', # from test target unit | |
728 'browser_tests', | |
729 'ui_tests', | |
730 'views_unittests', | |
731 'webkit_unit_tests', | |
732 ], | |
733 # tests=linux_tests would be nice, but they fail so badly and take so | |
734 # long that the bot becomes useless. | |
735 # TODO(petermayo): Make these test suites work repeatably or remove | |
736 # specific inappropriate individual tests. | |
737 tests=['webkit_unit', | |
738 'sizes', ] + | |
739 ['check_deps', | |
740 'googleurl', | |
741 'media', | |
742 'printing', | |
743 'remoting', | |
744 #'ui', | |
745 #'browser_tests', | |
746 'unit', | |
747 'gpu', | |
748 'base', | |
749 #'net', | |
750 'safe_browsing', | |
751 'crypto', | |
752 'cacheinvalidation', | |
753 'jingle', | |
754 'views'], | |
755 # These are tested on other trybots, but not on the main page bot. | |
756 # [ 'webkit_unit', 'media', 'cacheinvalidation', 'jingle'], | |
757 extra_gyp_defines='touchui=1', | |
758 builder_name='linux_touch') | |
759 | |
760 b_win_shared = CreateBuilder( | |
761 platform='win32', | |
762 target='Debug', | |
763 tests=[], | |
764 builder_name='win_shared', | |
765 extra_gyp_defines='component=shared_library') | |
766 | |
767 b_linux_shared = CreateBuilder( | |
768 platform='linux', | |
769 target='Debug', | |
770 tests=[], | |
771 builder_name='linux_shared', | |
772 extra_gyp_defines='component=shared_library') | |
773 | |
774 b_win_aura = CreateBuilder( | |
775 platform='win32', | |
776 target='Debug', | |
777 builder_name='win_aura', | |
778 tests=['views', 'compositor', 'aura', 'aura_shell'], | |
779 extra_gyp_defines='use_aura=1') | |
780 | |
781 b_linux_aura = CreateBuilder( | |
782 platform='linux', | |
783 target='Debug', | |
784 builder_name='linux_aura', | |
785 tests=['views', 'compositor', 'aura', 'aura_shell'], | |
786 options=['aura_builder'], | |
787 extra_gyp_defines='use_aura=1') | |
788 | |
789 b_linux_asan = { | |
790 'name': 'linux_asan', | |
791 'factory': m_chromium_linux.ChromiumASANFactory( | |
792 slave_type='BuilderTester', | |
793 options=[ | |
794 '--compiler=asan', | |
795 'base_unittests', | |
796 'browser_tests', | |
797 'cacheinvalidation_unittests', | |
798 'content_unittests', | |
799 'crypto_unittests', | |
800 'gfx_unittests', | |
801 'googleurl_unittests', | |
802 'gpu_unittests', | |
803 'ipc_tests', | |
804 'jingle_unittests', | |
805 'media_unittests', | |
806 'net_unittests', | |
807 'printing_unittests', | |
808 'remoting_unittests', | |
809 'safe_browsing_tests', | |
810 'sql_unittests', | |
811 'sync_unit_tests', | |
812 'ui_tests', | |
813 'unit_tests', | |
814 ], | |
815 tests=[ | |
816 'base', | |
817 'browser_tests' | |
818 'cacheinvalidation', | |
819 'crypto', | |
820 'googleurl', | |
821 'gpu', | |
822 'jingle', | |
823 'media', | |
824 'net', | |
825 'printing', | |
826 'remoting', | |
827 'safe_browsing', | |
828 'ui', | |
829 'unit', | |
830 ], | |
831 factory_properties={ | |
832 'asan': True, # Use by runtest.py. | |
833 'gclient_env': { | |
834 'GYP_DEFINES': 'clang=1 linux_use_tcmalloc=0 disable_nacl=1 ', | |
835 } | |
836 }), | |
837 } | |
838 | |
839 b_cros_pfq_x86 = CreateCrosBuilder( | |
840 'cros_x86', | |
841 '--lkgm x86-generic-tot-chrome-pfq-informational', | |
842 short_name='x86', | |
843 ) | |
844 | |
845 b_cros_pfq_arm = CreateCrosBuilder( | |
846 'cros_arm', | |
847 '--lkgm arm-generic-tot-chrome-pfq-informational', | |
848 short_name='arm', | |
849 ) | |
850 | |
851 b_cros_pfq_tegra2 = CreateCrosBuilder( | |
852 'cros_tegra2', | |
853 '--lkgm arm-tegra2-tot-chrome-pfq-informational', | |
854 short_name='tegra2', | |
855 ) | |
856 | |
857 # For now we will assume a fixed toolchain location on the builders. | |
858 crosstool_prefix = ( | |
859 '/usr/local/crosstool-trusted/arm-crosstool/bin/arm-none-linux-gnueabi') | |
860 # Factory properties to use for an arm build. | |
861 arm_gclient_env = { | |
862 'AR': crosstool_prefix + '-ar', | |
863 'AS': crosstool_prefix + '-as', | |
864 'CC': crosstool_prefix + '-gcc', | |
865 'CXX': crosstool_prefix + '-g++', | |
866 'LD': crosstool_prefix + '-ld', | |
867 'RANLIB': crosstool_prefix + '-ranlib', | |
868 'GYP_GENERATORS': 'make', | |
869 'GYP_DEFINES': ( | |
870 'target_arch=arm ' | |
871 'sysroot=/usr/local/arm-rootfs ' | |
872 'disable_nacl=1 ' | |
873 'linux_use_tcmalloc=0 ' | |
874 'armv7=1 ' | |
875 'arm_thumb=1 ' | |
876 'arm_neon=0 ' | |
877 'arm_fpu=vfpv3-d16 ' | |
878 'chromeos=1 ' # Since this is the intersting variation. | |
879 ), | |
880 } | |
881 | |
882 b_linux_chromeos_arm = { | |
883 'name': 'linux_chromeos_arm', | |
884 'factory': m_chromium_chromiumos.ChromiumOSFactory( | |
885 target='Release', | |
886 options=['--build-tool=make', | |
887 '--crosstool=' + crosstool_prefix, | |
888 'chromeos_builder'], | |
889 tests=[], | |
890 factory_properties={'gclient_env': arm_gclient_env}), | |
891 } | |
892 | |
893 c['builders'] = [ | |
894 b_linux_rel, b_mac_rel, b_win_rel, | |
895 b_linux_clang, | |
896 b_linux, b_mac, b_win, | |
897 b_view_linux, b_chromium_chromiumos, | |
898 b_valgrind_linux, b_valgrind_mac, | |
899 b_chromium_chromiumos_valgrind, b_tsan_linux, | |
900 b_linux_layout, b_mac_layout, b_win_layout, | |
901 b_linux_layout_rel, b_mac_layout_rel, b_win_layout_rel, | |
902 b_coverage_linux, | |
903 b_linux_sync, b_mac_sync, b_win_sync, | |
904 b_mac_clang_no_goma, | |
905 b_linux_chromeos_clang, | |
906 b_linux_touch, | |
907 b_win_shared, | |
908 b_linux_shared, | |
909 b_win_aura, b_linux_aura, | |
910 b_linux_asan, | |
911 b_linux_chromeos_arm, | |
912 b_cros_pfq_x86, b_cros_pfq_arm, b_cros_pfq_tegra2, | |
913 ] | |
914 | |
915 | |
916 # Slaves are loaded from slaves.cfg. | |
917 slaves = slaves_list.SlavesList('slaves.cfg', 'TryServer') | |
918 | |
919 # Associate the slaves to the builders. The configuration is in slaves.cfg. | |
920 for builder in c['builders']: | |
921 builder['slavenames'] = slaves.GetSlavesName(builder=builder['name']) | |
922 # Don't enable auto_reboot for people testing locally. | |
923 builder['auto_reboot'] = ActiveMaster.is_production_host | |
924 | 104 |
925 | 105 |
926 ####### BUILDSLAVES | 106 ####### BUILDSLAVES |
927 | 107 |
108 # the 'slaves' list defines the set of allowable buildslaves. Each element is a | |
109 # tuple of bot-name and bot-password. These correspond to values given to the | |
110 # buildslave's mktap invocation. | |
111 | |
112 # First, load the list from slaves.cfg. | |
113 slaves = slaves_list.SlavesList('slaves.cfg', 'ChromiumOSTryServer') | |
114 | |
115 # Associate the slaves to the builders. | |
116 for builder in c['builders']: | |
117 builder['slavenames'] = slaves.GetSlavesName(builder=builder['name']) | |
118 print "%s -> %s" % (builder['name'], builder['slavenames']) | |
119 # Don't enable auto_reboot for people testing locally. | |
120 print "is_production_host=%s" % ActiveMaster.is_production_host | |
121 builder.setdefault('auto_reboot', ActiveMaster.is_production_host) | |
122 | |
928 # The 'slaves' list defines the set of allowable buildslaves. List all the | 123 # The 'slaves' list defines the set of allowable buildslaves. List all the |
929 # slaves registered to a builder. Remove dupes. | 124 # slaves registered to a builder. Remove dupes. |
930 c['slaves'] = master_utils.AutoSetupSlaves(c['builders'], | 125 c['slaves'] = master_utils.AutoSetupSlaves(c['builders'], |
931 config.Master.GetBotPassword()) | 126 config.Master.GetBotPassword()) |
932 | 127 |
933 # Make sure everything works together. | |
934 master_utils.VerifySetup(c, slaves) | |
935 | |
936 | |
937 ####### SCHEDULERS | 128 ####### SCHEDULERS |
938 | 129 |
939 # Configure the Schedulers; | |
940 # Main Tryscheduler for the try queue. groups is defined in the loop above. | |
941 c['schedulers'] = [] | 130 c['schedulers'] = [] |
942 | 131 |
943 last_good_urls = {'chrome': ActiveMaster.last_good_url} | 132 c['schedulers'].append(CrOSTryJobGit( |
944 code_review_sites = {'chrome': ActiveMaster.code_review_site} | 133 name='cros_try_job_git', |
945 | 134 pools=pools, |
946 c['schedulers'].append(TryJobHTTP( | 135 repo_url=ActiveMaster.repo_url |
947 name='try_job_http', | 136 )) |
948 port=ActiveMaster.try_job_port, | |
949 last_good_urls=last_good_urls, | |
950 code_review_sites=code_review_sites, | |
951 pools=pools)) | |
952 | |
953 if LISTEN_TO_SVN: | |
954 c['schedulers'].append(TryJobSubversion( | |
955 name='try_job_svn', | |
956 svn_url=ActiveMaster.svn_url, | |
957 last_good_urls=last_good_urls, | |
958 code_review_sites=code_review_sites, | |
959 pools=pools)) | |
960 | |
961 | 137 |
962 ####### STATUS TARGETS | 138 ####### STATUS TARGETS |
963 | 139 |
964 # Adds common status and tools to this master. | 140 # Adds common status and tools to this master. |
965 # Use our own mail notifier. | 141 master_utils.AutoSetupMaster(c, ActiveMaster, order_console_by_time=True) |
966 master_utils.AutoSetupMaster(c, ActiveMaster, False) | |
967 | 142 |
968 if STATUS_PUSH: | 143 # Add a dumb MailNotifier first so it will be used for BuildSlave with |
969 from master.status_push import HttpStatusPush | 144 # notify_on_missing set when they go missing. |
970 c['status'].append(HttpStatusPush( | 145 from buildbot.status import mail |
971 'http://craebuild.appspot.com/status-listener')) | 146 c['status'].append(mail.MailNotifier( |
147 fromaddr=ActiveMaster.from_address, | |
148 builders=[], | |
149 relayhost=config.Master.smtp, | |
150 lookup=master_utils.UsersAreEmails())) | |
972 | 151 |
973 if MAIL_NOTIFIER: | 152 # Try job result emails. |
974 # Add a dumb MailNotifier first so it will be used for BuildSlave with | 153 from master.try_mail_notifier import TryMailNotifier |
975 # notify_on_missing set when they go missing. | 154 c['status'].append(TryMailNotifier( |
976 from buildbot.status import mail | 155 fromaddr=ActiveMaster.from_address, |
977 c['status'].append(mail.MailNotifier( | 156 subject="try %(result)s for %(reason)s on %(builder)s", |
978 fromaddr=ActiveMaster.from_address, | 157 mode='all', |
979 builders=[], | 158 relayhost=config.Master.smtp, |
980 relayhost=config.Master.smtp, | 159 lookup=master_utils.UsersAreEmails())) |
981 lookup=master_utils.UsersAreEmails())) | |
982 | |
983 # Try job result emails. | |
984 from master.try_mail_notifier import TryMailNotifier | |
985 c['status'].append(TryMailNotifier( | |
986 fromaddr=ActiveMaster.from_address, | |
987 subject="try %(result)s for %(reason)s on %(builder)s @ r%(revision)s", | |
988 mode='all', | |
989 relayhost=config.Master.smtp, | |
990 lookup=master_utils.UsersAreEmails())) | |
991 | |
992 if UPDATE_CODEREVIEW: | |
993 c['status'].append(try_job_status_update.TryJobStatusUpdate(None)) | |
994 | |
995 | |
996 # Keep last try jobs, the default is too low. Must keep at least a few days | |
997 # worth of try jobs. | |
998 c['buildHorizon'] = 3000 | |
999 c['logHorizon'] = 3000 | |
1000 # Must be at least 2x the number of slaves. | |
1001 c['eventHorizon'] = 200 | |
1002 # Must be at least 2x the number of on-going builds. | |
1003 c['buildCacheSize'] = 200 | |
1004 c['logCompressionLimit'] = False | |
1005 | |
1006 | |
1007 # Hack buildbot so the Stop build button doesn't work anymore. Otherwise it's | |
1008 # just a pain, user misuse this button all the time. | |
1009 def hack_stop(function): | |
1010 def hook(*args, **kwargs): | |
1011 result = function(*args, **kwargs) | |
1012 result = result.replace('<input type="submit" value="Stop', | |
1013 '<input type="button" onclick="alert(\'' | |
1014 'For more information, visit ' | |
1015 'http://dev.chromium.org/developers/try-server-usage' | |
1016 '\');"' | |
1017 ' value="Stop') | |
1018 return result | |
1019 return hook | |
1020 | |
1021 # Only do the hack_stop if we are the production master. This allows | |
1022 # us to keep the STOP button live for local/test instances. | |
1023 if ActiveMaster.is_production_host: | |
1024 from buildbot.status.web.builder import StatusResourceBuilder | |
1025 StatusResourceBuilder.build_line = hack_stop(StatusResourceBuilder.build_line) | |
1026 from buildbot.status.web import base | |
1027 base.make_stop_form = hack_stop(base.make_stop_form) | |
1028 | 160 |
1029 | 161 |
1030 ####### PROJECT IDENTITY | 162 ####### PROJECT IDENTITY |
1031 | 163 |
1032 # The 'projectURL' string will be used to provide a link | |
1033 # from buildbot HTML pages to your project's home page. | |
1034 c['projectURL'] = 'http://dev.chromium.org/developers/testing/try-server-usage' | |
1035 | |
1036 # Buildbot master url: | 164 # Buildbot master url: |
1037 c['buildbotURL'] = 'http://build.chromium.org/p/tryserver.chromium/' | 165 c['buildbotURL'] = '' |
1038 | |
1039 # vi: set ts=4 sts=2 sw=2 et: | |
OLD | NEW |