gitlab-qa 7.36.0 → 8.2.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/cloud_activation.gitlab-ci.yml +0 -6
- data/.gitlab/ci/jobs/metrics.gitlab-ci.yml +49 -0
- data/.gitlab/ci/jobs/opensearch.gitlab-ci.yml +20 -0
- data/.gitlab-ci.yml +1 -0
- data/.rubocop_todo.yml +15 -23
- data/Gemfile.lock +24 -23
- data/docs/release_process.md +1 -0
- data/docs/run_qa_against_gdk.md +5 -0
- data/docs/trainings.md +2 -0
- data/docs/what_tests_can_be_run.md +2 -0
- data/gitlab-qa.gemspec +1 -0
- data/lib/gitlab/qa/component/gitlab.rb +18 -6
- data/lib/gitlab/qa/component/opensearch.rb +33 -0
- data/lib/gitlab/qa/component/specs.rb +12 -3
- data/lib/gitlab/qa/docker/engine.rb +8 -0
- data/lib/gitlab/qa/report/{junit_test_results.rb → j_unit_test_results.rb} +0 -0
- data/lib/gitlab/qa/runtime/env.rb +10 -1
- data/lib/gitlab/qa/runtime/omnibus_configurations/metrics.rb +20 -0
- data/lib/gitlab/qa/scenario/test/integration/opensearch.rb +62 -0
- data/lib/gitlab/qa/scenario/test/omnibus/update.rb +38 -2
- data/lib/gitlab/qa/test_logger.rb +1 -1
- data/lib/gitlab/qa/version.rb +1 -1
- data/lib/gitlab/qa.rb +49 -143
- data/scripts/generate-qa-jobs.rb +2 -0
- metadata +22 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8cc0b13405340964bb5e0a19cb21457d70543c5f3de8f023a31527b91feb8b0c
|
|
4
|
+
data.tar.gz: 64f23b12774640295fe5093a45b00e3d721266440b5bb359b3aad754adf0a4b5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a65f92e629724d354ab3cf038367ffb1002d27b35b3a8e5add2e1c82c08a718e20c57bc59e11ad1cbb466aa25041a4f00c87882d3fce18b7b3f3337d2c93f329
|
|
7
|
+
data.tar.gz: 977e2feec2033cd0a3cc325025c149568edab4a62b47e5f37a2bcda9ef6f2ec09f2183d48be1129d2bd85caea4b0911f96a882de45f4414d04cab4f86a400a05
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
ee:cloud-activation:
|
|
2
|
-
before_script:
|
|
3
|
-
- unset EE_LICENSE
|
|
4
|
-
- !reference [default, before_script]
|
|
5
2
|
extends:
|
|
6
3
|
- .rules:ee-never-when-triggered-by-feature-flag-definition-change
|
|
7
4
|
- .test
|
|
@@ -14,9 +11,6 @@ ee:cloud-activation:
|
|
|
14
11
|
GITLAB_QA_OPTIONS_COMBINED: "$GITLAB_QA_OPTIONS --seed-db license*.rb"
|
|
15
12
|
|
|
16
13
|
ee:cloud-activation-quarantine:
|
|
17
|
-
before_script:
|
|
18
|
-
- unset EE_LICENSE
|
|
19
|
-
- !reference [default, before_script]
|
|
20
14
|
extends:
|
|
21
15
|
- .rules:ee-never-when-triggered-by-feature-flag-definition-change
|
|
22
16
|
- .test
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
ce:metrics:
|
|
2
|
+
extends:
|
|
3
|
+
- .rules:ce-never-when-triggered-by-feature-flag-definition-change
|
|
4
|
+
- .test
|
|
5
|
+
- .high-capacity
|
|
6
|
+
- .ce-variables
|
|
7
|
+
- .rspec-report-opts
|
|
8
|
+
- .combined-gitlab-qa-options-script
|
|
9
|
+
variables:
|
|
10
|
+
GITLAB_QA_OPTIONS_COMBINED: "$GITLAB_QA_OPTIONS --omnibus-config metrics"
|
|
11
|
+
QA_RSPEC_TAGS: "--tag metrics"
|
|
12
|
+
|
|
13
|
+
ce:metrics-quarantine:
|
|
14
|
+
extends:
|
|
15
|
+
- .rules:ce-never-when-triggered-by-feature-flag-definition-change
|
|
16
|
+
- .test
|
|
17
|
+
- .high-capacity
|
|
18
|
+
- .ce-variables
|
|
19
|
+
- .quarantine
|
|
20
|
+
- .rspec-report-opts
|
|
21
|
+
- .combined-gitlab-qa-options-script
|
|
22
|
+
variables:
|
|
23
|
+
GITLAB_QA_OPTIONS_COMBINED: "$GITLAB_QA_OPTIONS --omnibus-config metrics"
|
|
24
|
+
QA_RSPEC_TAGS: "--tag metrics"
|
|
25
|
+
|
|
26
|
+
ee:metrics:
|
|
27
|
+
extends:
|
|
28
|
+
- .rules:ee-never-when-triggered-by-feature-flag-definition-change
|
|
29
|
+
- .test
|
|
30
|
+
- .high-capacity
|
|
31
|
+
- .ee-variables
|
|
32
|
+
- .rspec-report-opts
|
|
33
|
+
- .combined-gitlab-qa-options-script
|
|
34
|
+
variables:
|
|
35
|
+
GITLAB_QA_OPTIONS_COMBINED: "$GITLAB_QA_OPTIONS --omnibus-config metrics"
|
|
36
|
+
QA_RSPEC_TAGS: "--tag metrics"
|
|
37
|
+
|
|
38
|
+
ee:metrics-quarantine:
|
|
39
|
+
extends:
|
|
40
|
+
- .rules:ee-never-when-triggered-by-feature-flag-definition-change
|
|
41
|
+
- .test
|
|
42
|
+
- .high-capacity
|
|
43
|
+
- .ee-variables
|
|
44
|
+
- .quarantine
|
|
45
|
+
- .rspec-report-opts
|
|
46
|
+
- .combined-gitlab-qa-options-script
|
|
47
|
+
variables:
|
|
48
|
+
GITLAB_QA_OPTIONS_COMBINED: "$GITLAB_QA_OPTIONS --omnibus-config metrics"
|
|
49
|
+
QA_RSPEC_TAGS: "--tag quarantine --tag metrics"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
ee:opensearch:
|
|
2
|
+
extends:
|
|
3
|
+
- .rules:ee-never-when-triggered-by-feature-flag-definition-change
|
|
4
|
+
- .test
|
|
5
|
+
- .high-capacity
|
|
6
|
+
- .ee-variables
|
|
7
|
+
- .rspec-report-opts
|
|
8
|
+
variables:
|
|
9
|
+
QA_SCENARIO: "Test::Integration::Opensearch"
|
|
10
|
+
|
|
11
|
+
ee:opensearch-quarantine:
|
|
12
|
+
extends:
|
|
13
|
+
- .rules:ee-never-when-triggered-by-feature-flag-definition-change
|
|
14
|
+
- .test
|
|
15
|
+
- .high-capacity
|
|
16
|
+
- .ee-variables
|
|
17
|
+
- .quarantine
|
|
18
|
+
- .rspec-report-opts
|
|
19
|
+
variables:
|
|
20
|
+
QA_SCENARIO: "Test::Integration::Opensearch"
|
data/.gitlab-ci.yml
CHANGED
|
@@ -105,6 +105,7 @@ generate-jobs:
|
|
|
105
105
|
- bundle exec bin/qa Test::Instance::All http://dummy.test --count-examples-only -- $QA_TESTS --tag can_use_large_setup
|
|
106
106
|
- bundle exec bin/qa Test::Instance::All http://dummy.test --count-examples-only -- $QA_TESTS --tag cloud_activation
|
|
107
107
|
- bundle exec bin/qa Test::Instance::All http://dummy.test --count-examples-only -- $QA_TESTS --tag object_storage
|
|
108
|
+
- bundle exec bin/qa Test::Instance::All http://dummy.test --count-examples-only -- $QA_TESTS --tag metrics
|
|
108
109
|
- cp -r no_of_examples $CI_PROJECT_DIR
|
|
109
110
|
|
|
110
111
|
# TOP_UPSTREAM_DEFAULT_BRANCH is the default branch name of the original project that triggered a pipeline in this project.
|
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:
|
|
@@ -107,7 +99,7 @@ Style/HashTransformation:
|
|
|
107
99
|
Exclude:
|
|
108
100
|
- 'lib/gitlab/qa/docker/volumes.rb'
|
|
109
101
|
|
|
110
|
-
# Offense count:
|
|
102
|
+
# Offense count: 8
|
|
111
103
|
# Cop supports --auto-correct.
|
|
112
104
|
Style/IfUnlessModifier:
|
|
113
105
|
Exclude:
|
|
@@ -147,9 +139,9 @@ Style/StringConcatenation:
|
|
|
147
139
|
Exclude:
|
|
148
140
|
- 'lib/gitlab/qa/reporter.rb'
|
|
149
141
|
|
|
150
|
-
# Offense count:
|
|
142
|
+
# Offense count: 191
|
|
151
143
|
# Cop supports --auto-correct.
|
|
152
144
|
# Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
|
|
153
145
|
# URISchemes: http, https
|
|
154
146
|
Layout/LineLength:
|
|
155
|
-
Max:
|
|
147
|
+
Max: 189
|
data/Gemfile.lock
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
gitlab-qa (
|
|
4
|
+
gitlab-qa (8.2.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/
|
|
14
15
|
specs:
|
|
15
|
-
activesupport (6.1.6)
|
|
16
|
+
activesupport (6.1.6.1)
|
|
16
17
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
17
18
|
i18n (>= 1.6, < 2)
|
|
18
19
|
minitest (>= 5.1)
|
|
@@ -71,11 +72,11 @@ GEM
|
|
|
71
72
|
faraday-em_http (1.0.0)
|
|
72
73
|
faraday-em_synchrony (1.0.0)
|
|
73
74
|
faraday-excon (1.1.0)
|
|
74
|
-
faraday-http-cache (2.
|
|
75
|
+
faraday-http-cache (2.4.0)
|
|
75
76
|
faraday (>= 0.8)
|
|
76
77
|
faraday-httpclient (1.0.1)
|
|
77
|
-
faraday-multipart (1.0.
|
|
78
|
-
multipart-post (
|
|
78
|
+
faraday-multipart (1.0.4)
|
|
79
|
+
multipart-post (~> 2)
|
|
79
80
|
faraday-net_http (1.0.1)
|
|
80
81
|
faraday-net_http_persistent (1.2.0)
|
|
81
82
|
faraday-patron (1.0.0)
|
|
@@ -100,7 +101,7 @@ GEM
|
|
|
100
101
|
rubocop-rails (~> 2.9)
|
|
101
102
|
rubocop-rspec (~> 1.44)
|
|
102
103
|
hashdiff (1.0.1)
|
|
103
|
-
http (5.0
|
|
104
|
+
http (5.1.0)
|
|
104
105
|
addressable (~> 2.8)
|
|
105
106
|
http-cookie (~> 1.0)
|
|
106
107
|
http-form_data (~> 2.2)
|
|
@@ -111,7 +112,7 @@ GEM
|
|
|
111
112
|
httparty (0.20.0)
|
|
112
113
|
mime-types (~> 3.0)
|
|
113
114
|
multi_xml (>= 0.5.2)
|
|
114
|
-
i18n (1.
|
|
115
|
+
i18n (1.12.0)
|
|
115
116
|
concurrent-ruby (~> 1.0)
|
|
116
117
|
jaro_winkler (1.5.4)
|
|
117
118
|
kramdown (2.4.0)
|
|
@@ -126,17 +127,17 @@ GEM
|
|
|
126
127
|
mime-types-data (~> 3.2015)
|
|
127
128
|
mime-types-data (3.2022.0105)
|
|
128
129
|
mini_portile2 (2.8.0)
|
|
129
|
-
minitest (5.
|
|
130
|
+
minitest (5.16.2)
|
|
130
131
|
multi_xml (0.6.0)
|
|
131
|
-
multipart-post (2.
|
|
132
|
+
multipart-post (2.2.3)
|
|
132
133
|
nap (1.1.0)
|
|
133
134
|
no_proxy_fix (0.1.2)
|
|
134
|
-
nokogiri (1.13.
|
|
135
|
+
nokogiri (1.13.8)
|
|
135
136
|
mini_portile2 (~> 2.8.0)
|
|
136
137
|
racc (~> 1.4)
|
|
137
|
-
octokit (4.
|
|
138
|
-
faraday (>=
|
|
139
|
-
sawyer (~> 0.
|
|
138
|
+
octokit (4.25.1)
|
|
139
|
+
faraday (>= 1, < 3)
|
|
140
|
+
sawyer (~> 0.9)
|
|
140
141
|
open4 (1.3.4)
|
|
141
142
|
parallel (1.22.1)
|
|
142
143
|
parser (3.1.2.0)
|
|
@@ -146,11 +147,11 @@ GEM
|
|
|
146
147
|
method_source (~> 1.0)
|
|
147
148
|
public_suffix (4.0.7)
|
|
148
149
|
racc (1.6.0)
|
|
149
|
-
rack (2.2.
|
|
150
|
+
rack (2.2.4)
|
|
150
151
|
rainbow (3.0.0)
|
|
151
152
|
rake (13.0.6)
|
|
152
153
|
rchardet (1.8.0)
|
|
153
|
-
regexp_parser (2.
|
|
154
|
+
regexp_parser (2.5.0)
|
|
154
155
|
reverse_markdown (2.1.1)
|
|
155
156
|
nokogiri
|
|
156
157
|
rexml (3.2.5)
|
|
@@ -176,7 +177,7 @@ GEM
|
|
|
176
177
|
rubocop-ast (>= 0.6.0)
|
|
177
178
|
ruby-progressbar (~> 1.7)
|
|
178
179
|
unicode-display_width (>= 1.4.0, < 2.0)
|
|
179
|
-
rubocop-ast (1.
|
|
180
|
+
rubocop-ast (1.19.1)
|
|
180
181
|
parser (>= 3.1.1.0)
|
|
181
182
|
rubocop-gitlab-security (0.1.1)
|
|
182
183
|
rubocop (>= 0.51)
|
|
@@ -192,9 +193,9 @@ GEM
|
|
|
192
193
|
rubocop-ast (>= 0.7.1)
|
|
193
194
|
ruby-progressbar (1.11.0)
|
|
194
195
|
ruby2_keywords (0.0.5)
|
|
195
|
-
sawyer (0.
|
|
196
|
+
sawyer (0.9.2)
|
|
196
197
|
addressable (>= 2.3.5)
|
|
197
|
-
faraday (
|
|
198
|
+
faraday (>= 0.17.3, < 3)
|
|
198
199
|
solargraph (0.45.0)
|
|
199
200
|
backport (~> 1.2)
|
|
200
201
|
benchmark
|
|
@@ -214,8 +215,8 @@ GEM
|
|
|
214
215
|
terminal-table (3.0.2)
|
|
215
216
|
unicode-display_width (>= 1.1.1, < 3)
|
|
216
217
|
thor (1.2.1)
|
|
217
|
-
tilt (2.0.
|
|
218
|
-
tzinfo (2.0.
|
|
218
|
+
tilt (2.0.11)
|
|
219
|
+
tzinfo (2.0.5)
|
|
219
220
|
concurrent-ruby (~> 1.0)
|
|
220
221
|
unf (0.1.4)
|
|
221
222
|
unf_ext
|
|
@@ -226,9 +227,9 @@ GEM
|
|
|
226
227
|
crack (>= 0.3.2)
|
|
227
228
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
228
229
|
webrick (1.7.0)
|
|
229
|
-
yard (0.9.
|
|
230
|
+
yard (0.9.28)
|
|
230
231
|
webrick (~> 1.7.0)
|
|
231
|
-
zeitwerk (2.
|
|
232
|
+
zeitwerk (2.6.0)
|
|
232
233
|
|
|
233
234
|
PLATFORMS
|
|
234
235
|
ruby
|
|
@@ -245,4 +246,4 @@ DEPENDENCIES
|
|
|
245
246
|
webmock (= 3.7.0)
|
|
246
247
|
|
|
247
248
|
BUNDLED WITH
|
|
248
|
-
2.
|
|
249
|
+
2.3.9
|
data/docs/release_process.md
CHANGED
|
@@ -23,6 +23,7 @@ when we make a change - no matter the size of the change.
|
|
|
23
23
|
- If there is one, update it if necessary.
|
|
24
24
|
- If not, update [`lib/gitlab/qa/version.rb`] to an appropriate [semantic version](https://semver.org) in a new merge request using the [release template](https://gitlab.com/gitlab-org/gitlab-qa/blob/master/.gitlab/merge_request_templates/Release.md)
|
|
25
25
|
and title the MR like `"Bump version to <version>"`.
|
|
26
|
+
- Run `bundle update` to update the `Gemfile.lock` with the new version number of `gitlab-qa`.
|
|
26
27
|
- Merge the merge request.
|
|
27
28
|
- The new version should automatically be tagged and pushed to Rubygems by the `gem-release` job in the merge commit pipeline.
|
|
28
29
|
- Update the release notes for the newly created tag (https://gitlab.com/gitlab-org/gitlab-qa/-/tags):
|
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/docs/trainings.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# GitLab QA trainings
|
|
2
2
|
|
|
3
|
+
The handbook has [information about the entire test automation framework](https://about.gitlab.com/handbook/engineering/quality/#test-automation-framework), including GitLab QA. There you can find links to additional documentation and videos.
|
|
4
|
+
|
|
3
5
|
## Build team training on GitLab QA
|
|
4
6
|
|
|
5
7
|
A great introduction to the GitLab QA project, its internal structure, how it's
|
|
@@ -84,6 +84,7 @@ All environment variables used by GitLab QA should be defined in [`lib/gitlab/qa
|
|
|
84
84
|
| `QA_INFLUXDB_TOKEN` |- | Influxdb token for test metrics reporting | No|
|
|
85
85
|
| `QA_RUN_TYPE` |- | QA run type like `staging-full`, `canary`, `production` etc. Used in test metrics reporting | No|
|
|
86
86
|
| `QA_VALIDATE_RESOURCE_REUSE` | `false` | Set to `true` to [validate resource reuse](https://docs.gitlab.com/ee/development/testing_guide/end_to_end/resources.html#reusable-resources) after a test suite | No |
|
|
87
|
+
| `QA_USE_PUBLIC_IP_API` | `false` | When performing Instance tests against a remote/pre-existing instance, use an API to detect the public API for requests coming from gitlab-qa. Used by tests that exercise IP-address restrictions and similar
|
|
87
88
|
| `GITHUB_USERNAME` |- | Username for authenticating with GitHub. | No|
|
|
88
89
|
| `GITHUB_PASSWORD` |- | Password for authenticating with GitHub. | No|
|
|
89
90
|
| `GITLAB_QA_LOOP_RUNNER_MINUTES` | `1` | Minutes to run and repeat a spec while using the '--loop' option; default value is 1 minute. | No|
|
|
@@ -98,6 +99,7 @@ All environment variables used by GitLab QA should be defined in [`lib/gitlab/qa
|
|
|
98
99
|
| `GEO_FAILOVER` | `false` | Set to `true` when a Geo secondary site has been promoted to a Geo primary site. | No|
|
|
99
100
|
| `GITLAB_INITIAL_ROOT_PASSWORD` | `5iveL!fe` | Initial root password for Omnibus installations | No|
|
|
100
101
|
| `COLORIZED_LOGS` | `false` | Colors GitLab QA and test logs to improve readability | No|
|
|
102
|
+
| `QA_DOCKER_ADD_HOSTS` |- | Comma separated list of hosts to add to /etc/hosts in docker container | No|
|
|
101
103
|
|
|
102
104
|
## [Supported Remote Grid environment variables](./running_against_remote_grid.md)
|
|
103
105
|
|
data/gitlab-qa.gemspec
CHANGED
|
@@ -7,6 +7,7 @@ require 'uri'
|
|
|
7
7
|
require 'forwardable'
|
|
8
8
|
require 'openssl'
|
|
9
9
|
require 'tempfile'
|
|
10
|
+
require 'json'
|
|
10
11
|
|
|
11
12
|
module Gitlab
|
|
12
13
|
module QA
|
|
@@ -119,6 +120,10 @@ module Gitlab
|
|
|
119
120
|
super
|
|
120
121
|
end
|
|
121
122
|
|
|
123
|
+
def exist?(image, tag)
|
|
124
|
+
docker.manifest_exists?("#{image}:#{tag}")
|
|
125
|
+
end
|
|
126
|
+
|
|
122
127
|
def prepare_gitlab_omnibus_config
|
|
123
128
|
set_formless_login_token
|
|
124
129
|
set_license_mode
|
|
@@ -202,18 +207,18 @@ module Gitlab
|
|
|
202
207
|
end
|
|
203
208
|
|
|
204
209
|
def rails_version
|
|
205
|
-
|
|
206
|
-
@release.image, @release.tag,
|
|
207
|
-
'/opt/gitlab/version-manifest.json'
|
|
208
|
-
)
|
|
209
|
-
|
|
210
|
-
manifest = JSON.parse(json)
|
|
210
|
+
manifest = JSON.parse(read_package_manifest)
|
|
211
211
|
{
|
|
212
212
|
sha: manifest['software']['gitlab-rails']['locked_version'],
|
|
213
213
|
source: manifest['software']['gitlab-rails']['locked_source']['git']
|
|
214
214
|
}
|
|
215
215
|
end
|
|
216
216
|
|
|
217
|
+
def package_version
|
|
218
|
+
manifest = JSON.parse(read_package_manifest)
|
|
219
|
+
manifest['software']['package-scripts']['locked_version']
|
|
220
|
+
end
|
|
221
|
+
|
|
217
222
|
def copy_key_file(env_key)
|
|
218
223
|
key_dir = ENV['CI_PROJECT_DIR'] || Dir.tmpdir
|
|
219
224
|
key_file = Tempfile.new(env_key.downcase, key_dir)
|
|
@@ -229,6 +234,13 @@ module Gitlab
|
|
|
229
234
|
|
|
230
235
|
private
|
|
231
236
|
|
|
237
|
+
def read_package_manifest
|
|
238
|
+
@docker.read_file(
|
|
239
|
+
@release.image, @release.tag,
|
|
240
|
+
'/opt/gitlab/version-manifest.json'
|
|
241
|
+
)
|
|
242
|
+
end
|
|
243
|
+
|
|
232
244
|
# Copy certs to a temporary directory in current working directory.
|
|
233
245
|
# This is needed for docker-in-docker ci environments where mount points outside of build dir are not accessible
|
|
234
246
|
#
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Gitlab
|
|
4
|
+
module QA
|
|
5
|
+
module Component
|
|
6
|
+
class Opensearch < Base
|
|
7
|
+
DOCKER_IMAGE = 'opensearchproject/opensearch'
|
|
8
|
+
|
|
9
|
+
def name
|
|
10
|
+
@name ||= "elastic68"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def tag
|
|
14
|
+
Runtime::Env.opensearch_version
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def start
|
|
18
|
+
@docker.run(image: image, tag: tag) do |command|
|
|
19
|
+
command << "-d"
|
|
20
|
+
command << "--name #{name}"
|
|
21
|
+
command << "--net #{network}"
|
|
22
|
+
command << "--publish 9200:9200"
|
|
23
|
+
command << "--publish 9300:9300"
|
|
24
|
+
|
|
25
|
+
command.env("discovery.type", "single-node")
|
|
26
|
+
command.env("ES_JAVA_OPTS", "-Xms512m -Xmx512m")
|
|
27
|
+
command.env("plugins.security.disabled", "true")
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -23,9 +23,7 @@ module Gitlab
|
|
|
23
23
|
|
|
24
24
|
raise ArgumentError unless [suite, release].all?
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
@docker.pull(image: qa_image) unless Runtime::Env.skip_pull?
|
|
26
|
+
docker_pull_qa_image_if_needed
|
|
29
27
|
|
|
30
28
|
Runtime::Logger.info("Running test suite `#{suite}` for #{release.project_name}")
|
|
31
29
|
|
|
@@ -52,6 +50,11 @@ module Gitlab
|
|
|
52
50
|
command.env('QA_HOSTNAME', hostname)
|
|
53
51
|
end
|
|
54
52
|
|
|
53
|
+
unless Runtime::Env.docker_add_hosts.empty?
|
|
54
|
+
hosts = Runtime::Env.docker_add_hosts.map { |host| "--add-host=#{host} " }.join
|
|
55
|
+
command << hosts # override /etc/hosts in docker container when test runs
|
|
56
|
+
end
|
|
57
|
+
|
|
55
58
|
env.merge(Runtime::Env.variables).each do |key, value|
|
|
56
59
|
command.env(key, value)
|
|
57
60
|
end
|
|
@@ -70,6 +73,12 @@ module Gitlab
|
|
|
70
73
|
|
|
71
74
|
private
|
|
72
75
|
|
|
76
|
+
def docker_pull_qa_image_if_needed
|
|
77
|
+
@docker.login(**release.login_params) if release.login_params
|
|
78
|
+
|
|
79
|
+
@docker.pull(image: qa_image) unless Runtime::Env.skip_pull?
|
|
80
|
+
end
|
|
81
|
+
|
|
73
82
|
def args_with_flags(args, feature_flag_set)
|
|
74
83
|
return args if feature_flag_set.empty?
|
|
75
84
|
|
|
@@ -110,6 +110,14 @@ module Gitlab
|
|
|
110
110
|
Docker::Command.execute("rm -f #{name}")
|
|
111
111
|
end
|
|
112
112
|
|
|
113
|
+
def manifest_exists?(name)
|
|
114
|
+
Docker::Command.execute("manifest inspect #{name}")
|
|
115
|
+
rescue Docker::Shellout::StatusError
|
|
116
|
+
false
|
|
117
|
+
else
|
|
118
|
+
true
|
|
119
|
+
end
|
|
120
|
+
|
|
113
121
|
def container_exists?(name)
|
|
114
122
|
Docker::Command.execute("container inspect #{name}")
|
|
115
123
|
rescue Docker::Shellout::StatusError
|
|
File without changes
|
|
@@ -43,6 +43,7 @@ module Gitlab
|
|
|
43
43
|
'QA_RUN_TYPE' => :qa_run_type,
|
|
44
44
|
'QA_SKIP_PULL' => :qa_skip_pull,
|
|
45
45
|
'QA_VALIDATE_RESOURCE_REUSE' => :qa_validate_resource_reuse,
|
|
46
|
+
'QA_USE_PUBLIC_IP_API' => :qa_use_public_ip_api,
|
|
46
47
|
'GITLAB_API_BASE' => :api_base,
|
|
47
48
|
'GITLAB_ADMIN_USERNAME' => :admin_username,
|
|
48
49
|
'GITLAB_ADMIN_PASSWORD' => :admin_password,
|
|
@@ -229,7 +230,11 @@ module Gitlab
|
|
|
229
230
|
end
|
|
230
231
|
|
|
231
232
|
def elastic_version
|
|
232
|
-
env_var_value_if_defined('ELASTIC_VERSION') || '
|
|
233
|
+
env_var_value_if_defined('ELASTIC_VERSION') || '8.2.0'
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
def opensearch_version
|
|
237
|
+
env_var_value_if_defined('OPENSEARCH_VERSION') || '2.0.1'
|
|
233
238
|
end
|
|
234
239
|
|
|
235
240
|
def require_license!
|
|
@@ -357,6 +362,10 @@ module Gitlab
|
|
|
357
362
|
"#{ci_project_name}-#{test_subset}"
|
|
358
363
|
end
|
|
359
364
|
|
|
365
|
+
def docker_add_hosts
|
|
366
|
+
(env_var_value_if_defined('QA_DOCKER_ADD_HOSTS') || '').split(',')
|
|
367
|
+
end
|
|
368
|
+
|
|
360
369
|
private
|
|
361
370
|
|
|
362
371
|
def enabled?(value, default: true)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Gitlab
|
|
4
|
+
module QA
|
|
5
|
+
module Runtime
|
|
6
|
+
module OmnibusConfigurations
|
|
7
|
+
class Metrics < Default
|
|
8
|
+
def configuration
|
|
9
|
+
<<~RUBY
|
|
10
|
+
puma['exporter_enabled'] = true
|
|
11
|
+
puma['exporter_port'] = 8083
|
|
12
|
+
sidekiq['metrics_enabled'] = true
|
|
13
|
+
sidekiq['listen_port'] = 8082
|
|
14
|
+
RUBY
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Gitlab
|
|
4
|
+
module QA
|
|
5
|
+
module Scenario
|
|
6
|
+
module Test
|
|
7
|
+
module Integration
|
|
8
|
+
class Opensearch < Scenario::Template
|
|
9
|
+
attr_reader :gitlab_name, :spec_suite
|
|
10
|
+
|
|
11
|
+
def initialize
|
|
12
|
+
@gitlab_name = 'gitlab-opensearch'
|
|
13
|
+
# Currently the test suite that tests Advanced Search features is called 'Elasticsearch' which we hope to abstract to 'Advancedsearch' in the future
|
|
14
|
+
@spec_suite = 'QA::EE::Scenario::Test::Integration::Elasticsearch'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def before_perform(release)
|
|
18
|
+
raise ArgumentError, 'OpenSearch is an EE only feature!' unless release.ee?
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def perform(release, *rspec_args)
|
|
22
|
+
release = QA::Release.new(release)
|
|
23
|
+
before_perform(release)
|
|
24
|
+
|
|
25
|
+
Component::Gitlab.perform do |gitlab|
|
|
26
|
+
gitlab.release = release
|
|
27
|
+
setup_opensearch_on gitlab
|
|
28
|
+
|
|
29
|
+
Component::Opensearch.perform do |opensearch|
|
|
30
|
+
opensearch.network = 'test'
|
|
31
|
+
opensearch.instance do
|
|
32
|
+
gitlab.instance do
|
|
33
|
+
Runtime::Logger.info("Running #{spec_suite} specs!")
|
|
34
|
+
|
|
35
|
+
Component::Specs.perform do |specs|
|
|
36
|
+
specs.suite = spec_suite
|
|
37
|
+
specs.release = gitlab.release
|
|
38
|
+
specs.network = gitlab.network
|
|
39
|
+
specs.args = [gitlab.address, *rspec_args]
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def empty_index
|
|
48
|
+
@empty_index ||= ["gitlab-rake gitlab:elastic:create_empty_index"]
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def setup_opensearch_on(instance)
|
|
52
|
+
instance.name = gitlab_name
|
|
53
|
+
instance.network = 'test'
|
|
54
|
+
instance.elastic_url = "http://elastic68:9200"
|
|
55
|
+
instance.exec_commands = empty_index
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -10,8 +10,44 @@ module Gitlab
|
|
|
10
10
|
module Omnibus
|
|
11
11
|
class Update < Scenario::Template
|
|
12
12
|
def perform(from_release, to_release = nil, *rspec_args)
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
version = Component::Gitlab.perform do |gitlab|
|
|
14
|
+
gitlab.release = from_release
|
|
15
|
+
gitlab.act do
|
|
16
|
+
pull
|
|
17
|
+
package_version
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
if version
|
|
22
|
+
# Sub any plus symbols in version eg. "15.1.2+ce.0"
|
|
23
|
+
version.tr!('+', '-')
|
|
24
|
+
Runtime::Logger.info("Found previous version '#{version}'")
|
|
25
|
+
|
|
26
|
+
current_release = QA::Release.new(to_release || from_release)
|
|
27
|
+
|
|
28
|
+
type = current_release.ee? ? 'ee' : 'ce'
|
|
29
|
+
|
|
30
|
+
existing_previous = Component::Gitlab.perform do |gitlab|
|
|
31
|
+
gitlab.act do
|
|
32
|
+
next "gitlab/gitlab-#{type}:#{version}" if exist?("gitlab/gitlab-#{type}", version)
|
|
33
|
+
|
|
34
|
+
next "gitlab/gitlab-#{type}:#{version}-#{type}.0" if exist?("gitlab/gitlab-#{type}", "#{version}-#{type}.0")
|
|
35
|
+
|
|
36
|
+
nil
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
else
|
|
40
|
+
Runtime::Logger.info("Could not find previous image version")
|
|
41
|
+
existing_previous = nil
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
previous_release = if existing_previous
|
|
45
|
+
Runtime::Logger.info("Using previous image '#{existing_previous}'")
|
|
46
|
+
QA::Release.new(existing_previous)
|
|
47
|
+
else
|
|
48
|
+
Runtime::Logger.info("Using stable as previous image")
|
|
49
|
+
QA::Release.new(from_release).previous_stable
|
|
50
|
+
end
|
|
15
51
|
|
|
16
52
|
Docker::Volumes.new.with_temporary_volumes do |volumes|
|
|
17
53
|
Component::Gitlab.perform do |gitlab|
|
data/lib/gitlab/qa/version.rb
CHANGED
data/lib/gitlab/qa.rb
CHANGED
|
@@ -1,151 +1,57 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'rainbow/refinement'
|
|
4
|
+
require 'zeitwerk'
|
|
4
5
|
|
|
5
6
|
module Gitlab
|
|
6
7
|
module QA
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
module Omnibus
|
|
57
|
-
autoload :Image, 'gitlab/qa/scenario/test/omnibus/image'
|
|
58
|
-
autoload :Update, 'gitlab/qa/scenario/test/omnibus/update'
|
|
59
|
-
autoload :Upgrade, 'gitlab/qa/scenario/test/omnibus/upgrade'
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
module Integration
|
|
63
|
-
autoload :Geo, 'gitlab/qa/scenario/test/integration/geo'
|
|
64
|
-
autoload :LDAP, 'gitlab/qa/scenario/test/integration/ldap'
|
|
65
|
-
autoload :LDAPNoTLS, 'gitlab/qa/scenario/test/integration/ldap_no_tls'
|
|
66
|
-
autoload :LDAPNoServer, 'gitlab/qa/scenario/test/integration/ldap_no_server'
|
|
67
|
-
autoload :LDAPTLS, 'gitlab/qa/scenario/test/integration/ldap_tls'
|
|
68
|
-
autoload :SAML, 'gitlab/qa/scenario/test/integration/saml'
|
|
69
|
-
autoload :GroupSAML, 'gitlab/qa/scenario/test/integration/group_saml'
|
|
70
|
-
autoload :InstanceSAML, 'gitlab/qa/scenario/test/integration/instance_saml'
|
|
71
|
-
autoload :Mattermost, 'gitlab/qa/scenario/test/integration/mattermost'
|
|
72
|
-
autoload :Kubernetes, 'gitlab/qa/scenario/test/integration/kubernetes'
|
|
73
|
-
autoload :Praefect, 'gitlab/qa/scenario/test/integration/praefect'
|
|
74
|
-
autoload :Elasticsearch, 'gitlab/qa/scenario/test/integration/elasticsearch'
|
|
75
|
-
autoload :SMTP, 'gitlab/qa/scenario/test/integration/smtp'
|
|
76
|
-
autoload :GitalyCluster, 'gitlab/qa/scenario/test/integration/gitaly_cluster'
|
|
77
|
-
autoload :Jira, 'gitlab/qa/scenario/test/integration/jira'
|
|
78
|
-
autoload :SSHTunnel, 'gitlab/qa/scenario/test/integration/ssh_tunnel'
|
|
79
|
-
autoload :MTLS, 'gitlab/qa/scenario/test/integration/mtls'
|
|
80
|
-
autoload :ClientSSL, 'gitlab/qa/scenario/test/integration/client_ssl'
|
|
81
|
-
autoload :Registry, 'gitlab/qa/scenario/test/integration/registry'
|
|
82
|
-
autoload :RegistryTLS, 'gitlab/qa/scenario/test/integration/registry_tls'
|
|
83
|
-
autoload :ServicePingDisabled, 'gitlab/qa/scenario/test/integration/service_ping_disabled'
|
|
84
|
-
autoload :Integrations, 'gitlab/qa/scenario/test/integration/integrations'
|
|
85
|
-
autoload :RegistryWithCDN, 'gitlab/qa/scenario/test/integration/registry_with_cdn'
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
module Sanity
|
|
89
|
-
autoload :Version, 'gitlab/qa/scenario/test/sanity/version'
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
module Component
|
|
95
|
-
autoload :Base, 'gitlab/qa/component/base'
|
|
96
|
-
autoload :Gitlab, 'gitlab/qa/component/gitlab'
|
|
97
|
-
autoload :InternetTunnel, 'gitlab/qa/component/internet_tunnel'
|
|
98
|
-
autoload :LDAP, 'gitlab/qa/component/ldap'
|
|
99
|
-
autoload :SAML, 'gitlab/qa/component/saml'
|
|
100
|
-
autoload :Specs, 'gitlab/qa/component/specs'
|
|
101
|
-
autoload :Staging, 'gitlab/qa/component/staging'
|
|
102
|
-
autoload :StagingRef, 'gitlab/qa/component/staging_ref'
|
|
103
|
-
autoload :Production, 'gitlab/qa/component/production'
|
|
104
|
-
autoload :Minio, 'gitlab/qa/component/minio'
|
|
105
|
-
autoload :Preprod, 'gitlab/qa/component/preprod'
|
|
106
|
-
autoload :Release, 'gitlab/qa/component/release'
|
|
107
|
-
autoload :Elasticsearch, 'gitlab/qa/component/elasticsearch'
|
|
108
|
-
autoload :MailHog, 'gitlab/qa/component/mail_hog'
|
|
109
|
-
autoload :Jira, 'gitlab/qa/component/jira'
|
|
110
|
-
autoload :PostgreSQL, 'gitlab/qa/component/postgresql'
|
|
111
|
-
autoload :Telegraf, 'gitlab/qa/component/telegraf'
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
module Support
|
|
115
|
-
autoload :GetRequest, 'gitlab/qa/support/get_request'
|
|
116
|
-
autoload :HttpRequest, 'gitlab/qa/support/http_request'
|
|
117
|
-
autoload :DevEEQAImage, 'gitlab/qa/support/dev_ee_qa_image'
|
|
118
|
-
autoload :InvalidResponseError, 'gitlab/qa/support/invalid_response_error'
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
module Docker
|
|
122
|
-
autoload :Command, 'gitlab/qa/docker/command'
|
|
123
|
-
autoload :Engine, 'gitlab/qa/docker/engine'
|
|
124
|
-
autoload :Shellout, 'gitlab/qa/docker/shellout'
|
|
125
|
-
autoload :Volumes, 'gitlab/qa/docker/volumes'
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
module Report
|
|
129
|
-
autoload :GitlabIssueClient, 'gitlab/qa/report/gitlab_issue_client'
|
|
130
|
-
autoload :GitlabIssueDryClient, 'gitlab/qa/report/gitlab_issue_dry_client'
|
|
131
|
-
autoload :BaseTestResults, 'gitlab/qa/report/base_test_results'
|
|
132
|
-
autoload :RelateFailureIssue, 'gitlab/qa/report/relate_failure_issue'
|
|
133
|
-
autoload :JsonTestResults, 'gitlab/qa/report/json_test_results'
|
|
134
|
-
autoload :JUnitTestResults, 'gitlab/qa/report/junit_test_results'
|
|
135
|
-
autoload :PrepareStageReports, 'gitlab/qa/report/prepare_stage_reports'
|
|
136
|
-
autoload :ReportAsIssue, 'gitlab/qa/report/report_as_issue'
|
|
137
|
-
autoload :ReportResults, 'gitlab/qa/report/report_results'
|
|
138
|
-
autoload :ResultsInIssues, 'gitlab/qa/report/results_in_issues'
|
|
139
|
-
autoload :ResultsInTestCases, 'gitlab/qa/report/results_in_testcases'
|
|
140
|
-
autoload :ResultsReporterShared, 'gitlab/qa/report/results_reporter_shared'
|
|
141
|
-
autoload :GenerateTestSession, 'gitlab/qa/report/generate_test_session'
|
|
142
|
-
autoload :SummaryTable, 'gitlab/qa/report/summary_table'
|
|
143
|
-
autoload :TestResult, 'gitlab/qa/report/test_result'
|
|
144
|
-
autoload :UpdateScreenshotPath, 'gitlab/qa/report/update_screenshot_path'
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
module Slack
|
|
148
|
-
autoload :PostToSlack, 'gitlab/qa/slack/post_to_slack'
|
|
149
|
-
end
|
|
8
|
+
loader = Zeitwerk::Loader.new
|
|
9
|
+
loader.push_dir("#{__dir__}/qa", namespace: Gitlab::QA)
|
|
10
|
+
|
|
11
|
+
loader.inflector.inflect(
|
|
12
|
+
'dev_ee_qa_image' => 'DevEEQAImage',
|
|
13
|
+
'results_in_testcases' => 'ResultsInTestCases',
|
|
14
|
+
'postgresql' => 'PostgreSQL',
|
|
15
|
+
'registry_with_cdn' => 'RegistryWithCDN',
|
|
16
|
+
'smtp' => 'SMTP',
|
|
17
|
+
'mtls' => 'MTLS',
|
|
18
|
+
'saml' => 'SAML',
|
|
19
|
+
'ce' => 'CE',
|
|
20
|
+
'ee' => 'EE',
|
|
21
|
+
'api' => 'API',
|
|
22
|
+
'ssh' => 'SSH',
|
|
23
|
+
'ssh_key' => 'SSHKey',
|
|
24
|
+
'ssh_keys' => 'SSHKeys',
|
|
25
|
+
'ecdsa' => 'ECDSA',
|
|
26
|
+
'ed25519' => 'ED25519',
|
|
27
|
+
'rsa' => 'RSA',
|
|
28
|
+
'ldap' => 'LDAP',
|
|
29
|
+
'ldap_tls' => 'LDAPTLS',
|
|
30
|
+
'ldap_no_tls' => 'LDAPNoTLS',
|
|
31
|
+
'ldap_no_server' => 'LDAPNoServer',
|
|
32
|
+
'rspec' => 'RSpec',
|
|
33
|
+
'web_ide' => 'WebIDE',
|
|
34
|
+
'ci_cd' => 'CiCd',
|
|
35
|
+
'project_imported_from_url' => 'ProjectImportedFromURL',
|
|
36
|
+
'repo_by_url' => 'RepoByURL',
|
|
37
|
+
'oauth' => 'OAuth',
|
|
38
|
+
'saml_sso_sign_in' => 'SamlSSOSignIn',
|
|
39
|
+
'saml_sso_sign_up' => 'SamlSSOSignUp',
|
|
40
|
+
'group_saml' => 'GroupSAML',
|
|
41
|
+
'instance_saml' => 'InstanceSAML',
|
|
42
|
+
'saml_sso' => 'SamlSSO',
|
|
43
|
+
'ldap_sync' => 'LDAPSync',
|
|
44
|
+
'ip_address' => 'IPAddress',
|
|
45
|
+
'gpg' => 'GPG',
|
|
46
|
+
'user_gpg' => 'UserGPG',
|
|
47
|
+
'otp' => 'OTP',
|
|
48
|
+
'jira_api' => 'JiraAPI',
|
|
49
|
+
'registry_tls' => 'RegistryTLS',
|
|
50
|
+
'jetbrains' => 'JetBrains',
|
|
51
|
+
'vscode' => 'VSCode',
|
|
52
|
+
'cli_commands' => 'CLICommands'
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
loader.setup
|
|
150
56
|
end
|
|
151
57
|
end
|
data/scripts/generate-qa-jobs.rb
CHANGED
|
@@ -37,6 +37,7 @@ class GenerateQAJobs
|
|
|
37
37
|
jobs.merge!(load_yml_contents('registry', should_automatically_run?('test_integration_registry')))
|
|
38
38
|
jobs.merge!(load_yml_contents('packages', should_automatically_run?('test_instance_all_packages')))
|
|
39
39
|
jobs.merge!(load_yml_contents('elasticsearch', should_automatically_run?('test_integration_elasticsearch')))
|
|
40
|
+
jobs.merge!(load_yml_contents('opensearch', should_automatically_run?('test_integration_opensearch')))
|
|
40
41
|
jobs.merge!(load_yml_contents('praefect', should_automatically_run?('test_instance_all')))
|
|
41
42
|
jobs.merge!(load_yml_contents('gitaly_cluster', should_automatically_run?('test_instance_all')))
|
|
42
43
|
jobs.merge!(load_yml_contents('mtls', should_automatically_run?('test_instance_all_mtls')))
|
|
@@ -47,6 +48,7 @@ class GenerateQAJobs
|
|
|
47
48
|
jobs.merge!(load_yml_contents('cloud_activation', should_automatically_run?('test_instance_all_cloud_activation')))
|
|
48
49
|
jobs.merge!(load_yml_contents('registry_with_cdn', should_automatically_run?('test_integration_registrywithcdn')))
|
|
49
50
|
jobs.merge!(load_yml_contents('staging'))
|
|
51
|
+
jobs.merge!(load_yml_contents('metrics', should_automatically_run?('test_instance_all_metrics')))
|
|
50
52
|
|
|
51
53
|
# Disabling geo jobs temporarily due to https://gitlab.com/gitlab-org/quality/team-tasks/-/issues/774
|
|
52
54
|
# jobs.merge!(load_yml_contents('geo', should_automatically_run?('scenario_test_geo')))
|
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
|
+
version: 8.2.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: 2022-
|
|
11
|
+
date: 2022-07-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: climate_control
|
|
@@ -206,6 +206,20 @@ dependencies:
|
|
|
206
206
|
- - '='
|
|
207
207
|
- !ruby/object:Gem::Version
|
|
208
208
|
version: 1.5.7
|
|
209
|
+
- !ruby/object:Gem::Dependency
|
|
210
|
+
name: zeitwerk
|
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
|
212
|
+
requirements:
|
|
213
|
+
- - "~>"
|
|
214
|
+
- !ruby/object:Gem::Version
|
|
215
|
+
version: '2.4'
|
|
216
|
+
type: :runtime
|
|
217
|
+
prerelease: false
|
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
219
|
+
requirements:
|
|
220
|
+
- - "~>"
|
|
221
|
+
- !ruby/object:Gem::Version
|
|
222
|
+
version: '2.4'
|
|
209
223
|
description:
|
|
210
224
|
email:
|
|
211
225
|
- gitlab-qa@gmail.com
|
|
@@ -237,6 +251,7 @@ files:
|
|
|
237
251
|
- ".gitlab/ci/jobs/ldap_no_tls.gitlab-ci.yml"
|
|
238
252
|
- ".gitlab/ci/jobs/ldap_tls.gitlab-ci.yml"
|
|
239
253
|
- ".gitlab/ci/jobs/mattermost.gitlab-ci.yml"
|
|
254
|
+
- ".gitlab/ci/jobs/metrics.gitlab-ci.yml"
|
|
240
255
|
- ".gitlab/ci/jobs/mtls.gitlab-ci.yml"
|
|
241
256
|
- ".gitlab/ci/jobs/object_storage.gitlab-ci.yml"
|
|
242
257
|
- ".gitlab/ci/jobs/object_storage_aws.gitlab-ci.yml"
|
|
@@ -244,6 +259,7 @@ files:
|
|
|
244
259
|
- ".gitlab/ci/jobs/object_storage_registry_tls.gitlab-ci.yml"
|
|
245
260
|
- ".gitlab/ci/jobs/omnibus_image.gitlab-ci.yml"
|
|
246
261
|
- ".gitlab/ci/jobs/omnibus_upgrade.gitlab-ci.yml"
|
|
262
|
+
- ".gitlab/ci/jobs/opensearch.gitlab-ci.yml"
|
|
247
263
|
- ".gitlab/ci/jobs/packages.gitlab-ci.yml"
|
|
248
264
|
- ".gitlab/ci/jobs/praefect.gitlab-ci.yml"
|
|
249
265
|
- ".gitlab/ci/jobs/registry.gitlab-ci.yml"
|
|
@@ -302,6 +318,7 @@ files:
|
|
|
302
318
|
- lib/gitlab/qa/component/ldap.rb
|
|
303
319
|
- lib/gitlab/qa/component/mail_hog.rb
|
|
304
320
|
- lib/gitlab/qa/component/minio.rb
|
|
321
|
+
- lib/gitlab/qa/component/opensearch.rb
|
|
305
322
|
- lib/gitlab/qa/component/postgresql.rb
|
|
306
323
|
- lib/gitlab/qa/component/preprod.rb
|
|
307
324
|
- lib/gitlab/qa/component/production.rb
|
|
@@ -320,8 +337,8 @@ files:
|
|
|
320
337
|
- lib/gitlab/qa/report/generate_test_session.rb
|
|
321
338
|
- lib/gitlab/qa/report/gitlab_issue_client.rb
|
|
322
339
|
- lib/gitlab/qa/report/gitlab_issue_dry_client.rb
|
|
340
|
+
- lib/gitlab/qa/report/j_unit_test_results.rb
|
|
323
341
|
- lib/gitlab/qa/report/json_test_results.rb
|
|
324
|
-
- lib/gitlab/qa/report/junit_test_results.rb
|
|
325
342
|
- lib/gitlab/qa/report/prepare_stage_reports.rb
|
|
326
343
|
- lib/gitlab/qa/report/relate_failure_issue.rb
|
|
327
344
|
- lib/gitlab/qa/report/report_as_issue.rb
|
|
@@ -341,6 +358,7 @@ files:
|
|
|
341
358
|
- lib/gitlab/qa/runtime/omnibus_configurations/decomposition_single_db.rb
|
|
342
359
|
- lib/gitlab/qa/runtime/omnibus_configurations/default.rb
|
|
343
360
|
- lib/gitlab/qa/runtime/omnibus_configurations/license_mode.rb
|
|
361
|
+
- lib/gitlab/qa/runtime/omnibus_configurations/metrics.rb
|
|
344
362
|
- lib/gitlab/qa/runtime/omnibus_configurations/object_storage.rb
|
|
345
363
|
- lib/gitlab/qa/runtime/omnibus_configurations/object_storage_aws.rb
|
|
346
364
|
- lib/gitlab/qa/runtime/omnibus_configurations/object_storage_gcs.rb
|
|
@@ -381,6 +399,7 @@ files:
|
|
|
381
399
|
- lib/gitlab/qa/scenario/test/integration/ldap_tls.rb
|
|
382
400
|
- lib/gitlab/qa/scenario/test/integration/mattermost.rb
|
|
383
401
|
- lib/gitlab/qa/scenario/test/integration/mtls.rb
|
|
402
|
+
- lib/gitlab/qa/scenario/test/integration/opensearch.rb
|
|
384
403
|
- lib/gitlab/qa/scenario/test/integration/praefect.rb
|
|
385
404
|
- lib/gitlab/qa/scenario/test/integration/registry.rb
|
|
386
405
|
- lib/gitlab/qa/scenario/test/integration/registry_tls.rb
|