diff options
author | Alex Lossent <alexandre.lossent@cern.ch> | 2018-09-27 19:17:20 +0300 |
---|---|---|
committer | Alex Lossent <alexandre.lossent@cern.ch> | 2018-10-19 11:22:55 +0300 |
commit | 60937adacb0242d561616660360fad4cd54614c1 (patch) | |
tree | 8c85133e0d1422509a02e2910ada12a5f2f467ea /app/models/project_services | |
parent | d76c647797ac7fe55f6f98b4acc1f8f061368e5e (diff) |
Correctly process Bamboo API results
Bamboo API returns an array of results as per
https://docs.atlassian.com/atlassian-bamboo/REST/6.2.5/#d2e786
Diffstat (limited to 'app/models/project_services')
-rw-r--r-- | app/models/project_services/bamboo_service.rb | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/app/models/project_services/bamboo_service.rb b/app/models/project_services/bamboo_service.rb index d502423726c..d121d088ff6 100644 --- a/app/models/project_services/bamboo_service.rb +++ b/app/models/project_services/bamboo_service.rb @@ -80,13 +80,18 @@ class BambooService < CiService private + def get_build_result_index + # When Bamboo returns multiple results for a given changeset, arbitrarily assume the most relevant result to be the last one. + -1 + end + def read_build_page(response) - if response.code != 200 || response['results']['results']['size'] == '0' + if response.code != 200 || response.dig('results', 'results', 'size') == '0' # If actual build link can't be determined, send user to build summary page. URI.join("#{bamboo_url}/", "browse/#{build_key}").to_s else # If actual build link is available, go to build result page. - result_key = response['results']['results']['result']['planResultKey']['key'] + result_key = response.dig('results', 'results', 'result', get_build_result_index, 'planResultKey', 'key') URI.join("#{bamboo_url}/", "browse/#{result_key}").to_s end end @@ -94,10 +99,10 @@ class BambooService < CiService def read_commit_status(response) return :error unless response.code == 200 || response.code == 404 - status = if response.code == 404 || response['results']['results']['size'] == '0' + status = if response.code == 404 || response.dig('results', 'results', 'size') == '0' 'Pending' else - response['results']['results']['result']['buildState'] + response.dig('results', 'results', 'result', get_build_result_index, 'buildState') end if status.include?('Success') |