gitlab-qa 7.34.0 → 8.0.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/jobs/registry_with_cdn.gitlab-ci.yml +12 -0
- data/.rubocop_todo.yml +15 -30
- data/Dangerfile +2 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +3 -2
- data/Rakefile +2 -0
- data/docs/run_qa_against_gdk.md +5 -0
- data/exe/gitlab-qa +1 -0
- data/exe/gitlab-qa-report +1 -0
- data/gitlab-qa.gemspec +1 -0
- data/lib/gitlab/qa/component/base.rb +3 -1
- data/lib/gitlab/qa/component/elasticsearch.rb +3 -1
- data/lib/gitlab/qa/component/gitlab.rb +42 -24
- data/lib/gitlab/qa/component/internet_tunnel.rb +4 -2
- data/lib/gitlab/qa/component/jira.rb +4 -2
- data/lib/gitlab/qa/component/mail_hog.rb +3 -2
- data/lib/gitlab/qa/component/minio.rb +7 -5
- data/lib/gitlab/qa/component/postgresql.rb +4 -2
- data/lib/gitlab/qa/component/preprod.rb +3 -1
- data/lib/gitlab/qa/component/production.rb +3 -1
- data/lib/gitlab/qa/component/release.rb +3 -1
- data/lib/gitlab/qa/component/saml.rb +4 -2
- data/lib/gitlab/qa/component/specs.rb +2 -0
- data/lib/gitlab/qa/component/staging.rb +4 -2
- data/lib/gitlab/qa/component/staging_ref.rb +4 -2
- data/lib/gitlab/qa/docker/command.rb +7 -1
- data/lib/gitlab/qa/docker/engine.rb +10 -0
- data/lib/gitlab/qa/docker/shellout.rb +24 -14
- data/lib/gitlab/qa/docker/volumes.rb +3 -1
- data/lib/gitlab/qa/release.rb +6 -4
- data/lib/gitlab/qa/report/{junit_test_results.rb → j_unit_test_results.rb} +0 -0
- data/lib/gitlab/qa/report/prepare_stage_reports.rb +2 -0
- data/lib/gitlab/qa/report/summary_table.rb +2 -0
- data/lib/gitlab/qa/report/update_screenshot_path.rb +2 -0
- data/lib/gitlab/qa/reporter.rb +2 -0
- data/lib/gitlab/qa/runtime/env.rb +9 -4
- data/lib/gitlab/qa/scenario/actable.rb +2 -0
- data/lib/gitlab/qa/scenario/cli_commands.rb +3 -1
- data/lib/gitlab/qa/scenario/template.rb +2 -0
- data/lib/gitlab/qa/scenario/test/instance/airgapped.rb +2 -0
- data/lib/gitlab/qa/scenario/test/instance/any.rb +2 -0
- data/lib/gitlab/qa/scenario/test/instance/deployment_base.rb +2 -0
- data/lib/gitlab/qa/scenario/test/instance/geo.rb +2 -0
- data/lib/gitlab/qa/scenario/test/instance/image.rb +2 -0
- data/lib/gitlab/qa/scenario/test/instance/preprod.rb +2 -0
- data/lib/gitlab/qa/scenario/test/instance/production.rb +2 -0
- data/lib/gitlab/qa/scenario/test/instance/relative_url.rb +2 -0
- data/lib/gitlab/qa/scenario/test/instance/release.rb +2 -0
- data/lib/gitlab/qa/scenario/test/instance/repository_storage.rb +2 -0
- data/lib/gitlab/qa/scenario/test/instance/smoke.rb +2 -0
- data/lib/gitlab/qa/scenario/test/instance/staging.rb +2 -0
- data/lib/gitlab/qa/scenario/test/instance/staging_geo.rb +2 -0
- data/lib/gitlab/qa/scenario/test/instance/staging_ref.rb +2 -0
- data/lib/gitlab/qa/scenario/test/instance/staging_ref_geo.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/client_ssl.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/elasticsearch.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/geo.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/gitaly_cluster.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/group_saml.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/instance_saml.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/jira.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/kubernetes.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/ldap.rb +8 -6
- data/lib/gitlab/qa/scenario/test/integration/ldap_no_server.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/ldap_no_tls.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/ldap_tls.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/mattermost.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/mtls.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/praefect.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/saml.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/smtp.rb +2 -0
- data/lib/gitlab/qa/scenario/test/omnibus/image.rb +2 -0
- data/lib/gitlab/qa/scenario/test/omnibus/update.rb +2 -0
- data/lib/gitlab/qa/scenario/test/omnibus/upgrade.rb +2 -0
- data/lib/gitlab/qa/scenario/test/sanity/version.rb +2 -0
- data/lib/gitlab/qa/slack/post_to_slack.rb +2 -0
- data/lib/gitlab/qa/support/dev_ee_qa_image.rb +3 -1
- data/lib/gitlab/qa/support/get_request.rb +2 -0
- data/lib/gitlab/qa/support/http_request.rb +2 -0
- data/lib/gitlab/qa/support/invalid_response_error.rb +2 -0
- data/lib/gitlab/qa/test_logger.rb +1 -1
- data/lib/gitlab/qa/version.rb +1 -1
- data/lib/gitlab/qa.rb +53 -143
- data/scripts/generate-qa-jobs.rb +1 -0
- data/support/data/admin_access_token_seed.rb +1 -1
- data/support/data/license_usage_seed.rb +2 -1
- metadata +17 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: '0982270bb1256eb950e30c84028a70fca0663c744fff1bf00cb1937f89936f43'
|
|
4
|
+
data.tar.gz: c2051a27b8027df5d47359a6b27a54338e25bfc37471dae2fe600087e118b392
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c11dd80b24b285fcd8b93c94c0fabac93be215576eb307804c485ad9a5dbba4a7b6cd9f6b016f13082ba4c146f8189a2e7f6bf9b41ef85172a735696e2e558af
|
|
7
|
+
data.tar.gz: 0cf57dcfa1f30e37f2acc66015ed03c0d2e3d2bd65284f7be92d71b1028fadbceb9f72feaa7a4dad29905d7554a9f985885b6d95ca096944c1a955ffa0ac244d
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
ce:registry_with_cdn:
|
|
2
|
+
before_script:
|
|
3
|
+
- unset GITLAB_QA_ADMIN_ACCESS_TOKEN
|
|
4
|
+
- !reference [default, before_script]
|
|
2
5
|
extends:
|
|
3
6
|
- .rules:ce-never-when-triggered-by-feature-flag-definition-change
|
|
4
7
|
- .test
|
|
@@ -10,6 +13,9 @@ ce:registry_with_cdn:
|
|
|
10
13
|
allow_failure: true
|
|
11
14
|
|
|
12
15
|
ce:registry_with_cdn-quarantine:
|
|
16
|
+
before_script:
|
|
17
|
+
- unset GITLAB_QA_ADMIN_ACCESS_TOKEN
|
|
18
|
+
- !reference [default, before_script]
|
|
13
19
|
extends:
|
|
14
20
|
- .rules:ce-never-when-triggered-by-feature-flag-definition-change
|
|
15
21
|
- .test
|
|
@@ -21,6 +27,9 @@ ce:registry_with_cdn-quarantine:
|
|
|
21
27
|
QA_SCENARIO: "Test::Integration::RegistryWithCDN"
|
|
22
28
|
|
|
23
29
|
ee:registry_with_cdn:
|
|
30
|
+
before_script:
|
|
31
|
+
- unset GITLAB_QA_ADMIN_ACCESS_TOKEN
|
|
32
|
+
- !reference [default, before_script]
|
|
24
33
|
extends:
|
|
25
34
|
- .rules:ee-never-when-triggered-by-feature-flag-definition-change
|
|
26
35
|
- .test
|
|
@@ -32,6 +41,9 @@ ee:registry_with_cdn:
|
|
|
32
41
|
allow_failure: true
|
|
33
42
|
|
|
34
43
|
ee:registry_with_cdn-quarantine:
|
|
44
|
+
before_script:
|
|
45
|
+
- unset GITLAB_QA_ADMIN_ACCESS_TOKEN
|
|
46
|
+
- !reference [default, before_script]
|
|
35
47
|
extends:
|
|
36
48
|
- .rules:ee-never-when-triggered-by-feature-flag-definition-change
|
|
37
49
|
- .test
|
data/.rubocop_todo.yml
CHANGED
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
# This configuration was generated by
|
|
2
2
|
# `rubocop --auto-gen-config`
|
|
3
|
-
# on
|
|
3
|
+
# on 2022-06-21 18:16:41 UTC using RuboCop version 0.93.1.
|
|
4
4
|
# The point is for the user to remove these configuration records
|
|
5
5
|
# one by one as the offenses are removed from the code base.
|
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
|
8
8
|
|
|
9
|
-
# Offense count:
|
|
9
|
+
# Offense count: 199
|
|
10
10
|
# Cop supports --auto-correct.
|
|
11
11
|
CodeReuse/ActiveRecord:
|
|
12
12
|
Enabled: false
|
|
13
13
|
|
|
14
|
-
# Offense count:
|
|
14
|
+
# Offense count: 1
|
|
15
15
|
# Cop supports --auto-correct.
|
|
16
16
|
Cop/LineBreakAroundConditionalBlock:
|
|
17
17
|
Exclude:
|
|
18
18
|
- 'lib/gitlab/qa/release.rb'
|
|
19
|
-
- 'lib/gitlab/qa/runtime/env.rb'
|
|
20
19
|
|
|
21
20
|
# Offense count: 1
|
|
22
21
|
# Configuration parameters: Include.
|
|
@@ -44,10 +43,10 @@ Lint/RedundantCopDisableDirective:
|
|
|
44
43
|
- 'lib/gitlab/qa/component/staging.rb'
|
|
45
44
|
- 'lib/gitlab/qa/runtime/scenario.rb'
|
|
46
45
|
|
|
47
|
-
# Offense count:
|
|
46
|
+
# Offense count: 21
|
|
48
47
|
# Configuration parameters: IgnoredMethods.
|
|
49
48
|
Metrics/AbcSize:
|
|
50
|
-
Max:
|
|
49
|
+
Max: 60
|
|
51
50
|
IgnoredMethods:
|
|
52
51
|
- perform
|
|
53
52
|
|
|
@@ -58,24 +57,11 @@ Naming/RescuedExceptionsVariableName:
|
|
|
58
57
|
Exclude:
|
|
59
58
|
- 'lib/gitlab/qa/component/staging.rb'
|
|
60
59
|
|
|
61
|
-
# Offense count: 1
|
|
62
|
-
# Cop supports --auto-correct.
|
|
63
|
-
Performance/RegexpMatch:
|
|
64
|
-
Exclude:
|
|
65
|
-
- 'lib/gitlab/qa/component/gitlab.rb'
|
|
66
|
-
|
|
67
|
-
# Offense count: 1
|
|
68
|
-
# Cop supports --auto-correct.
|
|
69
|
-
# Configuration parameters: AutoCorrect.
|
|
70
|
-
Performance/StringInclude:
|
|
71
|
-
Exclude:
|
|
72
|
-
- 'lib/gitlab/qa/component/gitlab.rb'
|
|
73
|
-
|
|
74
60
|
# Offense count: 3
|
|
75
61
|
# Cop supports --auto-correct.
|
|
76
62
|
RSpec/EmptyLineAfterLetBlock:
|
|
77
63
|
Exclude:
|
|
78
|
-
- 'spec/gitlab/qa/support/
|
|
64
|
+
- 'spec/gitlab/qa/support/dev_ee_qa_image_spec.rb'
|
|
79
65
|
|
|
80
66
|
# Offense count: 4
|
|
81
67
|
# Cop supports --auto-correct.
|
|
@@ -84,6 +70,12 @@ RSpec/ExampleWording:
|
|
|
84
70
|
Exclude:
|
|
85
71
|
- 'spec/gitlab/qa/component/gitlab_spec.rb'
|
|
86
72
|
|
|
73
|
+
# Offense count: 1
|
|
74
|
+
# Configuration parameters: CustomTransform, IgnoreMethods, SpecSuffixOnly.
|
|
75
|
+
RSpec/FilePath:
|
|
76
|
+
Exclude:
|
|
77
|
+
- 'spec/gitlab/qa/support/dev_ee_qa_image_spec.rb'
|
|
78
|
+
|
|
87
79
|
# Offense count: 2
|
|
88
80
|
RSpec/LeakyConstantDeclaration:
|
|
89
81
|
Exclude:
|
|
@@ -95,13 +87,6 @@ Style/ExplicitBlockArgument:
|
|
|
95
87
|
Exclude:
|
|
96
88
|
- 'lib/gitlab/qa/scenario/test/integration/ldap.rb'
|
|
97
89
|
|
|
98
|
-
# Offense count: 86
|
|
99
|
-
# Cop supports --auto-correct.
|
|
100
|
-
# Configuration parameters: EnforcedStyle.
|
|
101
|
-
# SupportedStyles: always, always_true, never
|
|
102
|
-
Style/FrozenStringLiteralComment:
|
|
103
|
-
Enabled: false
|
|
104
|
-
|
|
105
90
|
# Offense count: 1
|
|
106
91
|
# Cop supports --auto-correct.
|
|
107
92
|
Style/HashTransformKeys:
|
|
@@ -114,7 +99,7 @@ Style/HashTransformation:
|
|
|
114
99
|
Exclude:
|
|
115
100
|
- 'lib/gitlab/qa/docker/volumes.rb'
|
|
116
101
|
|
|
117
|
-
# Offense count:
|
|
102
|
+
# Offense count: 8
|
|
118
103
|
# Cop supports --auto-correct.
|
|
119
104
|
Style/IfUnlessModifier:
|
|
120
105
|
Exclude:
|
|
@@ -154,9 +139,9 @@ Style/StringConcatenation:
|
|
|
154
139
|
Exclude:
|
|
155
140
|
- 'lib/gitlab/qa/reporter.rb'
|
|
156
141
|
|
|
157
|
-
# Offense count:
|
|
142
|
+
# Offense count: 191
|
|
158
143
|
# Cop supports --auto-correct.
|
|
159
144
|
# Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
|
|
160
145
|
# URISchemes: http, https
|
|
161
146
|
Layout/LineLength:
|
|
162
|
-
Max:
|
|
147
|
+
Max: 189
|
data/Dangerfile
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
gitlab-qa (
|
|
4
|
+
gitlab-qa (8.0.0)
|
|
5
5
|
activesupport (~> 6.1)
|
|
6
6
|
gitlab (~> 4.18.0)
|
|
7
7
|
http (~> 5.0)
|
|
8
8
|
nokogiri (~> 1.10)
|
|
9
9
|
rainbow (~> 3.0.0)
|
|
10
10
|
table_print (= 1.5.7)
|
|
11
|
+
zeitwerk (~> 2.4)
|
|
11
12
|
|
|
12
13
|
GEM
|
|
13
14
|
remote: https://rubygems.org/
|
|
@@ -245,4 +246,4 @@ DEPENDENCIES
|
|
|
245
246
|
webmock (= 3.7.0)
|
|
246
247
|
|
|
247
248
|
BUNDLED WITH
|
|
248
|
-
2.
|
|
249
|
+
2.3.9
|
data/Rakefile
CHANGED
data/docs/run_qa_against_gdk.md
CHANGED
|
@@ -120,6 +120,11 @@ This is required because chrome-webdriver makes use of `/dev/shm` shared memory.
|
|
|
120
120
|
~3GB but unless you allocate 5GB or more some magic numbers may not enable a bigger `/dev/shm` in the
|
|
121
121
|
'host' VM that "native" docker runs on.
|
|
122
122
|
|
|
123
|
+
By default, Docker runs a container with a /dev/shm shared memory space 64MB.
|
|
124
|
+
This is typically too small for Chrome and will cause Chrome to crash when rendering large pages and fail the tests.
|
|
125
|
+
To fix, run the container with docker run `--shm-size=1gb` to increase the size of `/dev/shm`.
|
|
126
|
+
Since Chrome 65, this is no longer necessary. Instead, launch the browser with the `CHROME_DISABLE_DEV_SHM=true`.
|
|
127
|
+
|
|
123
128
|
Please note that while it's possible to run multi-node tests like Geo Primary and Secondary, you can't
|
|
124
129
|
access the machines from your host machine, as they are all exposed as `0.0.0.0:port`, and because
|
|
125
130
|
of that they don't match the configured VHOSTs in your GitLab installation, so the redirect login
|
data/exe/gitlab-qa
CHANGED
data/exe/gitlab-qa-report
CHANGED
data/gitlab-qa.gemspec
CHANGED
|
@@ -155,7 +155,9 @@ module Gitlab
|
|
|
155
155
|
rescue Docker::Shellout::StatusError => e
|
|
156
156
|
# for scenarios where a service fails during startup, attempt to retry to avoid flaky failures
|
|
157
157
|
if (retries += 1) < 3
|
|
158
|
-
|
|
158
|
+
Runtime::Logger.warn(
|
|
159
|
+
"Retry instance_no_teardown due to Docker::Shellout::StatusError -- attempt #{retries}"
|
|
160
|
+
)
|
|
159
161
|
teardown!
|
|
160
162
|
retry
|
|
161
163
|
end
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Gitlab
|
|
2
4
|
module QA
|
|
3
5
|
module Component
|
|
4
6
|
class Elasticsearch < Base
|
|
5
|
-
DOCKER_IMAGE = 'docker.elastic.co/elasticsearch/elasticsearch'
|
|
7
|
+
DOCKER_IMAGE = 'docker.elastic.co/elasticsearch/elasticsearch'
|
|
6
8
|
|
|
7
9
|
def name
|
|
8
10
|
@name ||= "elastic68"
|
|
@@ -13,6 +13,7 @@ module Gitlab
|
|
|
13
13
|
module Component
|
|
14
14
|
class Gitlab < Base
|
|
15
15
|
extend Forwardable
|
|
16
|
+
using Rainbow
|
|
16
17
|
|
|
17
18
|
attr_reader :release, :omnibus_configuration, :omnibus_gitlab_rails_env
|
|
18
19
|
attr_accessor :tls, :skip_availability_check, :runner_network, :seed_admin_token, :seed_db
|
|
@@ -121,8 +122,9 @@ module Gitlab
|
|
|
121
122
|
def prepare_gitlab_omnibus_config
|
|
122
123
|
set_formless_login_token
|
|
123
124
|
set_license_mode
|
|
125
|
+
return if omnibus_gitlab_rails_env.empty?
|
|
124
126
|
|
|
125
|
-
@omnibus_configuration << "gitlab_rails['env'] = #{@omnibus_gitlab_rails_env}"
|
|
127
|
+
@omnibus_configuration << "gitlab_rails['env'] = #{@omnibus_gitlab_rails_env}"
|
|
126
128
|
end
|
|
127
129
|
|
|
128
130
|
def start # rubocop:disable Metrics/AbcSize
|
|
@@ -148,7 +150,12 @@ module Gitlab
|
|
|
148
150
|
command << "--network-alias #{network_alias}"
|
|
149
151
|
end
|
|
150
152
|
end
|
|
151
|
-
|
|
153
|
+
|
|
154
|
+
return unless runner_network
|
|
155
|
+
|
|
156
|
+
Docker::Command.execute(
|
|
157
|
+
"network connect --alias #{name}.#{network} --alias #{name}.#{runner_network} #{runner_network} #{name}"
|
|
158
|
+
)
|
|
152
159
|
end
|
|
153
160
|
|
|
154
161
|
def reconfigure
|
|
@@ -163,10 +170,19 @@ module Gitlab
|
|
|
163
170
|
def wait_until_ready
|
|
164
171
|
return if skip_availability_check
|
|
165
172
|
|
|
166
|
-
|
|
167
|
-
|
|
173
|
+
availability = Availability.new(
|
|
174
|
+
name,
|
|
175
|
+
relative_path: relative_path,
|
|
176
|
+
scheme: scheme,
|
|
177
|
+
protocol_port: port.to_i
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
Runtime::Logger.info("Waiting for GitLab to become healthy ...")
|
|
181
|
+
|
|
182
|
+
if availability.check(Runtime::Env.gitlab_availability_timeout)
|
|
183
|
+
Runtime::Logger.info("-> GitLab is available at `#{availability.uri}`!".bright)
|
|
168
184
|
else
|
|
169
|
-
abort '
|
|
185
|
+
abort '-> GitLab unavailable!'.red
|
|
170
186
|
end
|
|
171
187
|
end
|
|
172
188
|
|
|
@@ -260,7 +276,10 @@ module Gitlab
|
|
|
260
276
|
[
|
|
261
277
|
@docker.exec(name, 'mkdir -p /opt/gitlab/embedded/service/gitlab-shell/hooks/pre-receive.d'),
|
|
262
278
|
@docker.write_files(name) do |f|
|
|
263
|
-
f.write(
|
|
279
|
+
f.write(
|
|
280
|
+
'/opt/gitlab/embedded/service/gitlab-shell/hooks/pre-receive.d/pre-receive.d',
|
|
281
|
+
global_server_prereceive_hook, false
|
|
282
|
+
)
|
|
264
283
|
end,
|
|
265
284
|
@docker.exec(name, 'chmod +x /opt/gitlab/embedded/service/gitlab-shell/hooks/pre-receive.d/*')
|
|
266
285
|
]
|
|
@@ -270,42 +289,41 @@ module Gitlab
|
|
|
270
289
|
def initialize(name, relative_path: '', scheme: 'http', protocol_port: 80)
|
|
271
290
|
@docker = Docker::Engine.new
|
|
272
291
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
@
|
|
292
|
+
@name = name
|
|
293
|
+
@scheme = scheme
|
|
294
|
+
@relative_path = relative_path
|
|
295
|
+
@protocol_port = protocol_port
|
|
277
296
|
end
|
|
278
297
|
|
|
279
298
|
def check(retries)
|
|
280
|
-
print "Waiting for GitLab at `#{@uri}` to become available "
|
|
281
|
-
|
|
282
299
|
retries.times do
|
|
283
300
|
return true if service_available?
|
|
284
301
|
|
|
285
|
-
print '.'
|
|
286
302
|
sleep 1
|
|
287
303
|
end
|
|
288
304
|
|
|
289
305
|
false
|
|
290
306
|
end
|
|
291
307
|
|
|
308
|
+
def uri
|
|
309
|
+
@uri ||= begin
|
|
310
|
+
port = docker.port(name, protocol_port).split(':').last
|
|
311
|
+
|
|
312
|
+
URI.join("#{scheme}://#{docker.hostname}:#{port}", relative_path)
|
|
313
|
+
end
|
|
314
|
+
end
|
|
315
|
+
|
|
292
316
|
private
|
|
293
317
|
|
|
318
|
+
attr_reader :docker, :name, :relative_path, :scheme, :protocol_port
|
|
319
|
+
|
|
294
320
|
def service_available?
|
|
295
|
-
|
|
296
|
-
http.head2(@uri.request_uri)
|
|
297
|
-
end
|
|
321
|
+
output = docker.inspect(name) { |command| command << "--format='{{json .State.Health.Status}}'" }
|
|
298
322
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
rescue Errno::ECONNREFUSED, Errno::ECONNRESET, EOFError => e
|
|
302
|
-
print e.message
|
|
323
|
+
output == '"healthy"'
|
|
324
|
+
rescue Docker::Shellout::StatusError
|
|
303
325
|
false
|
|
304
326
|
end
|
|
305
|
-
|
|
306
|
-
def opts
|
|
307
|
-
@uri.scheme == 'https' ? { use_ssl: true, verify_mode: OpenSSL::SSL::VERIFY_NONE } : {}
|
|
308
|
-
end
|
|
309
327
|
end
|
|
310
328
|
end
|
|
311
329
|
end
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'tempfile'
|
|
2
4
|
|
|
3
5
|
module Gitlab
|
|
4
6
|
module QA
|
|
5
7
|
module Component
|
|
6
8
|
class InternetTunnel < Base
|
|
7
|
-
DOCKER_IMAGE = 'gitlab/ssh-tunnel'
|
|
8
|
-
DOCKER_IMAGE_TAG = '1.0.0'
|
|
9
|
+
DOCKER_IMAGE = 'gitlab/ssh-tunnel'
|
|
10
|
+
DOCKER_IMAGE_TAG = '1.0.0'
|
|
9
11
|
|
|
10
12
|
attr_writer :gitlab_hostname
|
|
11
13
|
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Gitlab
|
|
2
4
|
module QA
|
|
3
5
|
module Component
|
|
4
6
|
class Jira < Base
|
|
5
|
-
DOCKER_IMAGE = 'registry.gitlab.com/gitlab-org/gitlab-qa/jira-gitlab'
|
|
6
|
-
DOCKER_IMAGE_TAG = '8.8-project-and-issue'
|
|
7
|
+
DOCKER_IMAGE = 'registry.gitlab.com/gitlab-org/gitlab-qa/jira-gitlab'
|
|
8
|
+
DOCKER_IMAGE_TAG = '8.8-project-and-issue'
|
|
7
9
|
|
|
8
10
|
def name
|
|
9
11
|
@name ||= "jira"
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
# This component sets up the MailHog (https://github.com/mailhog/MailHog)
|
|
2
3
|
# image with the proper configuration for SMTP email delivery from Gitlab
|
|
3
4
|
|
|
@@ -5,8 +6,8 @@ module Gitlab
|
|
|
5
6
|
module QA
|
|
6
7
|
module Component
|
|
7
8
|
class MailHog < Base
|
|
8
|
-
DOCKER_IMAGE = 'mailhog/mailhog'
|
|
9
|
-
DOCKER_IMAGE_TAG = 'v1.0.0'
|
|
9
|
+
DOCKER_IMAGE = 'mailhog/mailhog'
|
|
10
|
+
DOCKER_IMAGE_TAG = 'v1.0.0'
|
|
10
11
|
|
|
11
12
|
def name
|
|
12
13
|
@name ||= "mailhog"
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'securerandom'
|
|
2
4
|
require 'fileutils'
|
|
3
5
|
require 'yaml'
|
|
@@ -8,12 +10,12 @@ module Gitlab
|
|
|
8
10
|
module QA
|
|
9
11
|
module Component
|
|
10
12
|
class Minio < Base
|
|
11
|
-
DOCKER_IMAGE = 'minio/minio'
|
|
12
|
-
DOCKER_IMAGE_TAG = 'latest'
|
|
13
|
+
DOCKER_IMAGE = 'minio/minio'
|
|
14
|
+
DOCKER_IMAGE_TAG = 'latest'
|
|
13
15
|
# These are secrets used in a local Minio container, they're not used for any online S3 server.
|
|
14
|
-
AWS_ACCESS_KEY = 'AKIAIOSFODNN7EXAMPLE'
|
|
15
|
-
AWS_SECRET_KEY = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'
|
|
16
|
-
DATA_DIR = '/data'
|
|
16
|
+
AWS_ACCESS_KEY = 'AKIAIOSFODNN7EXAMPLE'
|
|
17
|
+
AWS_SECRET_KEY = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'
|
|
18
|
+
DATA_DIR = '/data'
|
|
17
19
|
DEFAULT_PORT = 9000
|
|
18
20
|
|
|
19
21
|
def initialize
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Gitlab
|
|
2
4
|
module QA
|
|
3
5
|
module Component
|
|
4
6
|
class PostgreSQL < Base
|
|
5
|
-
DOCKER_IMAGE = 'postgres'
|
|
6
|
-
DOCKER_IMAGE_TAG = '11'
|
|
7
|
+
DOCKER_IMAGE = 'postgres'
|
|
8
|
+
DOCKER_IMAGE_TAG = '11'
|
|
7
9
|
|
|
8
10
|
def name
|
|
9
11
|
@name ||= "postgres"
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'securerandom'
|
|
2
4
|
|
|
3
5
|
# This component sets up the docker-test-saml-idp (https://github.com/kristophjunge/docker-test-saml-idp)
|
|
@@ -7,8 +9,8 @@ module Gitlab
|
|
|
7
9
|
module QA
|
|
8
10
|
module Component
|
|
9
11
|
class SAML < Base
|
|
10
|
-
DOCKER_IMAGE = 'jamedjo/test-saml-idp'
|
|
11
|
-
DOCKER_IMAGE_TAG = 'latest'
|
|
12
|
+
DOCKER_IMAGE = 'jamedjo/test-saml-idp'
|
|
13
|
+
DOCKER_IMAGE_TAG = 'latest'
|
|
12
14
|
|
|
13
15
|
def set_entity_id(entity_id)
|
|
14
16
|
@environment['SIMPLESAMLPHP_SP_ENTITY_ID'] = entity_id
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'net/http'
|
|
2
4
|
require 'json'
|
|
3
5
|
require 'uri'
|
|
@@ -6,8 +8,8 @@ module Gitlab
|
|
|
6
8
|
module QA
|
|
7
9
|
module Component
|
|
8
10
|
class Staging
|
|
9
|
-
ADDRESS = 'https://staging.gitlab.com'
|
|
10
|
-
GEO_SECONDARY_ADDRESS = 'https://geo.staging.gitlab.com'
|
|
11
|
+
ADDRESS = 'https://staging.gitlab.com'
|
|
12
|
+
GEO_SECONDARY_ADDRESS = 'https://geo.staging.gitlab.com'
|
|
11
13
|
|
|
12
14
|
def self.release
|
|
13
15
|
QA::Release.new(image)
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Gitlab
|
|
2
4
|
module QA
|
|
3
5
|
module Component
|
|
4
6
|
class StagingRef < Staging
|
|
5
|
-
ADDRESS = 'https://staging-ref.gitlab.com'
|
|
6
|
-
GEO_SECONDARY_ADDRESS = 'https://geo.staging-ref.gitlab.com'
|
|
7
|
+
ADDRESS = 'https://staging-ref.gitlab.com'
|
|
8
|
+
GEO_SECONDARY_ADDRESS = 'https://geo.staging-ref.gitlab.com'
|
|
7
9
|
end
|
|
8
10
|
end
|
|
9
11
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Gitlab
|
|
2
4
|
module QA
|
|
3
5
|
module Docker
|
|
@@ -43,7 +45,7 @@ module Gitlab
|
|
|
43
45
|
#
|
|
44
46
|
# @return [String] The masked command string
|
|
45
47
|
def mask_secrets
|
|
46
|
-
@mask_secrets.each_with_object(to_s) { |secret, s| s.gsub!(secret, '*****') }
|
|
48
|
+
@mask_secrets.each_with_object(+to_s) { |secret, s| s.gsub!(secret, '*****') }
|
|
47
49
|
end
|
|
48
50
|
|
|
49
51
|
def ==(other)
|
|
@@ -52,6 +54,10 @@ module Gitlab
|
|
|
52
54
|
|
|
53
55
|
def execute!(&block)
|
|
54
56
|
Docker::Shellout.new(self).execute!(&block)
|
|
57
|
+
rescue Docker::Shellout::StatusError => e
|
|
58
|
+
e.set_backtrace([])
|
|
59
|
+
|
|
60
|
+
raise e
|
|
55
61
|
end
|
|
56
62
|
|
|
57
63
|
def self.execute(cmd, mask_secrets: nil, &block)
|
|
@@ -142,6 +142,16 @@ module Gitlab
|
|
|
142
142
|
Docker::Command.execute(['ps', name].compact.join(' '))
|
|
143
143
|
end
|
|
144
144
|
|
|
145
|
+
def inspect(name)
|
|
146
|
+
Docker::Command.new('inspect').then do |command|
|
|
147
|
+
yield command if block_given?
|
|
148
|
+
|
|
149
|
+
command << name
|
|
150
|
+
|
|
151
|
+
command.execute!
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
145
155
|
private
|
|
146
156
|
|
|
147
157
|
def full_image_name(image, tag)
|