Commit 690d35f4 authored by Grzegorz Bizon's avatar Grzegorz Bizon

Merge branch 'fix-bamboo-results' into 'master'

Correctly process Bamboo API results

Closes #51950

See merge request gitlab-org/gitlab-ce!21970
parents 78009640 60937ada
......@@ -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')
......
---
title: "Correctly process Bamboo API result array"
merge_request: 21970
author: Alex Lossent
type: fixed
\ No newline at end of file
......@@ -245,6 +245,7 @@ describe BambooService, :use_clean_rails_memory_store_caching do
end
def bamboo_response(result_key: 42, build_state: 'success', size: 1)
%Q({"results":{"results":{"size":"#{size}","result":{"buildState":"#{build_state}","planResultKey":{"key":"#{result_key}"}}}}})
# reference: https://docs.atlassian.com/atlassian-bamboo/REST/6.2.5/#d2e786
%Q({"results":{"results":{"size":"#{size}","result":[{"buildState":"#{build_state}","planResultKey":{"key":"#{result_key}"}}]}}})
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment