@ -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 %d efault. " )
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