gitlab-qa 7.27.1 → 7.29.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d08b53ffc75578165d38ea6c735882e0fdf9059ece88c1aa91ecdac67df8fa1d
4
- data.tar.gz: 35091d5ab69c1a88a21ffe839c73d7fc23744517e28f4d6d193c92a7c1bb3252
3
+ metadata.gz: 6f3a8d250f26a5899d776475ac349829311045b51aeed7b73f1a40fc41cd23dc
4
+ data.tar.gz: 2258303729505a302fe0a6d05b57f5deee6efe21f0d7cbfb2542e92febfe2dc7
5
5
  SHA512:
6
- metadata.gz: 56119714620bfa55ed88e9136d4e5a35e72606996c6bab5e0a613ea16e14653dc50055a54cc4302d26dbd01ceb614ebbf85bca1d8237ffc5f402e36586e6e37e
7
- data.tar.gz: 47ba7c6b6603cc8982b5fb5a54732550d13c40eea076f0fd46054a104093c2c97016d3e84a468e073e925ed1633f83085414667740230a2b6511ce2d3836b9c8
6
+ metadata.gz: 2ad81f0b8d7bcb59ff76963f0463ae2d221be28b262455c22e6ee11ad91a9c6b768291639ed25b9ff756c9b319566f4aa596281ca2c09d470a5a1374174f3929
7
+ data.tar.gz: 6e5a9601b50167f4cae9c87fe1415b1a6a740c855e56580cc553559d481842f6ed9feced7760a0403bb7993ef5ba7e11c1fd5723d2812a06227d1a64b87aefd1
data/.gitignore CHANGED
@@ -1,12 +1,10 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
- /Gemfile.lock
4
3
  /_yardoc/
5
4
  /coverage/
6
5
  /doc/
7
6
  /pkg/
8
7
  /spec/reports/
9
- /tmp/
10
8
  /.idea
11
9
  .ruby-version
12
10
  .ruby-gemset
@@ -245,14 +245,12 @@ generate-allure-report:
245
245
  cache:
246
246
  policy: pull
247
247
  before_script:
248
- # Override allure variables for upstream triggers
249
- # Override default before script and don't push cache
250
248
  - export STORAGE_CREDENTIALS=$QA_ALLURE_REPORT_GCS_CREDENTIALS
251
249
  - export GITLAB_AUTH_TOKEN=$GITLAB_QA_MR_ALLURE_REPORT_TOKEN
252
- - export ALLURE_PROJECT_PATH=$TOP_UPSTREAM_SOURCE_PROJECT
253
- - export ALLURE_MERGE_REQUEST_IID=$TOP_UPSTREAM_MERGE_REQUEST_IID
254
- - export ALLURE_COMMIT_SHA=$TOP_UPSTREAM_SOURCE_SHA
255
- - export ALLURE_JOB_NAME="${ALLURE_JOB_NAME:-package-and-qa}"
250
+ # Set allure variables for merge request comment based on pipeline source
251
+ - export ALLURE_MERGE_REQUEST_IID=${TOP_UPSTREAM_MERGE_REQUEST_IID:-$CI_MERGE_REQUEST_IID}
252
+ - export ALLURE_PROJECT_PATH=${TOP_UPSTREAM_SOURCE_PROJECT:-$CI_MERGE_REQUEST_PROJECT_PATH}
253
+ - export ALLURE_COMMIT_SHA=${TOP_UPSTREAM_SOURCE_SHA:-$CI_MERGE_REQUEST_SOURCE_BRANCH_SHA}
256
254
  rules:
257
255
  # Don't run report generation on release pipelines
258
256
  - if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab-qa" && $RELEASE == null'
@@ -260,11 +258,7 @@ generate-allure-report:
260
258
  when: never
261
259
  - if: '$CI_COMMIT_TAG'
262
260
  when: never
263
- - if: '$CI_PIPELINE_SOURCE == "merge_request_event" || $CI_PIPELINE_SOURCE == "parent_pipeline" || ($CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH)'
264
- variables:
265
- ALLURE_JOB_NAME: gitlab-qa
266
- when: always
267
- - if: '$TOP_UPSTREAM_SOURCE_PROJECT != null && $TOP_UPSTREAM_SOURCE_PROJECT != "" && $TOP_UPSTREAM_SOURCE_SHA != null && $TOP_UPSTREAM_SOURCE_SHA != ""'
261
+ - if: '$ALLURE_JOB_NAME'
268
262
  when: always
269
263
 
270
264
  generate-knapsack-report:
@@ -7,7 +7,6 @@ ce:gitaly-cluster:
7
7
  - .rspec-report-opts
8
8
  variables:
9
9
  QA_SCENARIO: "Test::Integration::GitalyCluster"
10
- QA_LOG_PATH: "tmp/gitaly_cluster.log"
11
10
 
12
11
  ce:gitaly-cluster-quarantine:
13
12
  extends:
@@ -19,7 +18,6 @@ ce:gitaly-cluster-quarantine:
19
18
  - .rspec-report-opts
20
19
  variables:
21
20
  QA_SCENARIO: "Test::Integration::GitalyCluster"
22
- QA_LOG_PATH: "tmp/gitaly_cluster.log"
23
21
 
24
22
  ee:gitaly-cluster:
25
23
  extends:
@@ -30,7 +28,6 @@ ee:gitaly-cluster:
30
28
  - .rspec-report-opts
31
29
  variables:
32
30
  QA_SCENARIO: "Test::Integration::GitalyCluster"
33
- QA_LOG_PATH: "tmp/gitaly_cluster.log"
34
31
 
35
32
  ee:gitaly-cluster-quarantine:
36
33
  extends:
@@ -42,4 +39,3 @@ ee:gitaly-cluster-quarantine:
42
39
  - .rspec-report-opts
43
40
  variables:
44
41
  QA_SCENARIO: "Test::Integration::GitalyCluster"
45
- QA_LOG_PATH: "tmp/gitaly_cluster.log"
data/.gitlab-ci.yml CHANGED
@@ -25,12 +25,18 @@ workflow:
25
25
  rules:
26
26
  # For merge requests, create a pipeline.
27
27
  - if: '$CI_MERGE_REQUEST_IID'
