gitlab-qa 4.3.3 → 4.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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