class Gitlab::QA::Support::DevEEQAImage

Constants

DEV_ADDRESS
GITLAB_EE_QA_REPOSITORY_ID
QAImageNotFoundError

Attributes

base_url[R]

Public Class Methods

new() click to toggle source
# File lib/gitlab/qa/support/dev_ee_qa_image.rb, line 14
def initialize
  @base_url = "#{DEV_ADDRESS}/api/v4/projects/gitlab%2Fomnibus-gitlab/registry/repositories/#{GITLAB_EE_QA_REPOSITORY_ID}/tags?per_page=100"

  Runtime::Env.require_qa_dev_access_token!
end

Public Instance Methods

retrieve_image_from_container_registry!(revision) click to toggle source
# File lib/gitlab/qa/support/dev_ee_qa_image.rb, line 20
def retrieve_image_from_container_registry!(revision)
  request_url = base_url

  begin
    response = api_get!(URI.parse(request_url))
    tags = JSON.parse(response.body)

    matching_qa_image_tag = find_matching_qa_image_tag(tags, revision)
    return matching_qa_image_tag['location'] if matching_qa_image_tag

    request_url = next_page_url_from_response(response)
  end while request_url

  raise QAImageNotFoundError, "No `gitlab-ee-qa` image could be found for the revision `#{revision}`."
end

Private Instance Methods

api_get!(uri) click to toggle source
# File lib/gitlab/qa/support/dev_ee_qa_image.rb, line 38
def api_get!(uri)
  Support::GetRequest.new(uri, Runtime::Env.qa_dev_access_token).execute!
end
find_matching_qa_image_tag(tags, revision) click to toggle source
# File lib/gitlab/qa/support/dev_ee_qa_image.rb, line 46
def find_matching_qa_image_tag(tags, revision)
  tags.find { |tag| tag['name'].end_with?(revision) }
end
next_page_url_from_response(response) click to toggle source
# File lib/gitlab/qa/support/dev_ee_qa_image.rb, line 42
def next_page_url_from_response(response)
  response['x-next-page'].to_s != '' ? "#{base_url}&page=#{response['x-next-page']}" : nil
end