28
+ variables:
29
+ ALLURE_JOB_NAME: gitlab-qa
28
30
  # For the default branch, create a pipeline (this includes on schedules, pushes, merges, etc.).
29
31
  - if: '$CI_COMMIT_BRANCH == "master"'
30
- # For tags, create a pipeline.
31
- - if: '$CI_COMMIT_TAG'
32
+ variables:
33
+ ALLURE_JOB_NAME: gitlab-qa
32
34
  # For triggers from GitLab MR pipelines (and pipelines from other projects), create a pipeline
33
35
  - if: '$CI_PIPELINE_SOURCE == "pipeline"'
36
+ variables:
37
+ ALLURE_JOB_NAME: package-and-qa
38
+ # For tags, create a pipeline.
39
+ - if: '$CI_COMMIT_TAG'
34
40
  # When using Run pipeline button in the GitLab UI, from the project’s CI/CD > Pipelines section, create a pipeline.
35
41
  - if: '$CI_PIPELINE_SOURCE == "web"'
36
42
 
@@ -94,7 +100,6 @@ generate-jobs:
94
100
  - bundle exec bin/qa Test::Instance::All http://dummy.test --count-examples-only -- $QA_TESTS --tag repository_storage
95
101
  - bundle exec bin/qa Test::Instance::All http://dummy.test --count-examples-only -- $QA_TESTS --tag packages
96
102
  - bundle exec bin/qa Test::Instance::All http://dummy.test --count-examples-only -- $QA_TESTS --tag integrations
97
- - bundle exec bin/qa Test::Instance::All http://dummy.test --count-examples-only -- $QA_TESTS --tag actioncable
98
103
  - bundle exec bin/qa Test::Instance::All http://dummy.test --count-examples-only -- $QA_TESTS --tag mtls
99
104
  - bundle exec bin/qa Test::Instance::All http://dummy.test --count-examples-only -- $QA_TESTS --tag jira
100
105
  - bundle exec bin/qa Test::Instance::All http://dummy.test --count-examples-only -- $QA_TESTS --tag can_use_large_setup
