gitlab-qa 4.3.3 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,52 @@
1
+ require 'json'
2
+ require 'uri'
3
+
4
+ module Gitlab
5
+ module QA
6
+ module Support
7
+ class DevEEQAImage
8
+ attr_reader :base_url
9
+
10
+ DEV_ADDRESS = 'https://dev.gitlab.org'.freeze
11
+ GITLAB_EE_QA_REPOSITORY_ID = 55
12
+ QAImageNotFoundError = Class.new(StandardError)
13
+
14
+ def initialize
15
+ @base_url = "#{DEV_ADDRESS}/api/v4/projects/gitlab%2Fomnibus-gitlab/registry/repositories/#{GITLAB_EE_QA_REPOSITORY_ID}/tags?per_page=100"
16
+
17
+ Runtime::Env.require_qa_dev_access_token!
18
+ end
19
+
20
+ def retrieve_image_from_container_registry!(revision)
21
+ request_url = base_url
22
+
23
+ begin
24
+ response = api_get!(URI.parse(request_url))
25
+ tags = JSON.parse(response.body)
26
+
27
+ matching_qa_image_tag = find_matching_qa_image_tag(tags, revision)
28
+ return matching_qa_image_tag['location'] if matching_qa_image_tag
29
+
30
+ request_url = next_page_url_from_response(response)
31
+ end while request_url
32
+
33
+ raise QAImageNotFoundError, "No `gitlab-ee-qa` image could be found for the revision `#{revision}`."
34
+ end
35
+
36
+ private
37
+
38
+ def api_get!(uri)
39
+ Support::GetRequest.new(uri, Runtime::Env.qa_dev_access_token).execute!
40
+ end
41
+
42
+ def next_page_url_from_response(response)
43
+ response['x-next-page'].to_s != '' ? "#{base_url}&page=#{response['x-next-page']}" : nil
44
+ end
45
+
46
+ def find_matching_qa_image_tag(tags, revision)
47
+ tags.find { |tag| tag['name'].end_with?(revision) }
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,39 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+
4
+ module Gitlab
5
+ module QA
6
+ module Support
7
+ class GetRequest
8
+ attr_reader :uri, :token
9
+
10
+ def initialize(uri, token)
11
+ @uri = uri
12
+ @token = token
13
+ end
14
+
15
+ def execute!
16
+ response =
17
+ Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
18
+ http.request(build_request)
19
+ end
20
+
21
+ case response
22
+ when Net::HTTPSuccess
23
+ response
24
+ else
25
+ raise InvalidResponseError.new(uri.to_s, response)
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def build_request
32
+ Net::HTTP::Get.new(uri).tap do |req|
33
+ req['PRIVATE-TOKEN'] = token
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,9 @@
1
+ class InvalidResponseError < StandardError
2
+ attr_reader :response
3
+
4
+ def initialize(address, response)
5
+ @response = response
6
+
7
+ super "Invalid response received from #{address}"
8
+ end
9
+ end
@@ -1,5 +1,5 @@
1
1
  module Gitlab
2
2
  module QA
3
- VERSION = '4.3.3'.freeze
3
+ VERSION = '4.4.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-qa
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.3.3
4
+ version: 4.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Grzegorz Bizon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-26 00:00:00.000000000 Z
11
+ date: 2019-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: climate_control
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 2.2.0
33
+ version: 2.4.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 2.2.0
40
+ version: 2.4.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pry
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: rubocop
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '='
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.52.0
89
+ version: 0.54.0
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '='
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.52.0
96
+ version: 0.54.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rubocop-rspec
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -144,6 +144,7 @@ files:
144
144
  - Rakefile
145
145
  - bin/console
146
146
  - bin/expect_exit_code_and_text
147
+ - bin/merge_html_reports
147
148
  - bin/notify_upstream_commit
148
149
  - bin/setup
149
150
  - bin/slack
@@ -206,6 +207,9 @@ files:
206
207
  - lib/gitlab/qa/scenario/test/omnibus/update.rb
207
208
  - lib/gitlab/qa/scenario/test/omnibus/upgrade.rb
208
209
  - lib/gitlab/qa/scenario/test/sanity/version.rb
210
+ - lib/gitlab/qa/support/dev_ee_qa_image.rb
211
+ - lib/gitlab/qa/support/get_request.rb
212
+ - lib/gitlab/qa/support/invalid_response_error.rb
209
213
  - lib/gitlab/qa/version.rb
210
214
  - tls_certificates/gitlab/gitlab.test.crt
211
215
  - tls_certificates/gitlab/gitlab.test.key