gitlab-qa 7.9.1 → 7.11.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e2c7a87e5b6848fc8a74dba532ff9b5cb11b9f5e4cbb805442c15455581480db
4
- data.tar.gz: f52bffc17ce6f6c77438700ac7face46b5c378e47346d1a8fb52d20351002521
3
+ metadata.gz: 67b2d093e79466c451d4dcd631006b2837be1af4a2ded8e90fc223cdbf90ac5a
4
+ data.tar.gz: fe671dab02093263ebd86a4d93247a9cc7f1f577e7420e73e0895d7310f9fb7b
5
5
  SHA512:
6
- metadata.gz: 0bed280e7cb760e5bf3f9402ab79f6eb36677002dc11b6f18d03f76963b6a52d21ee0eef3bf0b9cf488556b35be8bd91bab1bb08669ef612256cdd38ceed55b2
7
- data.tar.gz: 10797a35e96fdee11549037153e7670f6b3ed7b919aa158df09695027f72f4e86afa89850b1fd5678292c194835f5d40ddc4a0f443b048389cfa8beb7e710280
6
+ metadata.gz: 94974ea4b47eba1e9ac585ab1e0673cb28d20bdb8b001d352c1a75032c649d799298833e58fde198e23efd219ad540064637d5cedc7b0af3d82d34d3cc6a7e24
7
+ data.tar.gz: bcac709cdb6bf3e1edef0a12946c4d790889aa4552c586d8173168db58791b93dd1c2ccacd69aada711f835a68807e83f48aba006654fca3e46fc81351a64018
data/.gitlab-ci.yml CHANGED
@@ -884,7 +884,7 @@ ee:praefect:
884
884
  - .ee-qa
885
885
  - .knapsack-variables
886
886
  - .rspec-report-opts
887
- parallel: 5
887
+ parallel: 10
888
888
  variables:
889
889
  QA_SCENARIO: "Test::Integration::Praefect"
890
890
  QA_CAN_TEST_PRAEFECT: "true"
data/gitlab-qa.gemspec CHANGED
@@ -23,13 +23,13 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency 'climate_control', '~> 0.2'
24
24
  spec.add_development_dependency 'gitlab-styles', '~> 6.2.1'
25
25
  spec.add_development_dependency 'pry', '~> 0.11'
26
- spec.add_development_dependency 'rake', '~> 12.2'
26
+ spec.add_development_dependency 'rake', '~> 13.0'
27
27
  spec.add_development_dependency 'rspec', '~> 3.7'
28
28
  spec.add_development_dependency 'solargraph', '~> 0.41'
29
29
  spec.add_development_dependency 'webmock', '3.7.0'
30
30
  spec.add_runtime_dependency 'activesupport', '~> 6.1'
31
31
  spec.add_runtime_dependency 'gitlab', '~> 4.16.1'
32
- spec.add_runtime_dependency 'http', '4.3.0'
32
+ spec.add_runtime_dependency 'http', '~> 5.0'
33
33
  spec.add_runtime_dependency 'nokogiri', '~> 1.10'
34
34
  spec.add_runtime_dependency 'table_print', '1.5.7'
35
35
  end
@@ -9,7 +9,7 @@ module Gitlab
9
9
  module Component
10
10
  class Minio < Base
11
11
  DOCKER_IMAGE = 'minio/minio'.freeze
12
- DOCKER_IMAGE_TAG = 'latest'.freeze
12
+ DOCKER_IMAGE_TAG = 'RELEASE.2021-09-15T04-54-25Z'.freeze
13
13
  # These are secrets used in a local Minio container, they're not used for any online S3 server.
14
14
  AWS_ACCESS_KEY = 'AKIAIOSFODNN7EXAMPLE'.freeze
15
15
  AWS_SECRET_KEY = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'.freeze
@@ -19,7 +19,7 @@ module Gitlab
19
19
  def initialize
20
20
  super
21
21
 
22
- @environment = { MINIO_ACCESS_KEY: AWS_ACCESS_KEY, MINIO_SECRET_KEY: AWS_SECRET_KEY }
22
+ @environment = { MINIO_ROOT_USER: AWS_ACCESS_KEY, MINIO_ROOT_PASSWORD: AWS_SECRET_KEY }
23
23
  @volumes = { host_data_dir => DATA_DIR }
24
24
  @buckets = []
25
25
  end
@@ -49,6 +49,9 @@ module Gitlab
49
49
  'GITLAB_SANDBOX_NAME' => :gitlab_sandbox_name,
50
50
  'GITLAB_QA_ACCESS_TOKEN' => :qa_access_token,