data/Gemfile.lock ADDED
@@ -0,0 +1,248 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ gitlab-qa (7.29.1)
5
+ activesupport (~> 6.1)
6
+ gitlab (~> 4.18.0)
7
+ http (~> 5.0)
8
+ nokogiri (~> 1.10)
9
+ rainbow (~> 3.0.0)
10
+ table_print (= 1.5.7)
11
+
12
+ GEM
13
+ remote: https://rubygems.org/
14
+ specs:
15
+ activesupport (6.1.6)
16
+ concurrent-ruby (~> 1.0, >= 1.0.2)
17
+ i18n (>= 1.6, < 2)
18
+ minitest (>= 5.1)
19
+ tzinfo (~> 2.0)
20
+ zeitwerk (~> 2.3)
21
+ addressable (2.8.0)
22
+ public_suffix (>= 2.0.2, < 5.0)
23
+ ast (2.4.2)
24
+ backport (1.2.0)
25
+ benchmark (0.2.0)
26
+ claide (1.1.0)
27
+ claide-plugins (0.9.2)
28
+ cork
29
+ nap
30
+ open4 (~> 1.3)
31
+ climate_control (1.0.1)
32
+ coderay (1.1.3)
33
+ colored2 (3.1.2)
34
+ concurrent-ruby (1.1.10)
35
+ cork (0.3.0)
36
+ colored2 (~> 3.1)
37
+ crack (0.4.5)
38
+ rexml
39
+ danger (8.6.1)
40
+ claide (~> 1.0)
41
+ claide-plugins (>= 0.9.2)
42
+ colored2 (~> 3.1)
43
+ cork (~> 0.1)
44
+ faraday (>= 0.9.0, < 2.0)
45
+ faraday-http-cache (~> 2.0)
46
+ git (~> 1.7)
47
+ kramdown (~> 2.3)
48
+ kramdown-parser-gfm (~> 1.0)
49
+ no_proxy_fix
50
+ octokit (~> 4.7)
51
+ terminal-table (>= 1, < 4)
52
+ danger-gitlab (8.0.0)
53
+ danger
54
+ gitlab (~> 4.2, >= 4.2.0)
55
+ diff-lcs (1.5.0)
56
+ domain_name (0.5.20190701)
57
+ unf (>= 0.0.5, < 1.0.0)
58
+ e2mmap (0.1.0)
59
+ faraday (1.10.0)
60
+ faraday-em_http (~> 1.0)
61
+ faraday-em_synchrony (~> 1.0)
62
+ faraday-excon (~> 1.1)
63
+ faraday-httpclient (~> 1.0)
64
+ faraday-multipart (~> 1.0)
65
+ faraday-net_http (~> 1.0)
66
+ faraday-net_http_persistent (~> 1.0)
67
+ faraday-patron (~> 1.0)
68
+ faraday-rack (~> 1.0)
69
+ faraday-retry (~> 1.0)
70
+ ruby2_keywords (>= 0.0.4)
71
+ faraday-em_http (1.0.0)
72
+ faraday-em_synchrony (1.0.0)
73
+ faraday-excon (1.1.0)
74
+ faraday-http-cache (2.2.0)
75
+ faraday (>= 0.8)
76
+ faraday-httpclient (1.0.1)
77
+ faraday-multipart (1.0.3)
78
+ multipart-post (>= 1.2, < 3)
79
+ faraday-net_http (1.0.1)
80
+ faraday-net_http_persistent (1.2.0)
81
+ faraday-patron (1.0.0)
82
+ faraday-rack (1.0.0)
83
+ faraday-retry (1.0.3)
84
+ ffi (1.15.5)
85
+ ffi-compiler (1.0.1)
86
+ ffi (>= 1.0.0)
87
+ rake
88
+ git (1.11.0)
89
+ rchardet (~> 1.8)
90
+ gitlab (4.18.0)
91
+ httparty (~> 0.18)
92
+ terminal-table (>= 1.5.1)
93
+ gitlab-dangerfiles (2.11.0)
94
+ danger (>= 8.4.5)
95
+ danger-gitlab (>= 8.0.0)
96
+ gitlab-styles (6.2.1)
97
+ rubocop (~> 0.91, >= 0.91.1)
98
+ rubocop-gitlab-security (~> 0.1.1)
99
+ rubocop-performance (~> 1.9.2)
100
+ rubocop-rails (~> 2.9)
101
+ rubocop-rspec (~> 1.44)
102
+ hashdiff (1.0.1)
103
+ http (5.0.4)
104
+ addressable (~> 2.8)
105
+ http-cookie (~> 1.0)
106
+ http-form_data (~> 2.2)
107
+ llhttp-ffi (~> 0.4.0)
108
+ http-cookie (1.0.5)
109
+ domain_name (~> 0.5)
110
+ http-form_data (2.3.0)
111
+ httparty (0.20.0)
112
+ mime-types (~> 3.0)
113
+ multi_xml (>= 0.5.2)
114
+ i18n (1.10.0)
115
+ concurrent-ruby (~> 1.0)
116
+ jaro_winkler (1.5.4)
117
+ kramdown (2.4.0)
118
+ rexml
119
+ kramdown-parser-gfm (1.1.0)
120
+ kramdown (~> 2.0)
121
+ llhttp-ffi (0.4.0)
122
+ ffi-compiler (~> 1.0)
123
+ rake (~> 13.0)
124
+ method_source (1.0.0)
125
+ mime-types (3.4.1)
126
+ mime-types-data (~> 3.2015)
127
+ mime-types-data (3.2022.0105)
128
+ mini_portile2 (2.8.0)
129
+ minitest (5.15.0)
130
+ multi_xml (0.6.0)
131
+ multipart-post (2.1.1)
132
+ nap (1.1.0)
133
+ no_proxy_fix (0.1.2)
134
+ nokogiri (1.13.6)
135
+ mini_portile2 (~> 2.8.0)
136
+ racc (~> 1.4)
137
+ octokit (4.22.0)
138
+ faraday (>= 0.9)
139
+ sawyer (~> 0.8.0, >= 0.5.3)
140
+ open4 (1.3.4)
141
+ parallel (1.22.1)
142
+ parser (3.1.2.0)
143
+ ast (~> 2.4.1)
144
+ pry (0.14.1)
145
+ coderay (~> 1.1)
146
+ method_source (~> 1.0)
147
+ public_suffix (4.0.7)
148
+ racc (1.6.0)
149
+ rack (2.2.3)
150
+ rainbow (3.0.0)
151
+ rake (13.0.6)
152
+ rchardet (1.8.0)
153
+ regexp_parser (2.4.0)
154
+ reverse_markdown (2.1.1)
155
+ nokogiri
156
+ rexml (3.2.5)
157
+ rspec (3.11.0)
158
+ rspec-core (~> 3.11.0)
159
+ rspec-expectations (~> 3.11.0)
160
+ rspec-mocks (~> 3.11.0)
161
+ rspec-core (3.11.0)
162
+ rspec-support (~> 3.11.0)
163
+ rspec-expectations (3.11.0)
164
+ diff-lcs (>= 1.2.0, < 2.0)
165
+ rspec-support (~> 3.11.0)
166
+ rspec-mocks (3.11.1)
167
+ diff-lcs (>= 1.2.0, < 2.0)
168
+ rspec-support (~> 3.11.0)
169
+ rspec-support (3.11.0)
170
+ rubocop (0.93.1)
171
+ parallel (~> 1.10)
172
+ parser (>= 2.7.1.5)
173
+ rainbow (>= 2.2.2, < 4.0)
174
+ regexp_parser (>= 1.8)
175
+ rexml
176
+ rubocop-ast (>= 0.6.0)
177
+ ruby-progressbar (~> 1.7)
178
+ unicode-display_width (>= 1.4.0, < 2.0)
179
+ rubocop-ast (1.18.0)
180
+ parser (>= 3.1.1.0)
181
+ rubocop-gitlab-security (0.1.1)
182
+ rubocop (>= 0.51)
183
+ rubocop-performance (1.9.2)
184
+ rubocop (>= 0.90.0, < 2.0)
185
+ rubocop-ast (>= 0.4.0)
186
+ rubocop-rails (2.9.1)
187
+ activesupport (>= 4.2.0)
188
+ rack (>= 1.1)
189
+ rubocop (>= 0.90.0, < 2.0)
190
+ rubocop-rspec (1.44.1)
191
+ rubocop (~> 0.87)
192
+ rubocop-ast (>= 0.7.1)
193
+ ruby-progressbar (1.11.0)
194
+ ruby2_keywords (0.0.5)
195
+ sawyer (0.8.2)
196
+ addressable (>= 2.3.5)
197
+ faraday (> 0.8, < 2.0)
198
+ solargraph (0.45.0)
199
+ backport (~> 1.2)
200
+ benchmark
201
+ bundler (>= 1.17.2)
202
+ diff-lcs (~> 1.4)
203
+ e2mmap
204
+ jaro_winkler (~> 1.5)
205
+ kramdown (~> 2.3)
206
+ kramdown-parser-gfm (~> 1.1)
207
+ parser (~> 3.0)
208
+ reverse_markdown (>= 1.0.5, < 3)
209
+ rubocop (>= 0.52)
210
+ thor (~> 1.0)
211
+ tilt (~> 2.0)
212
+ yard (~> 0.9, >= 0.9.24)
213
+ table_print (1.5.7)
214
+ terminal-table (3.0.2)
215
+ unicode-display_width (>= 1.1.1, < 3)
216
+ thor (1.2.1)
217
+ tilt (2.0.10)
218
+ tzinfo (2.0.4)
219
+ concurrent-ruby (~> 1.0)
220
+ unf (0.1.4)
221
+ unf_ext
222
+ unf_ext (0.0.8.2)
223
+ unicode-display_width (1.8.0)
224
+ webmock (3.7.0)
225
+ addressable (>= 2.3.6)
226
+ crack (>= 0.3.2)
227
+ hashdiff (>= 0.4.0, < 2.0.0)
228
+ webrick (1.7.0)
229
+ yard (0.9.27)
230
+ webrick (~> 1.7.0)
231
+ zeitwerk (2.5.4)
232
+
233
+ PLATFORMS
234
+ ruby
235
+
236
+ DEPENDENCIES
237
+ climate_control (~> 1.0.1)
238
+ gitlab-dangerfiles (~> 2.11)
239
+ gitlab-qa!
240
+ gitlab-styles (~> 6.2.1)
241
+ pry (~> 0.11)
242
+ rake (~> 13.0)
243
+ rspec (~> 3.7)
244
+ solargraph (~> 0.41)
245
+ webmock (= 3.7.0)
246
+
247
+ BUNDLED WITH
248
+ 2.2.33
@@ -68,7 +68,7 @@ All environment variables used by GitLab QA should be defined in [`lib/gitlab/qa
68
68
  | `QA_PRAEFECT_REPOSITORY_STORAGE` |- | The name of repository storage using Praefect. Note: Admin access is required to change repository storage. | No|
69
69
  | `QA_COOKIES` |- | Optionally set to "cookie1=value;cookie2=value" in order to add a cookie to every request. This can be used to set the canary cookie by setting it to "gitlab_canary=true". | No|
70
70
  | `QA_DEBUG` |- | Set to `true` to verbosely log page object actions. Note: if enabled be aware that sensitive data might be logged. If an input element has a QA selector with `password` in the name, data entered into the input element will be masked. If the element doesn't have `password` in its name it won't be masked. | No|
71
- | `QA_LOG_PATH` |- | Path to output debug logging to. If not set logging will be output to STDOUT. | No|
71
+ | `QA_LOG_PATH` |- | Path to output debug logging to. By default `QA_ARTIFACTS_DIR` is used | No|
72
72
  | `QA_CAN_TEST_GIT_PROTOCOL_V2` | `true` | Set to `false` to skip tests that require Git protocol v2 if your environment doesn't support it. | No|
73
73
  | `QA_CAN_TEST_ADMIN_FEATURES` | `true` | Set to `false` to skip tests that require admin access. | No|
74
74
  | `QA_CAN_TEST_PRAEFECT` | `true` | Set to `false` to skip tests that require Praefect to be running. | No|
@@ -651,23 +651,6 @@ $ export EE_LICENSE=$(cat /path/to/GitLab.gitlab_license)
651
651
  $ gitlab-qa Test::Integration::Jira EE
652
652
  ```
653
653
 
654
- ### `Test::Integration::Actioncable CE|EE|<full image address>`
655
-
656
- This tests the real-time assignees feature by setting
657
- `actioncable['enable'] = true` in the Omnibus configuration
658
- before starting the GitLab container.
659
-
660
- To run tests against the GitLab container, a GitLab QA (`gitlab/gitlab-qa`)
661
- container is spun up and tests are run from it by running the
662
- `Test::Instance::All` scenario with the `--tag actioncable` RSpec parameter,
663
- which runs only the tests with `:actioncable` metadata.
664
-
665
- Example:
666
-
667
- ```
668
- $ gitlab-qa Test::Integration::Actioncable CE
669
- ```
670
-
671
654
  ### `Test::Integration::Integrations CE|<full image address>`
672
655
 
673
656
  This scenario is intended to test the different integrations that a GitLab instance can offer, such as WebHooks to an external service, Jenkins, etc.
@@ -729,6 +712,23 @@ in the GitLab project).
729
712
  This is used to retrieve the version that staging is currently running.
