| OLD | NEW |
| 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 | 5 |
| 6 """Miscellaneous utilities needed by the Skia buildbot master.""" | 6 """Miscellaneous utilities needed by the Skia buildbot master.""" |
| 7 | 7 |
| 8 | 8 |
| 9 import httplib2 | 9 import httplib2 |
| 10 import re | 10 import re |
| 11 | 11 |
| 12 | 12 |
| 13 # requires Google APIs client library for Python; see | 13 # requires Google APIs client library for Python; see |
| 14 # https://code.google.com/p/google-api-python-client/wiki/Installation | 14 # https://code.google.com/p/google-api-python-client/wiki/Installation |
| 15 from apiclient.discovery import build | 15 from apiclient.discovery import build |
| 16 from buildbot.scheduler import AnyBranchScheduler | 16 from buildbot.scheduler import AnyBranchScheduler |
| 17 from buildbot.schedulers import timed | 17 from buildbot.schedulers import timed |
| 18 from buildbot.schedulers.filter import ChangeFilter | 18 from buildbot.schedulers.filter import ChangeFilter |
| 19 from buildbot.util import NotABranch | 19 from buildbot.util import NotABranch |
| 20 from config_private import TRY_SVN_BASEURL | 20 from config_private import TRY_SVN_BASEURL |
| 21 from master import master_config | 21 from master import master_config |
| 22 from master.builders_pools import BuildersPools | 22 from master.builders_pools import BuildersPools |
| 23 from master import try_job_svn | 23 from master import try_job_svn |
| 24 from oauth2client.client import SignedJwtAssertionCredentials | 24 from oauth2client.client import SignedJwtAssertionCredentials |
| 25 from skia_master_scripts import android_factory | 25 from skia_master_scripts import android_factory |
| 26 from skia_master_scripts import chromeos_factory | 26 from skia_master_scripts import chromeos_factory |
| 27 from skia_master_scripts import factory as skia_factory | 27 from skia_master_scripts import factory as skia_factory |
| 28 from skia_master_scripts import housekeeping_percommit_factory, \ |
| 29 housekeeping_periodic_factory |
| 28 from skia_master_scripts import ios_factory | 30 from skia_master_scripts import ios_factory |
| 29 | 31 |
| 30 | 32 |
| 31 TRYBOT_NAME_SUFFIX = '_Trybot' | 33 TRYBOT_NAME_SUFFIX = '_Trybot' |
| 32 | 34 |
| 33 | 35 |
| 34 class SkiaChangeFilter(ChangeFilter): | 36 class SkiaChangeFilter(ChangeFilter): |
| 35 """Skia specific subclass of ChangeFilter.""" | 37 """Skia specific subclass of ChangeFilter.""" |
| 36 | 38 |
| 37 def __init__(self, builders, **kwargs): | 39 def __init__(self, builders, **kwargs): |
| (...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 432 def _MakeBuilderAndMaybeTrybotSet(do_trybots=True, **kwargs): | 434 def _MakeBuilderAndMaybeTrybotSet(do_trybots=True, **kwargs): |
| 433 _MakeBuilderSet(is_trybot=False, **kwargs) | 435 _MakeBuilderSet(is_trybot=False, **kwargs) |
| 434 if do_trybots: | 436 if do_trybots: |
| 435 _MakeBuilderSet(is_trybot=True, **kwargs) | 437 _MakeBuilderSet(is_trybot=True, **kwargs) |
| 436 | 438 |
| 437 | 439 |
| 438 def MakeBuilderSet(**kwargs): | 440 def MakeBuilderSet(**kwargs): |
| 439 _MakeBuilderAndMaybeTrybotSet(factory_type=skia_factory.SkiaFactory, **kwargs) | 441 _MakeBuilderAndMaybeTrybotSet(factory_type=skia_factory.SkiaFactory, **kwargs) |
| 440 | 442 |
| 441 | 443 |
| 444 def MakeHousekeeperBuilderSet(helper, do_trybots, do_upload_results): |
| 445 B = helper.Builder |
| 446 F = helper.Factory |
| 447 |
| 448 builder_factory_scheduler = [ |
| 449 # The Percommit housekeeper |
| 450 ('Skia_PerCommit_House_Keeping', |
| 451 housekeeping_percommit_factory.HouseKeepingPerCommitFactory, |
| 452 'skia_rel'), |
| 453 # The Periodic housekeeper |
| 454 ('Skia_Periodic_House_Keeping', |
| 455 housekeeping_periodic_factory.HouseKeepingPeriodicFactory, |
| 456 'skia_periodic'), |
| 457 ] |
| 458 if do_trybots: |
| 459 # Add the corresponding trybot builders to the above list. |
| 460 builder_factory_scheduler.extend([ |
| 461 (builder + TRYBOT_NAME_SUFFIX, factory, 'skia_try') |
| 462 for (builder, factory, _scheduler) in builder_factory_scheduler]) |
| 463 |
| 464 for (builder_name, factory, scheduler) in builder_factory_scheduler: |
| 465 B(builder_name, 'f_%s' % builder_name, scheduler=scheduler) |
| 466 F('f_%s' % builder_name, |
| 467 factory( |
| 468 do_upload_results=do_upload_results, |
| 469 target_platform=skia_factory.TARGET_PLATFORM_LINUX, |
| 470 builder_name=builder_name, |
| 471 do_patch_step=(scheduler == 'skia_try'), |
| 472 ).Build()) |
| 473 |
| 474 |
| 442 def MakeAndroidBuilderSet(extra_branches=None, **kwargs): | 475 def MakeAndroidBuilderSet(extra_branches=None, **kwargs): |
| 443 if not extra_branches: | 476 if not extra_branches: |
| 444 extra_branches = [] | 477 extra_branches = [] |
| 445 extra_branches.append('android') | 478 extra_branches.append('android') |
| 446 _MakeBuilderAndMaybeTrybotSet(factory_type=android_factory.AndroidFactory, | 479 _MakeBuilderAndMaybeTrybotSet(factory_type=android_factory.AndroidFactory, |
| 447 extra_branches=extra_branches, | 480 extra_branches=extra_branches, |
| 448 **kwargs) | 481 **kwargs) |
| 449 | 482 |
| 450 | 483 |
| 451 def MakeChromeOSBuilderSet(**kwargs): | 484 def MakeChromeOSBuilderSet(**kwargs): |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 495 # request is associated with a change but the revisions match (#5 above). | 528 # request is associated with a change but the revisions match (#5 above). |
| 496 if req1.source.changes and not req2.source.changes: | 529 if req1.source.changes and not req2.source.changes: |
| 497 return False | 530 return False |
| 498 if not req1.source.changes and req2.source.changes: | 531 if not req1.source.changes and req2.source.changes: |
| 499 return False | 532 return False |
| 500 if not (req1.source.changes and req2.source.changes): | 533 if not (req1.source.changes and req2.source.changes): |
| 501 if req1.source.revision != req2.source.revision: | 534 if req1.source.revision != req2.source.revision: |
| 502 return False | 535 return False |
| 503 | 536 |
| 504 return True | 537 return True |
| OLD | NEW |