@@ -80,24 +80,29 @@ def calculate_reactive_cache(sha, ref)
80
80
81
81
private
82
82
83
+ def get_build_result_index
84
+ # When Bamboo returns multiple results for a given changeset, arbitrarily assume the most relevant result to be the last one.
85
+ -1
86
+ end
87
+
83
88
def read_build_page ( response )
84
- if response . code != 200 || response [ 'results' ] [ 'results' ] [ 'size' ] == '0'
89
+ if response . code != 200 || response . dig ( 'results' , 'results' , 'size' ) == '0'
85
90
# If actual build link can't be determined, send user to build summary page.
86
91
URI . join ( "#{ bamboo_url } /" , "browse/#{ build_key } " ) . to_s
87
92
else
88
93
# If actual build link is available, go to build result page.
89
- result_key = response [ 'results' ] [ 'results' ] [ 'result' ] [ 'planResultKey' ] [ 'key' ]
94
+ result_key = response . dig ( 'results' , 'results' , 'result' , get_build_result_index , 'planResultKey' , 'key' )
90
95
URI . join ( "#{ bamboo_url } /" , "browse/#{ result_key } " ) . to_s
91
96
end
92
97
end
93
98
94
99
def read_commit_status ( response )
95
100
return :error unless response . code == 200 || response . code == 404
96
101
97
- status = if response . code == 404 || response [ 'results' ] [ 'results' ] [ 'size' ] == '0'
102
+ status = if response . code == 404 || response . dig ( 'results' , 'results' , 'size' ) == '0'
98
103
'Pending'
99
104
else
100
- response [ 'results' ] [ 'results' ] [ 'result' ] [ 'buildState' ]
105
+ response . dig ( 'results' , 'results' , 'result' , get_build_result_index , 'buildState' )
101
106
end
102
107
103
108
if status . include? ( 'Success' )
0 commit comments