51
51
  'GITLAB_QA_ADMIN_ACCESS_TOKEN' => :qa_admin_access_token,
52
+ 'GITLAB_QA_DEV_ACCESS_TOKEN' => :qa_dev_access_token,
53
+ 'GITLAB_QA_CONTAINER_REGISTRY_ACCESS_TOKEN' => :qa_container_registry_access_token,
54
+ 'GITLAB_QA_ISSUE_URL' => :qa_issue_url,
52
55
  'GITHUB_ACCESS_TOKEN' => :github_access_token,
53
56
  'GITLAB_URL' => :gitlab_url,
54
57
  'SIMPLE_SAML_HOSTNAME' => :simple_saml_hostname,
@@ -60,6 +63,7 @@ module Gitlab
60
63
  'CLOUDSDK_CORE_PROJECT' => :cloudsdk_core_project,
61
64
  'GCLOUD_REGION' => :gcloud_region,
62
65
  'SIGNUP_DISABLED' => :signup_disabled,
66
+ 'GITLAB_CI_API_TOKEN' => :gitlab_ci_api_token,
63
67
  'GITLAB_QA_USERNAME_1' => :gitlab_qa_username_1,
64
68
  'GITLAB_QA_PASSWORD_1' => :gitlab_qa_password_1,
65
69
  'GITLAB_QA_USERNAME_2' => :gitlab_qa_username_2,
@@ -71,17 +75,24 @@ module Gitlab
71
75
  'KNAPSACK_TEST_FILE_PATTERN' => :knapsack_test_file_pattern,
72
76
  'KNAPSACK_TEST_DIR' => :knapsack_test_dir,
73
77
  'CI' => :ci,
78
+ 'CI_COMMIT_REF_NAME' => :ci_commit_ref_name,
74
79
  'CI_JOB_NAME' => :ci_job_name,
75
80
  'CI_JOB_URL' => :ci_job_url,
81
+ 'CI_JOB_TOKEN' => :ci_job_token,
76
82
  'CI_RUNNER_ID' => :ci_runner_id,
77
83
  'CI_SERVER_HOST' => :ci_server_host,
78
84
  'CI_SERVER_PERSONAL_ACCESS_TOKEN' => :ci_server_personal_access_token,
79
85
  'CI_NODE_INDEX' => :ci_node_index,
80
86
  'CI_NODE_TOTAL' => :ci_node_total,
87
+ 'CI_PROJECT_ID' => :ci_project_id,
81
88
  'CI_PROJECT_NAME' => :ci_project_name,
82
89
  'CI_SLACK_WEBHOOK_URL' => :ci_slack_webhook_url,
90
+ 'CI_PIPELINE_ID' => :ci_pipeline_id,
91
+ 'CI_PIPELINE_SOURCE' => :ci_pipeline_source,
92
+ 'CI_PIPELINE_URL' => :ci_pipeline_url,
83
93
  'CI_PIPELINE_CREATED_AT' => :ci_pipeline_created_at,
84
94
  'CI_MERGE_REQUEST_IID' => :ci_merge_request_iid,
95
+ 'CI_API_V4_URL' => :ci_api_v4_url,
85
96
  'GITLAB_CI' => :gitlab_ci,
86
97
  'ELASTIC_URL' => :elastic_url,
87
98
  'GITLAB_QA_LOOP_RUNNER_MINUTES' => :gitlab_qa_loop_runner_minutes,
@@ -108,20 +119,32 @@ module Gitlab
108
119
  'GOOGLE_PROJECT' => :google_project,
109
120
  'GOOGLE_CLIENT_EMAIL' => :google_client_email,
110
121
  'GOOGLE_JSON_KEY' => :google_json_key,
111
- 'GCS_BUCKET_NAME' => :gcs_bucket_name
122
+ 'GCS_BUCKET_NAME' => :gcs_bucket_name,
123
+ 'SMOKE_ONLY' => :smoke_only,
124
+ 'NO_ADMIN' => :no_admin
112
125
  }.freeze
113
126
 
114
127
  ENV_VARIABLES.each do |env_name, method_name|
115
128
  attr_writer(method_name)
116
129
 
117
130
  define_method(method_name) do
118
- ENV[env_name] ||
119
- if instance_variable_defined?("@#{method_name}")
120
- instance_variable_get("@#{method_name}")
121
- end
131
+ ENV[env_name] || (instance_variable_get("@#{method_name}") if instance_variable_defined?("@#{method_name}"))
122
132
  end
123
133
  end
124
134
 
