Sha256: 9ca8dff59691b0e2284a3751f16e80ffc1339ccb0506343ceeddc304ad6de202

Contents?: true

Size: 1.56 KB

Versions: 11

Compression:

Stored size: 1.56 KB

Contents

# frozen_string_literal: true

require 'json'
require 'uri'

module Gitlab
  module QA
    module Support
      class DevEEQAImage
        attr_reader :base_url

        DEV_ADDRESS = 'https://dev.gitlab.org'
        GITLAB_EE_QA_REPOSITORY_ID = 55
        QAImageNotFoundError = Class.new(StandardError)

        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

        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

        def api_get!(uri)
          Support::GetRequest.new(uri, Runtime::Env.qa_dev_access_token).execute!
        end

        def next_page_url_from_response(response)
          response['x-next-page'].to_s != '' ? "#{base_url}&page=#{response['x-next-page']}" : nil
        end

        def find_matching_qa_image_tag(tags, revision)
          tags.find { |tag| tag['name'].end_with?(revision) }
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
gitlab-qa-8.4.2 lib/gitlab/qa/support/dev_ee_qa_image.rb
gitlab-qa-8.4.1 lib/gitlab/qa/support/dev_ee_qa_image.rb
gitlab-qa-8.4.0 lib/gitlab/qa/support/dev_ee_qa_image.rb
gitlab-qa-8.3.2 lib/gitlab/qa/support/dev_ee_qa_image.rb
gitlab-qa-8.3.1 lib/gitlab/qa/support/dev_ee_qa_image.rb
gitlab-qa-8.3.0 lib/gitlab/qa/support/dev_ee_qa_image.rb
gitlab-qa-8.2.0 lib/gitlab/qa/support/dev_ee_qa_image.rb
gitlab-qa-8.1.0 lib/gitlab/qa/support/dev_ee_qa_image.rb
gitlab-qa-8.0.0 lib/gitlab/qa/support/dev_ee_qa_image.rb
gitlab-qa-7.36.0 lib/gitlab/qa/support/dev_ee_qa_image.rb
gitlab-qa-7.35.0 lib/gitlab/qa/support/dev_ee_qa_image.rb