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

Side by Side Diff: git_cl.py

Issue 1344183002: git cl try --luci, a set of hacks to demonstrate and iterate LUCI (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 5 years, 3 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
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 # Copyright (C) 2008 Evan Martin <martine@danga.com> 6 # Copyright (C) 2008 Evan Martin <martine@danga.com>
7 7
8 """A git-command for integrating reviews on Rietveld.""" 8 """A git-command for integrating reviews on Rietveld."""
9 9
10 from distutils.version import LooseVersion 10 from distutils.version import LooseVersion
(...skipping 21 matching lines...) Expand all
32 32
33 try: 33 try:
34 import readline # pylint: disable=F0401,W0611 34 import readline # pylint: disable=F0401,W0611
35 except ImportError: 35 except ImportError:
36 pass 36 pass
37 37
38 from third_party import colorama 38 from third_party import colorama
39 from third_party import httplib2 39 from third_party import httplib2
40 from third_party import upload 40 from third_party import upload
41 import auth 41 import auth
42 from luci_hacks import trigger_luci_job as luci_trigger
42 import breakpad # pylint: disable=W0611 43 import breakpad # pylint: disable=W0611
43 import clang_format 44 import clang_format
44 import dart_format 45 import dart_format
45 import fix_encoding 46 import fix_encoding
46 import gclient_utils 47 import gclient_utils
47 import git_common 48 import git_common
48 from git_footers import get_footer_svn_id 49 from git_footers import get_footer_svn_id
49 import owners 50 import owners
50 import owners_finder 51 import owners_finder
51 import presubmit_support 52 import presubmit_support
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 name, while the developers always use shortened master name 222 name, while the developers always use shortened master name
222 (tryserver.chromium.linux) by stripping off the prefix 'master.'. This 223 (tryserver.chromium.linux) by stripping off the prefix 'master.'. This
223 function does the conversion for buildbucket migration. 224 function does the conversion for buildbucket migration.
224 """ 225 """
225 prefix = 'master.' 226 prefix = 'master.'
226 if master.startswith(prefix): 227 if master.startswith(prefix):
227 return master 228 return master
228 return '%s%s' % (prefix, master) 229 return '%s%s' % (prefix, master)
229 230
230 231
232 def trigger_luci_job(changelist, masters, options):
233 """Send a job to run on LUCI."""
234 try_py = os.path.join(
235 os.path.dirname(
236 os.path.abspath(__file__)), 'luci_hacks', 'luci_recipe_run.py')
237 issue_props = changelist.GetIssueProperties()
238 issue = changelist.GetIssue()
239 patchset = changelist.GetMostRecentPatchset()
240 for _, builders_and_tests in sorted(masters.iteritems()):
estaab 2015/09/15 23:05:14 itervalues()
Ryan Tseng 2015/09/17 23:39:23 Done.
241 for builder, _ in sorted(builders_and_tests.iteritems()):
estaab 2015/09/15 23:05:14 iterkeys()
Ryan Tseng 2015/09/17 23:39:23 Done.
242 luci_trigger.trigger(
243 builder, 'HEAD', issue, patchset, issue_props['project'])
244
245
231 def trigger_try_jobs(auth_config, changelist, options, masters, category, 246 def trigger_try_jobs(auth_config, changelist, options, masters, category,
232 override_properties=None): 247 override_properties=None):
233 rietveld_url = settings.GetDefaultServerUrl() 248 rietveld_url = settings.GetDefaultServerUrl()
234 rietveld_host = urlparse.urlparse(rietveld_url).hostname 249 rietveld_host = urlparse.urlparse(rietveld_url).hostname
235 authenticator = auth.get_authenticator_for_host(rietveld_host, auth_config) 250 authenticator = auth.get_authenticator_for_host(rietveld_host, auth_config)
236 http = authenticator.authorize(httplib2.Http()) 251 http = authenticator.authorize(httplib2.Http())
237 http.force_exception_to_status_code = True 252 http.force_exception_to_status_code = True
238 issue_props = changelist.GetIssueProperties() 253 issue_props = changelist.GetIssueProperties()
239 issue = changelist.GetIssue() 254 issue = changelist.GetIssue()
240 patchset = changelist.GetMostRecentPatchset() 255 patchset = changelist.GetMostRecentPatchset()
(...skipping 2811 matching lines...) Expand 10 before | Expand all | Expand 10 after
3052 group.add_option( 3067 group.add_option(
3053 "-b", "--bot", action="append", 3068 "-b", "--bot", action="append",
3054 help=("IMPORTANT: specify ONE builder per --bot flag. Use it multiple " 3069 help=("IMPORTANT: specify ONE builder per --bot flag. Use it multiple "
3055 "times to specify multiple builders. ex: " 3070 "times to specify multiple builders. ex: "
3056 "'-b win_rel -b win_layout'. See " 3071 "'-b win_rel -b win_layout'. See "
3057 "the try server waterfall for the builders name and the tests " 3072 "the try server waterfall for the builders name and the tests "
3058 "available.")) 3073 "available."))
3059 group.add_option( 3074 group.add_option(
3060 "-m", "--master", default='', 3075 "-m", "--master", default='',
3061 help=("Specify a try master where to run the tries.")) 3076 help=("Specify a try master where to run the tries."))
3077 group.add_option( "--luci", action='store_true')
3062 group.add_option( 3078 group.add_option(
3063 "-r", "--revision", 3079 "-r", "--revision",
3064 help="Revision to use for the try job; default: the " 3080 help="Revision to use for the try job; default: the "
3065 "revision will be determined by the try server; see " 3081 "revision will be determined by the try server; see "
3066 "its waterfall for more info") 3082 "its waterfall for more info")
3067 group.add_option( 3083 group.add_option(
3068 "-c", "--clobber", action="store_true", default=False, 3084 "-c", "--clobber", action="store_true", default=False,
3069 help="Force a clobber before building; e.g. don't do an " 3085 help="Force a clobber before building; e.g. don't do an "
3070 "incremental build") 3086 "incremental build")
3071 group.add_option( 3087 group.add_option(
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
3170 'Instead send your job to the parent.\n' 3186 'Instead send your job to the parent.\n'
3171 'Bot list: %s' % builders) 3187 'Bot list: %s' % builders)
3172 return 1 3188 return 1
3173 3189
3174 patchset = cl.GetMostRecentPatchset() 3190 patchset = cl.GetMostRecentPatchset()
3175 if patchset and patchset != cl.GetPatchset(): 3191 if patchset and patchset != cl.GetPatchset():
3176 print( 3192 print(
3177 '\nWARNING Mismatch between local config and server. Did a previous ' 3193 '\nWARNING Mismatch between local config and server. Did a previous '
3178 'upload fail?\ngit-cl try always uses latest patchset from rietveld. ' 3194 'upload fail?\ngit-cl try always uses latest patchset from rietveld. '
3179 'Continuing using\npatchset %s.\n' % patchset) 3195 'Continuing using\npatchset %s.\n' % patchset)
3180 if not options.use_rietveld: 3196 if options.luci:
3197 trigger_luci_job(cl, masters, options)
3198 elif not options.use_rietveld:
3181 try: 3199 try:
3182 trigger_try_jobs(auth_config, cl, options, masters, 'git_cl_try') 3200 trigger_try_jobs(auth_config, cl, options, masters, 'git_cl_try')
3183 except BuildbucketResponseException as ex: 3201 except BuildbucketResponseException as ex:
3184 print 'ERROR: %s' % ex 3202 print 'ERROR: %s' % ex
3185 return 1 3203 return 1
3186 except Exception as e: 3204 except Exception as e:
3187 stacktrace = (''.join(traceback.format_stack()) + traceback.format_exc()) 3205 stacktrace = (''.join(traceback.format_stack()) + traceback.format_exc())
3188 print 'ERROR: Exception when trying to trigger tryjobs: %s\n%s' % ( 3206 print 'ERROR: Exception when trying to trigger tryjobs: %s\n%s' % (
3189 e, stacktrace) 3207 e, stacktrace)
3190 return 1 3208 return 1
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
3558 if __name__ == '__main__': 3576 if __name__ == '__main__':
3559 # These affect sys.stdout so do it outside of main() to simplify mocks in 3577 # These affect sys.stdout so do it outside of main() to simplify mocks in
3560 # unit testing. 3578 # unit testing.
3561 fix_encoding.fix_encoding() 3579 fix_encoding.fix_encoding()
3562 colorama.init() 3580 colorama.init()
3563 try: 3581 try:
3564 sys.exit(main(sys.argv[1:])) 3582 sys.exit(main(sys.argv[1:]))
3565 except KeyboardInterrupt: 3583 except KeyboardInterrupt:
3566 sys.stderr.write('interrupted\n') 3584 sys.stderr.write('interrupted\n')
3567 sys.exit(1) 3585 sys.exit(1)
OLDNEW
« no previous file with comments | « .gitignore ('k') | luci_hacks/README.md » ('j') | luci_hacks/luci_recipe_run.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698