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

Unified Diff: git_cl.py

Issue 2274743003: Add a --json option to git cl try-results. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Add url and bucket, update test Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tests/git_cl_test.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: git_cl.py
diff --git a/git_cl.py b/git_cl.py
index a1f58c8561f8129afd9cab9cf3de775fd5864d87..dc6f4cdd9a623190b1492dbeaf3723458927e5ac 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -398,7 +398,7 @@ def trigger_try_jobs(auth_config, changelist, options, masters, category):
def fetch_try_jobs(auth_config, changelist, options):
"""Fetches try jobs from buildbucket.
- Returns a map from build id to build info as json dictionary.
+ Returns a map from build id to build info as a dictionary.
"""
rietveld_url = settings.GetDefaultServerUrl()
rietveld_host = urlparse.urlparse(rietveld_url).hostname
@@ -533,6 +533,31 @@ def print_try_jobs(options, builds):
print('Total: %d try jobs' % total)
+def write_try_results_json(output_file, builds):
+ """Writes a subset of the data from fetch_try_jobs to a file as JSON.
+
+ The input |builds| dict is assumed to be generated by Buildbucket.
+ Buildbucket documentation: http://goo.gl/G0s101
+ """
+
+ def convert_build_dict(build):
+ return {
+ 'buildbucket_id': build.get('id'),
+ 'status': build.get('status'),
+ 'result': build.get('result'),
+ 'bucket': build.get('bucket'),
+ 'builder_name': json.loads(
+ build.get('parameters_json', '{}')).get('builder_name'),
+ 'failure_reason': build.get('failure_reason'),
+ 'url': build.get('url'),
+ }
+
+ converted = []
+ for _, build in sorted(builds.items()):
+ converted.append(convert_build_dict(build))
+ write_json(output_file, converted)
+
+
def MatchSvnGlob(url, base_url, glob_spec, allow_wildcards):
"""Return the corresponding git ref if |base_url| together with |glob_spec|
matches the full |url|.
@@ -4755,6 +4780,8 @@ def CMDtry_results(parser, args):
group.add_option(
"--buildbucket-host", default='cr-buildbucket.appspot.com',
help="Host of buildbucket. The default host is %default.")
+ group.add_option(
+ '--json', help='Path of JSON output file to write try job results to.')
parser.add_option_group(group)
auth.add_auth_options(parser)
options, args = parser.parse_args(args)
@@ -4783,7 +4810,10 @@ def CMDtry_results(parser, args):
print('ERROR: Exception when trying to fetch try jobs: %s\n%s' %
(e, stacktrace))
return 1
- print_try_jobs(options, jobs)
+ if options.json:
+ write_try_results_json(options.json, jobs)
+ else:
+ print_try_jobs(options, jobs)
return 0
« no previous file with comments | « no previous file | tests/git_cl_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698