135
+ def variables
136
+ vars = {}
137
+
138
+ ENV_VARIABLES.each do |name, attribute|
139
+ # Variables that are overridden in the environment take precedence
140
+ # over the defaults specified by the QA runtime.
141
+ value = env_value_if_defined(name) || send(attribute) # rubocop:disable GitlabSecurity/PublicSend
142
+ vars[name] = value if value
143
+ end
144
+
145
+ vars
146
+ end
147
+
125
148
  def default_branch
126
149
  ENV['QA_DEFAULT_BRANCH'] || 'main'
127
150
  end
@@ -142,42 +165,6 @@ module Gitlab
142
165
  ENV['GITLAB_API_BASE'] || 'https://gitlab.com/api/v4'
143
166
  end
144
167
 
145
- def gitlab_ci_api_token
146
- ENV['GITLAB_CI_API_TOKEN']
147
- end
148
-
149
- def ci_api_v4_url
150
- ENV['CI_API_V4_URL']
151
- end
152
-
153
- def ci_job_name
154
- ENV['CI_JOB_NAME']
155
- end
156
-
157
- def ci_job_token
158
- ENV['CI_JOB_TOKEN']
159
- end
160
-
161
- def ci_pipeline_source
162
- ENV['CI_PIPELINE_SOURCE']
163
- end
164
-
165
- def ci_pipeline_url
166
- ENV['CI_PIPELINE_URL']
167
- end
168
-
169
- def ci_pipeline_id
170
- ENV['CI_PIPELINE_ID']
171
- end
172
-
173
- def ci_project_id
174
- ENV['CI_PROJECT_ID']
175
- end
176
-
177
- def ci_commit_ref_name
178
- ENV['CI_COMMIT_REF_NAME']
179
- end
180
-
181
168
  def pipeline_from_project_name
182
169
  if ci_project_name.to_s.start_with?('gitlab-qa')
183
170
  if ENV['TOP_UPSTREAM_SOURCE_JOB'].to_s.start_with?('https://ops.gitlab.net')
@@ -198,22 +185,10 @@ module Gitlab
198
185
  env_value_if_defined('GITLAB_QA_DEV_ACCESS_TOKEN')
199
186
  end
200
187
 
201
- def qa_dev_access_token
202
- ENV['GITLAB_QA_DEV_ACCESS_TOKEN']
203
- end
204
-
205
188
  def initial_root_password
206
189
  ENV['GITLAB_INITIAL_ROOT_PASSWORD'] || '5iveL!fe'
207
190
  end
208
191
 
209
- def qa_container_registry_access_token
210
- ENV['GITLAB_QA_CONTAINER_REGISTRY_ACCESS_TOKEN']
211
- end
212
-
213
- def qa_issue_url
214
- ENV['GITLAB_QA_ISSUE_URL']
215
- end
216
-
217
192
  def deploy_environment
218
193
  ENV['DEPLOY_ENVIRONMENT'] || pipeline_from_project_name
219
194
  end
@@ -226,35 +201,6 @@ module Gitlab
226
201
  ENV['ELASTIC_VERSION'] || '6.4.2'.freeze
227
202
  end
228
203
 
229
- def aws_s3_region
230
- ENV['AWS_S3_REGION']
231
- end
232
-
233
- def aws_s3_key_id
234
- ENV['AWS_S3_KEY_ID']
235
- end
236
-
237
- def aws_s3_access_key
238
- ENV['AWS_S3_ACCESS_KEY']
239
- end
240
-
241
- def aws_s3_bucket_name
242
- ENV['AWS_S3_BUCKET_NAME']
243
- end
244
-
245
- def variables
246
- vars = {}
247
-
248
- ENV_VARIABLES.each do |name, attribute|
249
- # Variables that are overridden in the environment take precedence
250
- # over the defaults specified by the QA runtime.
251
- value = env_value_if_defined(name) || send(attribute) # rubocop:disable GitlabSecurity/PublicSend
252
- vars[name] = value if value
253
- end
254
-
255
- vars
256
- end
257
-
258
204
  def require_license!
259
205
  return if ENV.include?('EE_LICENSE')
260
206
 
@@ -293,31 +239,42 @@ module Gitlab
293
239
 
294
240
  def require_kubernetes_environment!
295
241
  %w[GCLOUD_ACCOUNT_EMAIL GCLOUD_ACCOUNT_KEY CLOUDSDK_CORE_PROJECT].each do |env_key|
296
- raise ArgumentError, "Environment variable #{env_key} must be set to run kubernetes specs" unless ENV.key?(env_key)
242
+ unless ENV.key?(env_key)
243
+ raise ArgumentError, "Environment variable #{env_key} must be set to run kubernetes specs"
244
+ end
297
245
  end
298
246
  end
299
247
 
300
248
  def require_aws_s3_environment!
