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

Side by Side Diff: scripts/master/master_gen.py

Issue 2050683002: build: switch master.tryserver.infra to use recipes from infra repo (part #1) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 4 years, 6 months 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 | « masters/master.tryserver.infra/builders.pyl ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 import ast 5 import ast
6 import os 6 import os
7 7
8 from buildbot.changes.filter import ChangeFilter 8 from buildbot.changes.filter import ChangeFilter
9 from buildbot.schedulers.basic import SingleBranchScheduler 9 from buildbot.schedulers.basic import SingleBranchScheduler
10 from buildbot.schedulers.timed import Nightly 10 from buildbot.schedulers.timed import Nightly
11 from buildbot.status.mail import MailNotifier 11 from buildbot.status.mail import MailNotifier
12 from buildbot import util 12 from buildbot import util
13 13
14 from config_bootstrap import Master 14 from config_bootstrap import Master
15 15
16 from common import chromium_utils 16 from common import chromium_utils
17 17
18 from master import gitiles_poller 18 from master import gitiles_poller
19 from master import master_utils 19 from master import master_utils
20 from master import repo_poller 20 from master import repo_poller
21 from master import slaves_list 21 from master import slaves_list
22 from master.factory import annotator_factory 22 from master.factory import annotator_factory
23 from master.factory import remote_run_factory
23 24
24 25
25 def PopulateBuildmasterConfig(BuildmasterConfig, builders_path, 26 def PopulateBuildmasterConfig(BuildmasterConfig, builders_path,
26 active_master_cls): 27 active_master_cls):
27 """Read builders_path and populate a build master config dict.""" 28 """Read builders_path and populate a build master config dict."""
28 builders = chromium_utils.ReadBuildersFile(builders_path) 29 builders = chromium_utils.ReadBuildersFile(builders_path)
29 _Populate(BuildmasterConfig, builders, active_master_cls) 30 _Populate(BuildmasterConfig, builders, active_master_cls)
30 31
31 32
32 def _Populate(BuildmasterConfig, builders, active_master_cls): 33 def _Populate(BuildmasterConfig, builders, active_master_cls):
33 m_annotator = annotator_factory.AnnotatorFactory(active_master_cls) 34 m_annotator = annotator_factory.AnnotatorFactory(active_master_cls)
34 35
35 c = BuildmasterConfig 36 c = BuildmasterConfig
36 c['logCompressionLimit'] = False 37 c['logCompressionLimit'] = False
37 c['projectName'] = active_master_cls.project_name 38 c['projectName'] = active_master_cls.project_name
38 c['projectURL'] = Master.project_url 39 c['projectURL'] = Master.project_url
39 c['buildbotURL'] = active_master_cls.buildbot_url 40 c['buildbotURL'] = active_master_cls.buildbot_url
40 41
41 # This sets c['db_url'] to the database connect string in found in 42 # This sets c['db_url'] to the database connect string in found in
42 # the .dbconfig in the master directory, if it exists. If this is 43 # the .dbconfig in the master directory, if it exists. If this is
43 # a production host, it must exist. 44 # a production host, it must exist.
44 chromium_utils.DatabaseSetup( 45 chromium_utils.DatabaseSetup(
45 c, 46 c,
46 require_dbconfig=active_master_cls.is_production_host) 47 require_dbconfig=active_master_cls.is_production_host)
47 48
48 c['builders'] = _ComputeBuilders(builders, m_annotator) 49 c['builders'] = _ComputeBuilders(builders, m_annotator, active_master_cls)
49 50
50 c['schedulers'] = _ComputeSchedulers(builders) 51 c['schedulers'] = _ComputeSchedulers(builders)
51 52
52 c['change_source'], tag_comparator = _ComputeChangeSourceAndTagComparator( 53 c['change_source'], tag_comparator = _ComputeChangeSourceAndTagComparator(
53 builders) 54 builders)
54 55
55 # The 'slaves' list defines the set of allowable buildslaves. List all the 56 # The 'slaves' list defines the set of allowable buildslaves. List all the
56 # slaves registered to a builder. Remove dupes. 57 # slaves registered to a builder. Remove dupes.
57 c['slaves'] = master_utils.AutoSetupSlaves( 58 c['slaves'] = master_utils.AutoSetupSlaves(
58 c['builders'], 59 c['builders'],
(...skipping 20 matching lines...) Expand all
79 enable_http_status_push=active_master_cls.is_production_host) 80 enable_http_status_push=active_master_cls.is_production_host)
80 81
81 # TODO: AutoSetupMaster's settings for the following are too low to be 82 # TODO: AutoSetupMaster's settings for the following are too low to be
82 # useful for most projects. We should fix that. 83 # useful for most projects. We should fix that.
83 c['buildHorizon'] = 3000 84 c['buildHorizon'] = 3000
84 c['logHorizon'] = 3000 85 c['logHorizon'] = 3000
85 # Must be at least 2x the number of slaves. 86 # Must be at least 2x the number of slaves.
86 c['eventHorizon'] = 200 87 c['eventHorizon'] = 200
87 88
88 89
89 def _ComputeBuilders(builders, m_annotator): 90 def _ComputeBuilders(builders, m_annotator, active_master_cls):
90 actual_builders = [] 91 actual_builders = []
91 92
92 default_properties = builders.get('default_properties') 93 default_properties = builders.get('default_properties')
93 94
94 def cmp_fn(a, b): 95 def cmp_fn(a, b):
95 a_cat = builders['builders'][a].get('category') 96 a_cat = builders['builders'][a].get('category')
96 b_cat = builders['builders'][b].get('category') 97 b_cat = builders['builders'][b].get('category')
97 if a_cat != b_cat: 98 if a_cat != b_cat:
98 return 1 if a_cat > b_cat else -1 99 return 1 if a_cat > b_cat else -1
99 if a != b: 100 if a != b:
(...skipping 13 matching lines...) Expand all
113 114
114 slavebuilddir = builder_data.get('slavebuilddir', 115 slavebuilddir = builder_data.get('slavebuilddir',
115 util.safeTranslate(builder_name)) 116 util.safeTranslate(builder_name))
116 117
117 if default_properties: 118 if default_properties:
118 props = default_properties.copy() 119 props = default_properties.copy()
119 props.update(builder_data.get('properties', {})) 120 props.update(builder_data.get('properties', {}))
120 else: 121 else:
121 props = builder_data.get('properties') 122 props = builder_data.get('properties')
122 123
123 factory = m_annotator.BaseFactory( 124 if builder_data.get('use_remote_run'):
124 recipe=builder_data['recipe'], 125 factory = remote_run_factory.RemoteRunFactory(
125 max_time=builder_data.get('builder_timeout_s'), 126 active_master=active_master_cls,
126 factory_properties=props, 127 repository=builder_data.get(
127 ) 128 'repository', builders.get('default_remote_run_repository')),
129 recipe=builder_data['recipe'],
130 max_time=builder_data.get('builder_timeout_s'),
131 factory_properties=props,
132 )
133 else:
134 factory = m_annotator.BaseFactory(
135 recipe=builder_data['recipe'],
136 max_time=builder_data.get('builder_timeout_s'),
137 factory_properties=props,
138 )
128 actual_builders.append({ 139 actual_builders.append({
129 'auto_reboot': builder_data.get('auto_reboot', True), 140 'auto_reboot': builder_data.get('auto_reboot', True),
130 'mergeRequests': merge_requests, 141 'mergeRequests': merge_requests,
131 'name': builder_name, 142 'name': builder_name,
132 'factory': factory, 143 'factory': factory,
133 'slavebuilddir': slavebuilddir, 144 'slavebuilddir': slavebuilddir,
134 'slavenames': chromium_utils.GetSlaveNamesForBuilder(builders, 145 'slavenames': chromium_utils.GetSlaveNamesForBuilder(builders,
135 builder_name), 146 builder_name),
136 'category': builder_data.get('category'), 147 'category': builder_data.get('category'),
137 'trybot': builder_data.get('trybot'), 148 'trybot': builder_data.get('trybot'),
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 pollInterval=300, 239 pollInterval=300,
229 revlinktmpl=rev_link_template)) 240 revlinktmpl=rev_link_template))
230 241
231 # We have to set the tag_comparator to something, but if we have multiple 242 # We have to set the tag_comparator to something, but if we have multiple
232 # repos, the tag_comparator will not work properly (it's meaningless). 243 # repos, the tag_comparator will not work properly (it's meaningless).
233 # It's not clear if there's a good answer to this. 244 # It's not clear if there's a good answer to this.
234 if change_source: 245 if change_source:
235 tag_comparator = change_source[0].comparator 246 tag_comparator = change_source[0].comparator
236 247
237 return change_source, tag_comparator 248 return change_source, tag_comparator
OLDNEW
« no previous file with comments | « masters/master.tryserver.infra/builders.pyl ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698