gitlab-qa 7.9.2 → 7.12.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 +4 -4
- data/.gitlab-ci.yml +38 -2
- data/gitlab-qa.gemspec +2 -2
- data/lib/gitlab/qa/runtime/env.rb +44 -87
- data/lib/gitlab/qa/runtime/omnibus_configurations/registry_object_storage.rb +19 -0
- data/lib/gitlab/qa/scenario/test/integration/gitaly_cluster.rb +1 -0
- data/lib/gitlab/qa/scenario/test/integration/registry.rb +2 -11
- data/lib/gitlab/qa/scenario/test/integration/registry_tls.rb +44 -0
- data/lib/gitlab/qa/support/get_request.rb +20 -1
- data/lib/gitlab/qa/version.rb +1 -1
- data/lib/gitlab/qa.rb +2 -0
- metadata +10 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6b9dcb4935c0cc27ed0c101098a6ef19a63db8697aec420844b499b614190669
|
|
4
|
+
data.tar.gz: fff48c4b8887be1b5915885bf6698d1b34c289c794dafab5d12f63ce1ec52262
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 98c19eeafde92cb7931460363ef0f29ee664af8e7e74ff22840b43b797ae24cac0adb3511c395810f33d017d0af3f3aa4618739a58f3cc111aed2046a8c04afc
|
|
7
|
+
data.tar.gz: c18900856b311a2a8f49260620684f276f69bf2dab35c0fdc1befe41572a1f92b549f00798646fb6c50b1d8fc9d578cc59721978cd5459a3bb45307dabf79919
|
data/.gitlab-ci.yml
CHANGED
|
@@ -756,13 +756,50 @@ ee:packages-quarantine:
|
|
|
756
756
|
GITLAB_QA_OPTIONS_COMBINED: "$GITLAB_QA_OPTIONS --omnibus-config packages"
|
|
757
757
|
QA_RSPEC_TAGS: "--tag quarantine --tag packages"
|
|
758
758
|
|
|
759
|
+
ce:object_storage_registry_tls:
|
|
760
|
+
extends:
|
|
761
|
+
- .test
|
|
762
|
+
- .high-capacity
|
|
763
|
+
- .ce-qa
|
|
764
|
+
- .rspec-report-opts
|
|
765
|
+
variables:
|
|
766
|
+
QA_SCENARIO: "Test::Integration::RegistryTLS --omnibus-config registry_object_storage"
|
|
767
|
+
|
|
768
|
+
ce:object_storage_registry_tls-quarantine:
|
|
769
|
+
extends:
|
|
770
|
+
- .test
|
|
771
|
+
- .high-capacity
|
|
772
|
+
- .ce-qa
|
|
773
|
+
- .quarantine
|
|
774
|
+
- .rspec-report-opts
|
|
775
|
+
variables:
|
|
776
|
+
QA_SCENARIO: "Test::Integration::RegistryTLS --omnibus-config registry_object_storage"
|
|
777
|
+
|
|
778
|
+
ee:object_storage_registry_tls:
|
|
779
|
+
extends:
|
|
780
|
+
- .test
|
|
781
|
+
- .high-capacity
|
|
782
|
+
- .ee-qa
|
|
783
|
+
- .rspec-report-opts
|
|
784
|
+
variables:
|
|
785
|
+
QA_SCENARIO: "Test::Integration::RegistryTLS --omnibus-config registry_object_storage"
|
|
786
|
+
|
|
787
|
+
ee:object_storage_registry_tls-quarantine:
|
|
788
|
+
extends:
|
|
789
|
+
- .test
|
|
790
|
+
- .high-capacity
|
|
791
|
+
- .ee-qa
|
|
792
|
+
- .quarantine
|
|
793
|
+
- .rspec-report-opts
|
|
794
|
+
variables:
|
|
795
|
+
QA_SCENARIO: "Test::Integration::RegistryTLS --omnibus-config registry_object_storage"
|
|
796
|
+
|
|
759
797
|
ce:registry:
|
|
760
798
|
extends:
|
|
761
799
|
- .test
|
|
762
800
|
- .high-capacity
|
|
763
801
|
- .ce-qa
|
|
764
802
|
- .rspec-report-opts
|
|
765
|
-
allow_failure: true
|
|
766
803
|
variables:
|
|
767
804
|
QA_SCENARIO: "Test::Integration::Registry"
|
|
768
805
|
|
|
@@ -782,7 +819,6 @@ ee:registry:
|
|
|
782
819
|
- .high-capacity
|
|
783
820
|
- .ee-qa
|
|
784
821
|
- .rspec-report-opts
|
|
785
|
-
allow_failure: true
|
|
786
822
|
variables:
|
|
787
823
|
QA_SCENARIO: "Test::Integration::Registry"
|
|
788
824
|
|
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', '~>
|
|
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', '
|
|
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
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Gitlab
|
|
4
|
+
module QA
|
|
5
|
+
module Runtime
|
|
6
|
+
module OmnibusConfigurations
|
|
7
|
+
class RegistryObjectStorage < Default
|
|
8
|
+
def configuration
|
|
9
|
+
Runtime::Env.require_aws_s3_environment!
|
|
10
|
+
|
|
11
|
+
<<~OMNIBUS
|
|
12
|
+
registry['storage'] = { 's3' => { 'accesskey' => '#{Runtime::Env.aws_s3_key_id}', 'secretkey' => '#{Runtime::Env.aws_s3_access_key}', 'bucket' => '#{Runtime::Env.aws_s3_bucket_name}', 'region' => '#{Runtime::Env.aws_s3_region}' } }
|
|
13
|
+
OMNIBUS
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -99,6 +99,7 @@ module Gitlab
|
|
|
99
99
|
praefect['listen_addr'] = '0.0.0.0:2305';
|
|
100
100
|
praefect['prometheus_listen_addr'] = '0.0.0.0:9652';
|
|
101
101
|
praefect['auth_token'] = 'PRAEFECT_EXTERNAL_TOKEN';
|
|
102
|
+
praefect['reconciliation_scheduling_interval'] = '10s';
|
|
102
103
|
praefect['database_host'] = '#{@database}.#{@network}';
|
|
103
104
|
praefect['database_user'] = 'postgres';
|
|
104
105
|
praefect['database_port'] = 5432;
|
|
@@ -11,19 +11,10 @@ module Gitlab
|
|
|
11
11
|
gitlab.release = release
|
|
12
12
|
gitlab.network = 'test'
|
|
13
13
|
gitlab.name = 'gitlab'
|
|
14
|
-
gitlab.tls = true
|
|
15
14
|
|
|
16
15
|
gitlab.omnibus_configuration << <<~OMNIBUS
|
|
17
|
-
external_url '
|
|
18
|
-
registry_external_url '
|
|
19
|
-
|
|
20
|
-
letsencrypt['enable'] = false;
|
|
21
|
-
|
|
22
|
-
nginx['redirect_http_to_https'] = true;
|
|
23
|
-
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.test.crt";
|
|
24
|
-
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.test.key";
|
|
25
|
-
registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.test.crt";
|
|
26
|
-
registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.test.key";
|
|
16
|
+
external_url 'http://#{gitlab.name}.#{gitlab.network}';
|
|
17
|
+
registry_external_url 'http://#{gitlab.name}.#{gitlab.network}:5050';
|
|
27
18
|
OMNIBUS
|
|
28
19
|
|
|
29
20
|
gitlab.instance do
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Gitlab
|
|
4
|
+
module QA
|
|
5
|
+
module Scenario
|
|
6
|
+
module Test
|
|
7
|
+
module Integration
|
|
8
|
+
class RegistryTLS < Scenario::Template
|
|
9
|
+
def perform(release, *rspec_args)
|
|
10
|
+
Component::Gitlab.perform do |gitlab|
|
|
11
|
+
gitlab.release = release
|
|
12
|
+
gitlab.network = 'test'
|
|
13
|
+
gitlab.name = 'gitlab'
|
|
14
|
+
gitlab.tls = true
|
|
15
|
+
|
|
16
|
+
gitlab.omnibus_configuration << <<~OMNIBUS
|
|
17
|
+
external_url 'https://#{gitlab.name}.#{gitlab.network}';
|
|
18
|
+
registry_external_url 'https://#{gitlab.name}.#{gitlab.network}:5050';
|
|
19
|
+
|
|
20
|
+
letsencrypt['enable'] = false;
|
|
21
|
+
|
|
22
|
+
nginx['redirect_http_to_https'] = true;
|
|
23
|
+
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.test.crt";
|
|
24
|
+
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.test.key";
|
|
25
|
+
registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.test.crt";
|
|
26
|
+
registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.test.key";
|
|
27
|
+
OMNIBUS
|
|
28
|
+
|
|
29
|
+
gitlab.instance do
|
|
30
|
+
Component::Specs.perform do |specs|
|
|
31
|
+
specs.suite = 'Test::Integration::RegistryTLS'
|
|
32
|
+
specs.release = gitlab.release
|
|
33
|
+
specs.network = gitlab.network
|
|
34
|
+
specs.args = [gitlab.address, *rspec_args]
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
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
|
data/lib/gitlab/qa/version.rb
CHANGED
data/lib/gitlab/qa.rb
CHANGED
|
@@ -17,6 +17,7 @@ module Gitlab
|
|
|
17
17
|
autoload :ObjectStorageAws, 'gitlab/qa/runtime/omnibus_configurations/object_storage_aws'
|
|
18
18
|
autoload :ObjectStorageGcs, 'gitlab/qa/runtime/omnibus_configurations/object_storage_gcs'
|
|
19
19
|
autoload :LicenseMode, 'gitlab/qa/runtime/omnibus_configurations/license_mode'
|
|
20
|
+
autoload :RegistryObjectStorage, 'gitlab/qa/runtime/omnibus_configurations/registry_object_storage'
|
|
20
21
|
end
|
|
21
22
|
end
|
|
22
23
|
|
|
@@ -69,6 +70,7 @@ module Gitlab
|
|
|
69
70
|
autoload :MTLS, 'gitlab/qa/scenario/test/integration/mtls'
|
|
70
71
|
autoload :ClientSSL, 'gitlab/qa/scenario/test/integration/client_ssl'
|
|
71
72
|
autoload :Registry, 'gitlab/qa/scenario/test/integration/registry'
|
|
73
|
+
autoload :RegistryTLS, 'gitlab/qa/scenario/test/integration/registry_tls'
|
|
72
74
|
end
|
|
73
75
|
|
|
74
76
|
module Sanity
|
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.
|
|
4
|
+
version: 7.12.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-
|
|
11
|
+
date: 2021-10-26 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: '
|
|
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: '
|
|
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:
|
|
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:
|
|
152
|
+
version: '5.0'
|
|
153
153
|
- !ruby/object:Gem::Dependency
|
|
154
154
|
name: nokogiri
|
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -268,6 +268,7 @@ files:
|
|
|
268
268
|
- lib/gitlab/qa/runtime/omnibus_configurations/object_storage_aws.rb
|
|
269
269
|
- lib/gitlab/qa/runtime/omnibus_configurations/object_storage_gcs.rb
|
|
270
270
|
- lib/gitlab/qa/runtime/omnibus_configurations/packages.rb
|
|
271
|
+
- lib/gitlab/qa/runtime/omnibus_configurations/registry_object_storage.rb
|
|
271
272
|
- lib/gitlab/qa/runtime/scenario.rb
|
|
272
273
|
- lib/gitlab/qa/runtime/token_finder.rb
|
|
273
274
|
- lib/gitlab/qa/scenario/actable.rb
|
|
@@ -303,6 +304,7 @@ files:
|
|
|
303
304
|
- lib/gitlab/qa/scenario/test/integration/mtls.rb
|
|
304
305
|
- lib/gitlab/qa/scenario/test/integration/praefect.rb
|
|
305
306
|
- lib/gitlab/qa/scenario/test/integration/registry.rb
|
|
307
|
+
- lib/gitlab/qa/scenario/test/integration/registry_tls.rb
|
|
306
308
|
- lib/gitlab/qa/scenario/test/integration/saml.rb
|
|
307
309
|
- lib/gitlab/qa/scenario/test/integration/smtp.rb
|
|
308
310
|
- lib/gitlab/qa/scenario/test/integration/ssh_tunnel.rb
|