301
249
  %w[AWS_S3_REGION AWS_S3_KEY_ID AWS_S3_ACCESS_KEY AWS_S3_BUCKET_NAME].each do |env_key|
302
- raise ArgumentError, "Environment variable #{env_key} must be set to run AWS S3 object storage specs" unless ENV.key?(env_key)
250
+ unless ENV.key?(env_key)
251
+ raise ArgumentError, "Environment variable #{env_key} must be set to run AWS S3 object storage specs"
252
+ end
303
253
  end
304
254
  end
305
255
 
306
256
  def require_gcs_environment!
307
257
  %w[GOOGLE_PROJECT GOOGLE_CLIENT_EMAIL GOOGLE_JSON_KEY GCS_BUCKET_NAME].each do |env_key|
308
- raise ArgumentError, "Environment variable #{env_key} must be set to run GCS object storage specs" unless ENV.key?(env_key)
258
+ unless ENV.key?(env_key)
259
+ raise ArgumentError, "Environment variable #{env_key} must be set to run GCS object storage specs"
260
+ end
309
261
  end
310
262
  end
311
263
 
312
264
  def require_initial_password!
313
265
  return unless ENV['GITLAB_INITIAL_ROOT_PASSWORD'].to_s.strip.empty?
314
266
 
315
- raise ArgumentError, "Environment variable GITLAB_INITIAL_ROOT_PASSWORD must be provided to set an initial root password."
267
+ raise(
268
+ ArgumentError,
269
+ "Environment variable GITLAB_INITIAL_ROOT_PASSWORD must be provided to set an initial root password."
270
+ )
316
271
  end
317
272
 
318
273
  def require_ssh_tunnel!
319
274
  %w[TUNNEL_SSH_PRIVATE_KEY TUNNEL_SERVER_HOSTNAME TUNNEL_SSH_USER].each do |env_key|
320
- raise ArgumentError, "Environment variable #{env_key} must be set to run tunnel specs" unless ENV.key?(env_key)
275
+ unless ENV.key?(env_key)
276
+ raise ArgumentError, "Environment variable #{env_key} must be set to run tunnel specs"
277
+ end
321
278
  end
322
279
  end
323
280
 
@@ -51,7 +51,7 @@ module Gitlab
51
51
  nginx['ssl_certificate_key'] = '/etc/gitlab/ssl/gitlab.test.key';
52
52
 
53
53
  nginx['ssl_verify_client'] = 'on';
54
- nginx['ssl_client_certificate'] = '/etc/gitlab/authority/ca.pem';
54
+ nginx['ssl_client_certificate'] = '/etc/gitlab/trusted-certs/ca.pem';
55
55
  nginx['ssl_verify_depth'] = '2';
56
56
  OMNIBUS
57
57
  end
@@ -13,10 +13,11 @@ module Gitlab
13
13
  end
14
14
 
15
15
  def execute!
16
- response =
16
+ response = with_retry_on_too_many_requests do
17
17
  Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
18
18
  http.request(build_request)
19
19
  end
20
+ end
20
21
 
21
22
  case response
22
23
  when Net::HTTPSuccess
@@ -34,6 +35,24 @@ module Gitlab
34
35
  req['Cookie'] = ENV['QA_COOKIES'] if ENV['QA_COOKIES']
35
36
  end
36
37
  end
38
+
39
+ def with_retry_on_too_many_requests
40
+ response = nil
41
+ retry_count = 0
42
+
43
+ while retry_count < 3
44
+ response = yield
45
+
46
+ break unless response.is_a?(Net::HTTPTooManyRequests)
47
+
48
+ retry_count += 1
49
+ wait_seconds = response["retry-after"].to_i
50
+ puts "Received 429 - Too many requests. Waiting for #{wait_seconds} seconds."
51
+ sleep wait_seconds
52
+ end
53
+
54
+ response
55
+ end
37
56
  end
38
57
  end
39
58
  end
@@ -1,5 +1,5 @@
1
1
  module Gitlab
2
2
  module QA
3
- VERSION = '7.9.1'.freeze
3
+ VERSION = '7.11.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: 7.9.1
4
+ version: 7.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab Quality
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-20 00:00:00.000000000 Z
11
+ date: 2021-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: climate_control
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '12.2'
61
+ version: '13.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '12.2'
68
+ version: '13.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -140,16 +140,16 @@ dependencies:
140
140
  name: http
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - '='
143
+ - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 4.3.0
145
+ version: '5.0'
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - '='
150
+ - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 4.3.0
152
+ version: '5.0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: nokogiri
155
155
  requirement: !ruby/object:Gem::Requirement