730
713
  This can be found in the shared 1Password vault.
731
714
 
715
+ - `GITLAB_USERNAME`: An existing user.
716
+
717
+ - `GITLAB_PASSWORD`: The user's password.
718
+
719
+ **Required by specific tests:**
720
+
721
+ - `QA_PRAEFECT_REPOSITORY_STORAGE`: The name of a Gitaly Cluster storage.
722
+
723
+ - `GITLAB_ADMIN_USERNAME`: An existing user with administrator access. Required by tests that set feature flags or
724
+ perform other admin actions.
725
+
726
+ - `GITLAB_ADMIN_PASSWORD`: The administrator user's password.
727
+
728
+ - `GITLAB_QA_USERNAME_X`: The username of a pre-generated test user, where `X` is `1` to `6`.
729
+
730
+ - `GITLAB_QA_PASSWORD_X`: The pre-generated test user's password.
731
+
732
732
  **Optional environment variables:**
733
733
 
734
734
  - `GITLAB_QA_DEV_ACCESS_TOKEN`: A valid personal access token for the
@@ -736,17 +736,24 @@ in the GitLab project).
736
736
  This is used to pull the QA Docker image from the Omnibus GitLab `dev` Container Registry.
737
737
  If the variable isn't present, the QA image from Docker Hub will be used.
738
738
  This can be found in the shared 1Password vault.
739
+ Please note that this variable must be provided when you need to be sure the version of the
740
+ tests matches the version of GitLab on Staging. If the version from Docker Hub is used it might not include changes deployed to Staging very recently.
739
741
 
740
- Example:
742
+ An example of how to run the smoke tests:
741
743
 
742
744
  ```
743
- $ export GITLAB_QA_USER_AGENT="$GITLAB_QA_USER_AGENT"
744
- $ export GITLAB_QA_ACCESS_TOKEN=your_api_access_token
745
- $ export GITLAB_QA_DEV_ACCESS_TOKEN=your_dev_registry_access_token
745
+ $ export GITLAB_QA_USER_AGENT="<value from 1Password>"
746
+ $ export GITLAB_QA_ACCESS_TOKEN="<value from 1Password>"
747
+ $ export GITLAB_QA_DEV_ACCESS_TOKEN="<value from 1Password>"
746
748
  $ export GITLAB_USERNAME="gitlab-qa"
747
- $ export GITLAB_PASSWORD="$GITLAB_QA_PASSWORD"
749
+ $ export GITLAB_PASSWORD="<value from 1Password>"
750
+ $ export GITLAB_ADMIN_USERNAME="<value from 1Password>"
751
+ $ export GITLAB_ADMIN_PASSWORD="<value from 1Password>"
752
+ $ export GITLAB_QA_USERNAME_1="gitlab-qa-user1"
753
+ $ export GITLAB_QA_PASSWORD_1="<value from 1Password>"
754
+ $ export QA_PRAEFECT_REPOSITORY_STORAGE="nfs-file22"
748
755
 
749
- $ gitlab-qa Test::Instance::Staging
756
+ $ gitlab-qa Test::Instance::Staging -- --tag smoke
750
757
  ```
751
758
 
752
759
  ### `Test::Instance::StagingRef`
@@ -845,6 +852,52 @@ by setting `QA_COOKIES=gitlab_canary=true`. This adds a cookie
845
852
  to all web requests which will result in them being routed
846
853
  to the canary fleet.
847
854
 
855
+ **Required environment variables:**
856
+
857
+ - `GITLAB_QA_USER_AGENT`: The browser user-agent to use instead of the default Chrome user-agent.
858
+ This is needed for the automated tests to bypass the WAF
859
+
860
+ - `GITLAB_QA_ACCESS_TOKEN`: A valid personal access token with the `api` scope.
861
+ This is used to retrieve the version that staging is currently running.
862
+ This can be found in the shared 1Password vault.
863
+
864
+ - `GITLAB_USERNAME`: An existing user.
865
+
866
+ - `GITLAB_PASSWORD`: The user's password.
867
+
868
+ **Required by specific tests:**
869
+
870
+ - `GITLAB_QA_USERNAME_X`: The username of a pre-generated test user, where `X` is `1` to `6`.
871
+
872
+ - `GITLAB_QA_PASSWORD_X`: The pre-generated test user's password.
873
+
874
+ **Optional environment variables:**
875
+
876
+ - `GITLAB_QA_DEV_ACCESS_TOKEN`: A valid personal access token for the
877
+ `gitlab-qa-bot` on `dev.gitlab.org` with the `registry` scope.
878
+ This is used to pull the QA Docker image from the Omnibus GitLab `dev` Container Registry.
879
+ If the variable isn't present, the QA image from Docker Hub will be used.
880
+ This can be found in the shared 1Password vault.
881
+ Please note that this variable should be provided when you need to be sure the version of the
882
+ tests matches the version of GitLab on Staging. If the version from Docker Hub is used it might not include changes deployed to Staging very recently.
883
+
884
+ An example of how to run the smoke tests:
885
+
886
+ ```
887
+ $ export GITLAB_QA_USER_AGENT="<value from 1Password>"
888
+ $ export GITLAB_QA_ACCESS_TOKEN="<value from 1Password>"
889
+ $ export GITLAB_QA_DEV_ACCESS_TOKEN="<value from 1Password>"
890
+ $ export GITLAB_USERNAME="gitlab-qa"
891
+ $ export GITLAB_PASSWORD="<value from 1Password>"
892
+ $ export GITLAB_QA_USERNAME_1="gitlab-qa-user1"
893
+ $ export GITLAB_QA_PASSWORD_1="<value from 1Password>"
894
+ $ export QA_CAN_TEST_GIT_PROTOCOL_V2="false"
895
+ $ export QA_CAN_TEST_ADMIN_FEATURES="false"
896
+ $ export QA_CAN_TEST_PRAEFECT="false"
897
+
898
+ $ gitlab-qa Test::Instance::Production -- --tag smoke
899
+ ```
900
+
848
901
  ### `Test::Instance::Preprod`
849
902
 
850
903
  This scenario functions the same as `Test::Instance::Staging`
@@ -15,8 +15,7 @@ module Gitlab
15
15
  @environment = {}
16
16
  @volumes = {}
17
17
  @network_aliases = []
18
-
19
- self.exec_commands = []
18
+ @exec_commands = []
20
19
  end
21
20
 
22
21
  def add_network_alias(name)
@@ -155,7 +155,6 @@ module Gitlab
155
155
  setup_omnibus
156
156
 
157
157
  @docker.attach(name) do |line, wait|
158
- puts line
159
158
  # TODO, workaround which allows to detach from the container
160
159
  break if /gitlab Reconfigured!/.match?(line)
161
160
  end
@@ -174,11 +173,15 @@ module Gitlab
174
173
  def process_exec_commands
175
174
  @docker.copy(name, DATA_SEED_PATH, DATA_PATH) if seed_admin_token || seed_db
176
175
 
177
- self.exec_commands += seed_admin_token_command if seed_admin_token
178
- self.exec_commands += seed_test_data_command if seed_db
176
+ exec_commands << seed_admin_token_command if seed_admin_token
177
+ exec_commands << seed_test_data_command if seed_db
178
+ exec_commands << Runtime::Scenario.omnibus_exec_commands
179
+
180
+ commands = exec_commands.flatten.uniq
181
+ return if commands.empty?
179
182
 
180
183
  Runtime::Logger.info("Running exec_commands...")
181
- exec_commands.flatten.uniq.each { |command| @docker.exec(name, command) }
184
+ commands.each { |command| @docker.exec(name, command) }
182
185
  end
183
186
 
184
187
  def sha_version
@@ -11,7 +11,7 @@ module Gitlab
11
11
  attr_accessor :suite, :release, :network, :args, :volumes, :env, :runner_network, :hostname
12
12
 
13
13
  def initialize
14
- @docker = Docker::Engine.new
14
+ @docker = Docker::Engine.new(stream_output: true) # stream test output directly instead of through logger
15
15
  @volumes = {}
16
16
  @env = {}
17
17
  end
@@ -2,11 +2,17 @@ module Gitlab
2
2
  module QA
3
3
  module Docker
4
4
  class Command
5
- attr_reader :args
5
+ attr_reader :args, :stream_output
6
6
 
7
- def initialize(cmd = nil, mask_secrets: nil)
7
+ # Shell command
8
+ #
9
+ # @param [<String, Array>] cmd
10
+ # @param [<String, Array>] mask_secrets
11
+ # @param [Boolean] stream_output stream command output to stdout directly instead of logger
12
+ def initialize(cmd = nil, mask_secrets: nil, stream_output: false)
8
13
  @args = Array(cmd)
9
14
  @mask_secrets = Array(mask_secrets)
15
+ @stream_output = stream_output
10
16
  end
11
17
 
12
18
  def <<(*args)
@@ -7,6 +7,12 @@ module Gitlab
7
7
  DOCKER_HOST = ENV['DOCKER_HOST'] || 'http://localhost'
8
8
  PRIVILEGED_COMMANDS = [/^iptables.*/].freeze
9
9
 
10
+ attr_reader :stream_output
11
+
12
+ def initialize(stream_output: false)
13
+ @stream_output = stream_output
14
+ end
15
+
10
16
  def hostname
11
17
  URI(DOCKER_HOST).host
12
18
  end
@@ -15,12 +21,17 @@ module Gitlab
15
21
  Docker::Command.execute(%(login --username "#{username}" --password "#{password}" #{registry}), mask_secrets: password)
16
22
  end
17
23
 
18
- def pull(image:, tag: nil)
19
- Docker::Command.execute("pull #{full_image_name(image, tag)}")
24
+ def pull(image:, tag: nil, quiet: true)
25
+ Docker::Command.new("pull").tap do |command|
26
+ command << "-q" if quiet
27
+ command << full_image_name(image, tag)
28
+
29
+ command.execute!
30
+ end
20
31
  end
21
32
 
22
33
  def run(image:, tag: nil, args: [])
23
- Docker::Command.new('run').tap do |command|
34
+ Docker::Command.new('run', stream_output: stream_output).tap do |command|
24
35
  yield command if block_given?
25
36
 
26
37
  command << full_image_name(image, tag)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'open3'
2
4
  require 'rainbow/refinement'
3
5
 
@@ -6,35 +8,57 @@ module Gitlab
6
8
  module Docker
7
9
  class Shellout
8
10
  using Rainbow
11
+
9
12
  StatusError = Class.new(StandardError)
10
13
 
11
14
  def initialize(command)
12
15
  @command = command
13
16
  @output = []
14
-
15
- Rainbow.enabled = Runtime::Env.colorized_logs?
16
- Runtime::Logger.info("Docker shell command: `#{@command.mask_secrets}`".cyan)
17
+ @logger = Runtime::Logger.logger
17
18
  end
18
19
 
20
+ attr_reader :command, :logger
21
+
19
22
  def execute! # rubocop:disable Metrics/AbcSize
20
23
  raise StatusError, 'Command already executed' if @output.any?
21
24
 
25
+ logger.info("Docker shell command: `#{@command.mask_secrets.cyan}`")
26
+
22
27
  Open3.popen2e(@command.to_s) do |_in, out, wait|
23
28
  out.each do |line|
24
29
  @output.push(line)
25
30
 
26
- if block_given?
27
- yield line, wait
28
- else
31
+ if stream_progress
32
+ print "."
33
+ elsif command.stream_output
29
34
  puts line
30
35
  end
36
+
37
+ yield line, wait if block_given?
31
38
  end
39
+ puts if stream_progress
32
40
 
33
- if wait.value.exited? && wait.value.exitstatus.nonzero? # rubocop:disable Style/IfUnlessModifier
34
- raise StatusError, "Docker command `#{@command.mask_secrets}` failed! ✘"
41
+ if wait.value.exited? && wait.value.exitstatus.nonzero?
42
+ logger.error("Docker shell command output:\n#{output}") unless command.stream_output
43
+ raise StatusError, "Docker command `#{@command.mask_secrets[0..100]}` failed! ✘"
35
44
  end
45
+
46
+ logger.debug("Docker shell command output:\n#{output}") unless command.stream_output || output.empty?
36
47
  end
37
48
 
49
+ output
50
+ end
51
+
52
+ private
53
+
54
+ # Stream only command execution progress and log output when command finished
55
+ #
56
+ # @return [Boolean]
57
+ def stream_progress
58
+ !(Runtime::Env.ci || command.stream_output)
59
+ end
60
+
61
+ def output
38
62
  @output.join.chomp
39
63
  end
40
64
  end
@@ -114,6 +114,9 @@ module Gitlab
114
114
  line.include?(File.basename(report['file_path']))
115
115
  end
116
116
 
117
+ exception['message'].gsub!(/(private_token=)[\w-]+/, '********')
118
+ exception['message_lines'].each { |line| line.gsub!(/(private_token=)([\w-]+)/, '********') }
119
+
117
120
  {
118
121
  'message' => "#{exception['class']}: #{exception['message']}",
119
122
  'message_lines' => exception['message_lines'],
@@ -145,6 +148,7 @@ module Gitlab
145
148
 
146
149
  private
147
150
 
151
+ # rubocop:disable Metrics/AbcSize
148
152
  def failures_from_exceptions
149
153
  failures = report.search('failure')
150
154
  return [] if failures.empty?
@@ -155,12 +159,15 @@ module Gitlab
155
159
  line.include?(File.basename(report['file']))
156
160
  end
157
161
 
162
+ exception['message'].gsub!(/(private_token=)[\w-]+/, '********')
163
+
158
164
  {
159
165
  'message' => "#{exception['type']}: #{exception['message']}",
160
166
  'stacktrace' => trace.slice(0..spec_file_first_index).join("\n")
161
167
  }
162
168
  end
163
169
  end
170
+ # rubocop:enable Metrics/AbcSize
164
171
  end
165
172
  end
166
173
  end
@@ -27,7 +27,6 @@ module Gitlab
27
27
  'QA_COOKIES' => :qa_cookie,
28
28
  'QA_DEBUG' => :qa_debug,
29
29
  'QA_DEFAULT_BRANCH' => :qa_default_branch,
30
- 'QA_LOG_PATH' => :qa_log_path,
31
30
  'QA_CAN_TEST_ADMIN_FEATURES' => :qa_can_test_admin_features,
32
31
  'QA_CAN_TEST_GIT_PROTOCOL_V2' => :qa_can_test_git_protocol_v2,
33
32
  'QA_CAN_TEST_PRAEFECT' => :qa_can_test_praefect,
@@ -168,6 +167,14 @@ module Gitlab
168
167
  enabled?(ENV['QA_DEBUG'], default: true)
169
168
  end
170
169
 
170
+ def log_level
171
+ env_var_value_if_defined('QA_LOG_LEVEL')&.upcase || 'INFO'
172
+ end
173
+
174
+ def log_path
175
+ env_var_value_if_defined('QA_LOG_PATH') || host_artifacts_dir
176
+ end
177
+
171
178
  def default_branch
172
179
  env_var_value_if_defined('QA_DEFAULT_BRANCH') || 'main'
173
180
  end
@@ -11,7 +11,12 @@ module Gitlab
11
11
  def_delegators :logger, :debug, :info, :warn, :error, :fatal, :unknown
12
12
 
13
13
  def self.logger
14
- @logger ||= QA::TestLogger.logger(level: Runtime::Env.debug? ? ::Logger::DEBUG : ::Logger::INFO)
14
+ @logger ||= begin
15
+ log_path = Env.log_path
16
+ ::FileUtils.mkdir_p(log_path) unless File.exist?(log_path)
17
+
18
+ TestLogger.logger(level: Env.debug? ? "DEBUG" : Env.log_level, path: log_path)
19
+ end
15
20
  end
16
21
  end
17
22
  end
@@ -22,7 +22,8 @@ module Gitlab
22
22
  "gitlab-psql -c 'create database gitlabhq_production_ci owner gitlab'",
23
23
  "gitlab-psql -d gitlabhq_production_ci -c 'create extension btree_gist'",
24
24
  "gitlab-psql -d gitlabhq_production_ci -c 'create extension pg_trgm'",
25
- "gitlab-rake db:structure:load:ci"
25
+ "gitlab-rake db:structure:load:ci",
26
+ "gitlab-ctl restart"
26
27
  ].freeze
27
28
  end
28
29
  end
@@ -5,21 +5,19 @@ module Gitlab
5
5
  module Runtime
6
6
  module OmnibusConfigurations
7
7
  class ObjectStorage < Default
8
- TYPES = %w[artifacts external_diffs lfs uploads packages dependency_proxy].freeze
8
+ TYPES = %w[artifacts external_diffs lfs uploads packages dependency_proxy terraform_state pages].freeze
9
9
 
10
10
  def configuration
11
- TYPES.each_with_object(+'') do |object_type, omnibus|
11
+ config = TYPES.each_with_object(+'') do |object_type, omnibus|
12
12
  omnibus << <<~OMNIBUS
13
- gitlab_rails['#{object_type}_enabled'] = true
14
- gitlab_rails['#{object_type}_storage_path'] = '/var/opt/gitlab/gitlab-rails/shared/#{object_type}'
15
- gitlab_rails['#{object_type}_object_store_enabled'] = true
16
- gitlab_rails['#{object_type}_object_store_remote_directory'] = '#{object_type}-bucket'
17
- gitlab_rails['#{object_type}_object_store_background_upload'] = false
18
- gitlab_rails['#{object_type}_object_store_direct_upload'] = true
19
- gitlab_rails['#{object_type}_object_store_proxy_download'] = true
20
- gitlab_rails['#{object_type}_object_store_connection'] = #{minio.to_config}
13
+ gitlab_rails['object_store']['objects']['#{object_type}']['bucket'] = '#{object_type}-bucket'
21
14
  OMNIBUS
22
15
  end
16
+ config << <<~OMNIBUS
17
+ gitlab_rails['object_store']['enabled'] = true
18
+ gitlab_rails['object_store']['proxy_download'] = true
19
+ gitlab_rails['object_store']['connection'] = #{minio.to_config}
20
+ OMNIBUS
23
21
  end
24
22
 
25
23
  def prepare
@@ -13,6 +13,7 @@ module Gitlab
13
13
  gitlab.release = release
14
14
  gitlab.network = 'test'
15
15
  gitlab.name = 'gitlab'
16
+ gitlab.seed_admin_token = false
16
17
  sign_url_key_path = gitlab.copy_key_file('GOOGLE_CDN_SIGNURL_KEY')
17
18
  cdn_gcloud_path = gitlab.copy_key_file('GOOGLE_CDN_JSON_KEY')
18
19
 
@@ -1,13 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'logger'
4
3
  require 'rainbow'
4
+ require 'active_support/logger'
5
5
 
6
6
  module Gitlab
7
7
  module QA
8
8
  # Common test logger implementation
9
9
  #
10
10
  class TestLogger
11
+ TIME_FORMAT = "%Y-%m-%d %H:%M:%S"
11
12
  LEVEL_COLORS = {
12
13
  "DEBUG" => :magenta,
13
14
  "INFO" => :green,
@@ -18,17 +19,62 @@ module Gitlab
18
19
 
19
20
  Rainbow.enabled = Runtime::Env.colorized_logs?
20
21
 
21
- def self.logger(level: ::Logger::INFO, source: 'Gitlab QA')
22
- ::Logger.new($stdout).tap do |logger|
23
- logger.level = level
22
+ class << self
23
+ # Combined logger instance
24
+ #
25
+ # @param [<Symbol, String>] level
26
+ # @param [String] source
27
+ # @return [ActiveSupport::Logger]
28
+ def logger(level: :info, source: 'Gitlab QA', path: 'tmp')
29
+ console_log = console_logger(level: level, source: source)
30
+ file_log = file_logger(source: source, path: path)
24
31
 
25
- logger.formatter = proc do |severity, datetime, progname, msg|
26
- date_format = datetime.strftime("%Y-%m-%d %H:%M:%S")
27
- msg_prefix = "[date=#{date_format} from=#{source}] #{severity.ljust(5)} -- "
32
+ console_log.extend(ActiveSupport::Logger.broadcast(file_log))
33
+ end
34
+
35
+ private
36
+
37
+ # Console logger instance
38
+ #
39
+ # @param [<Symbol, String>] level
40
+ # @param [String] source
41
+ # @return [ActiveSupport::Logger]
42
+ def console_logger(level:, source:)
43
+ ActiveSupport::Logger.new($stdout, level: level, datetime_format: TIME_FORMAT).tap do |logger|
44
+ logger.formatter = proc do |severity, datetime, progname, msg|
45
+ msg_prefix = message_prefix(datetime, source, severity)
46
+
47
+ Rainbow(msg_prefix).public_send(LEVEL_COLORS.fetch(severity, :silver)) + "#{msg}\n" # rubocop:disable GitlabSecurity/PublicSend
48
+ end
49
+ end
50
+ end
51
+
52
+ # File logger
53
+ #
54
+ # @param [String] source
55
+ # @param [String] path
56
+ # @return [ActiveSupport::Logger]
57
+ def file_logger(source:, path:)
58
+ log_file = "#{path}/#{source.downcase.tr(' ', '-')}.log"
59
+
60
+ ActiveSupport::Logger.new(log_file, level: :debug, datetime_format: TIME_FORMAT).tap do |logger|
61
+ logger.formatter = proc do |severity, datetime, progname, msg|
62
+ msg_prefix = message_prefix(datetime, source, severity)
28
63
 
29
- Rainbow(msg_prefix).public_send(LEVEL_COLORS.fetch(severity, :silver)) + "#{msg}\n" # rubocop:disable GitlabSecurity/PublicSend
64
+ "#{msg_prefix}#{msg}\n"
65
+ end
30
66
  end
31
67
  end
68
+
69
+ # Log message prefix
70
+ #
71
+ # @param [DateTime] date
72
+ # @param [String] source
73
+ # @param [String] severity
74
+ # @return [String]
75
+ def message_prefix(date, source, severity)
76
+ "[date=#{date} from=#{source}] #{severity.ljust(5)} -- "
77
+ end
32
78
  end
33
79
  end
34
80
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gitlab
4
4
  module QA
5
- VERSION = '7.27.1'
5
+ VERSION = '7.29.1'
6
6
  end
7
7
  end
data/lib/gitlab/qa.rb CHANGED
@@ -55,7 +55,6 @@ module Gitlab
55
55
  end
56
56
 
57
57
  module Integration
58
- autoload :Actioncable, 'gitlab/qa/scenario/test/integration/actioncable'
59
58
  autoload :Geo, 'gitlab/qa/scenario/test/integration/geo'
60
59
  autoload :LDAP, 'gitlab/qa/scenario/test/integration/ldap'
61
60
  autoload :LDAPNoTLS, 'gitlab/qa/scenario/test/integration/ldap_no_tls'
@@ -34,7 +34,6 @@ class GenerateQAJobs
34
34
  jobs.concat(load_yml_contents('object_storage_registry_tls')) if should_run?('test_integration_registrytls')
35
35
  jobs.concat(load_yml_contents('registry')) if should_run?('test_integration_registry')
36
36
  jobs.concat(load_yml_contents('packages')) if should_run?('test_instance_all_packages')
37
- jobs.concat(load_yml_contents('actioncable')) if should_run?('test_instance_all_actioncable')
38
37
  jobs.concat(load_yml_contents('elasticsearch')) if should_run?('test_integration_elasticsearch')
39
38
  jobs.concat(load_yml_contents('praefect')) if should_run?('test_instance_all')
40
39
  jobs.concat(load_yml_contents('gitaly_cluster')) if should_run?('test_instance_all')
data/tmp/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ **
2
+
3
+ !.gitignore
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.27.1
4
+ version: 7.29.1
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-05-17 00:00:00.000000000 Z
11
+ date: 2022-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: climate_control
@@ -218,7 +218,6 @@ files:
218
218
  - ".dockerignore"
219
219
  - ".gitignore"
220
220
  - ".gitlab-ci.yml"
221
- - ".gitlab/ci/jobs/actioncable.gitlab-ci.yml"
222
221
  - ".gitlab/ci/jobs/base.gitlab-ci.yml"
223
222
  - ".gitlab/ci/jobs/ci_decomposition.gitlab-ci.yml"
224
223
  - ".gitlab/ci/jobs/cloud_activation.gitlab-ci.yml"
@@ -265,6 +264,7 @@ files:
265
264
  - CONTRIBUTING.md
266
265
  - Dangerfile
267
266
  - Gemfile
267
+ - Gemfile.lock
268
268
  - LICENSE
269
269
  - README.md
270
270
  - Rakefile
@@ -364,7 +364,6 @@ files:
364
364
  - lib/gitlab/qa/scenario/test/instance/staging_geo.rb
365
365
  - lib/gitlab/qa/scenario/test/instance/staging_ref.rb
366
366
  - lib/gitlab/qa/scenario/test/instance/staging_ref_geo.rb
367
- - lib/gitlab/qa/scenario/test/integration/actioncable.rb
368
367
  - lib/gitlab/qa/scenario/test/integration/client_ssl.rb
369
368
  - lib/gitlab/qa/scenario/test/integration/elasticsearch.rb
370
369
  - lib/gitlab/qa/scenario/test/integration/geo.rb
@@ -411,6 +410,7 @@ files:
411
410
  - tls_certificates/gitlab/gitlab.test.crt
412
411
  - tls_certificates/gitlab/gitlab.test.csr
413
412
  - tls_certificates/gitlab/gitlab.test.key
413
+ - tmp/.gitignore
414
414
  homepage: http://about.gitlab.com/
415
415
  licenses:
416
416
  - MIT
@@ -1,41 +0,0 @@
1
- ce:actioncable:
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
- variables:
9
- QA_SCENARIO: "Test::Integration::Actioncable"
10
-
11
- ce:actioncable-quarantine:
12
- extends:
13
- - .rules:ce-never-when-triggered-by-feature-flag-definition-change
14
- - .test
15
- - .high-capacity
16
- - .ce-variables
17
- - .quarantine
18
- - .rspec-report-opts
19
- variables:
20
- QA_SCENARIO: "Test::Integration::Actioncable"
21
-
22
- ee:actioncable:
23
- extends:
24
- - .rules:ee-never-when-triggered-by-feature-flag-definition-change
25
- - .test
26
- - .high-capacity
27
- - .ee-variables
28
- - .rspec-report-opts
29
- variables:
30
- QA_SCENARIO: "Test::Integration::Actioncable"
31
-
32
- ee:actioncable-quarantine:
33
- extends:
34
- - .rules:ee-never-when-triggered-by-feature-flag-definition-change
35
- - .test
36
- - .high-capacity
37
- - .ee-variables
38
- - .quarantine
39
- - .rspec-report-opts
40
- variables:
41
- QA_SCENARIO: "Test::Integration::Actioncable"
@@ -1,34 +0,0 @@
1
- module Gitlab
2
- module QA
3
- module Scenario
4
- module Test
5
- module Integration
6
- class Actioncable < Scenario::Template
7
- def perform(release, *rspec_args)
8
- Component::Gitlab.perform do |gitlab|
9
- gitlab.release = QA::Release.new(release)
10
- gitlab.name = 'gitlab-actioncable'
11
- gitlab.network = 'test'
12
- gitlab.omnibus_configuration << "actioncable['enable'] = true"
13
-
14
- gitlab.instance do
15
- Runtime::Logger.info('Running actioncable specs!')
16
-
17
- rspec_args << "--" unless rspec_args.include?('--')
18
- rspec_args << %w[--tag actioncable]
19
-
20
- Component::Specs.perform do |specs|
21
- specs.suite = 'Test::Instance::All'
22
- specs.release = gitlab.release
23
- specs.network = gitlab.network
24
- specs.args = [gitlab.address, *rspec_args]
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end