gitlab-qa 14.9.0 → 14.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitlab-ci.yml +3 -5
- data/.rubocop_todo.yml +0 -1
- data/Gemfile.lock +13 -13
- data/docs/what_tests_can_be_run.md +5 -21
- data/gitlab-qa.gemspec +1 -1
- data/lib/gitlab/qa/component/base.rb +20 -10
- data/lib/gitlab/qa/component/chaos.rb +1 -1
- data/lib/gitlab/qa/component/gitaly.rb +2 -1
- data/lib/gitlab/qa/component/gitaly_cluster.rb +1 -1
- data/lib/gitlab/qa/runner.rb +0 -13
- data/lib/gitlab/qa/runtime/env.rb +130 -120
- data/lib/gitlab/qa/runtime/omnibus_configurations/object_storage.rb +1 -1
- data/lib/gitlab/qa/scenario/test/instance/airgapped.rb +2 -2
- data/lib/gitlab/qa/scenario/test/instance/image.rb +1 -1
- data/lib/gitlab/qa/scenario/test/instance/relative_url.rb +1 -1
- data/lib/gitlab/qa/scenario/test/instance/repository_storage.rb +2 -2
- data/lib/gitlab/qa/scenario/test/integration/ai_gateway_base.rb +2 -1
- data/lib/gitlab/qa/scenario/test/integration/client_ssl.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/elasticsearch.rb +2 -2
- data/lib/gitlab/qa/scenario/test/integration/gitlab_pages.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/import.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/integrations.rb +2 -2
- data/lib/gitlab/qa/scenario/test/integration/jira.rb +2 -2
- data/lib/gitlab/qa/scenario/test/integration/ldap.rb +3 -3
- data/lib/gitlab/qa/scenario/test/integration/mattermost.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/metrics.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/mtls.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/opensearch.rb +2 -2
- data/lib/gitlab/qa/scenario/test/integration/registry.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/registry_tls.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/registry_with_cdn.rb +2 -2
- data/lib/gitlab/qa/scenario/test/integration/saml.rb +3 -3
- data/lib/gitlab/qa/scenario/test/integration/service_ping_disabled.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/smtp.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/suggested_reviewer.rb +1 -1
- data/lib/gitlab/qa/scenario/test/omnibus/update_from_previous.rb +1 -1
- data/lib/gitlab/qa/support/gitlab_upgrade_path.rb +2 -2
- data/lib/gitlab/qa/version.rb +1 -1
- data/rubocop/cop/gitlab/dangerous_interpolation.rb +0 -1
- metadata +4 -7
- data/lib/gitlab/qa/component/telegraf.rb +0 -175
- data/lib/gitlab/qa/scenario/test/instance/staging_geo.rb +0 -32
- data/lib/gitlab/qa/scenario/test/sanity/version.rb +0 -93
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f1cb43d060925e3dd20830d8412563a94fca6fb8ad0636de7da5176b984c4e5
|
4
|
+
data.tar.gz: c6096e3712816f0c5667208d219f7e25ce125a869dc4c8b689e89e7c8c85242e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 526945385fb2c815c5cc5b7d17b7327523f099f0f08d123185041cde9142231664c62d253b96ae5262dc9519420cf79aa924750313e07af2c822c1bae528509d
|
7
|
+
data.tar.gz: 2782d95be4f96c1a67a1696b96bb0e8cdaa84fc0a273ac671c39925615b884c6f7e2645df4a3e95d5e74b812e82ad00af0a0a741bf4d144536764fa1d5b16a60
|
data/.gitlab-ci.yml
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
include:
|
11
11
|
- component: gitlab.com/gitlab-org/components/danger-review/danger-review@~latest
|
12
12
|
inputs:
|
13
|
-
job_image: "${CI_REGISTRY}/gitlab-org/gitlab-build-images/debian-${DEBIAN_VERSION}-ruby-${RUBY_VERSION}
|
13
|
+
job_image: "${CI_REGISTRY}/gitlab-org/gitlab-build-images/debian-${DEBIAN_VERSION}-ruby-${RUBY_VERSION}"
|
14
14
|
- component: gitlab.com/gitlab-org/components/gem-release/gem-release@~latest
|
15
15
|
|
16
16
|
stages:
|
@@ -20,7 +20,7 @@ stages:
|
|
20
20
|
- deploy
|
21
21
|
|
22
22
|
default:
|
23
|
-
image: ${CI_REGISTRY}/gitlab-org/gitlab-build-images/debian-${DEBIAN_VERSION}-ruby-${RUBY_VERSION}
|
23
|
+
image: ${CI_REGISTRY}/gitlab-org/gitlab-build-images/debian-${DEBIAN_VERSION}-ruby-${RUBY_VERSION}
|
24
24
|
tags:
|
25
25
|
- gitlab-org
|
26
26
|
cache:
|
@@ -43,8 +43,7 @@ workflow:
|
|
43
43
|
variables:
|
44
44
|
DEBIAN_VERSION: bookworm
|
45
45
|
DOCKER_VERSION: "24.0.5"
|
46
|
-
|
47
|
-
RUBY_VERSION: "3.1"
|
46
|
+
RUBY_VERSION: "3.1.5"
|
48
47
|
BUNDLE_PATH: vendor
|
49
48
|
BUNDLE_SILENCE_ROOT_WARNING: "true"
|
50
49
|
BUNDLE_SUPPRESS_INSTALL_USING_MESSAGES: "true"
|
@@ -145,7 +144,6 @@ package-and-test:
|
|
145
144
|
- RUBY_VERSION
|
146
145
|
- DEBIAN_VERSION
|
147
146
|
- DOCKER_VERSION
|
148
|
-
- BUNDLER_VERSION
|
149
147
|
trigger:
|
150
148
|
strategy: depend
|
151
149
|
forward:
|
data/.rubocop_todo.yml
CHANGED
@@ -55,7 +55,6 @@ Metrics/AbcSize:
|
|
55
55
|
- 'lib/gitlab/qa/scenario/test/integration/registry_with_cdn.rb'
|
56
56
|
- 'lib/gitlab/qa/scenario/test/integration/smtp.rb'
|
57
57
|
- 'lib/gitlab/qa/scenario/test/integration/suggested_reviewer.rb'
|
58
|
-
- 'lib/gitlab/qa/scenario/test/sanity/version.rb'
|
59
58
|
|
60
59
|
# Offense count: 2
|
61
60
|
# Configuration parameters: CheckIdentifiers, CheckConstants, CheckVariables, CheckStrings, CheckSymbols, CheckComments, CheckFilepaths, FlaggedTerms.
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
gitlab-qa (14.
|
4
|
+
gitlab-qa (14.11.0)
|
5
5
|
activesupport (>= 6.1, < 7.2)
|
6
6
|
gitlab (~> 4.19)
|
7
7
|
http (~> 5.0)
|
@@ -175,19 +175,19 @@ GEM
|
|
175
175
|
reverse_markdown (2.1.1)
|
176
176
|
nokogiri
|
177
177
|
rexml (3.2.5)
|
178
|
-
rspec (3.
|
179
|
-
rspec-core (~> 3.
|
180
|
-
rspec-expectations (~> 3.
|
181
|
-
rspec-mocks (~> 3.
|
182
|
-
rspec-core (3.
|
183
|
-
rspec-support (~> 3.
|
184
|
-
rspec-expectations (3.
|
178
|
+
rspec (3.13.0)
|
179
|
+
rspec-core (~> 3.13.0)
|
180
|
+
rspec-expectations (~> 3.13.0)
|
181
|
+
rspec-mocks (~> 3.13.0)
|
182
|
+
rspec-core (3.13.0)
|
183
|
+
rspec-support (~> 3.13.0)
|
184
|
+
rspec-expectations (3.13.0)
|
185
185
|
diff-lcs (>= 1.2.0, < 2.0)
|
186
|
-
rspec-support (~> 3.
|
187
|
-
rspec-mocks (3.
|
186
|
+
rspec-support (~> 3.13.0)
|
187
|
+
rspec-mocks (3.13.1)
|
188
188
|
diff-lcs (>= 1.2.0, < 2.0)
|
189
|
-
rspec-support (~> 3.
|
190
|
-
rspec-support (3.
|
189
|
+
rspec-support (~> 3.13.0)
|
190
|
+
rspec-support (3.13.1)
|
191
191
|
rubocop (1.43.0)
|
192
192
|
json (~> 2.3)
|
193
193
|
parallel (~> 1.10)
|
@@ -280,7 +280,7 @@ DEPENDENCIES
|
|
280
280
|
pry (~> 0.11)
|
281
281
|
pry-byebug (~> 3.10.1)
|
282
282
|
rake (~> 13.0)
|
283
|
-
rspec (~> 3.
|
283
|
+
rspec (~> 3.13)
|
284
284
|
simplecov (~> 0.22)
|
285
285
|
simplecov-cobertura (~> 2.1)
|
286
286
|
solargraph (~> 0.41)
|
@@ -63,6 +63,7 @@ All environment variables used by GitLab QA should be defined in [`lib/gitlab/qa
|
|
63
63
|
| `QA_EE_ACTIVATION_CODE` |- | Cloud activation code to enable Enterprise Edition features. | No|
|
64
64
|
| `QA_ARTIFACTS_DIR` |`/tmp/gitlab-qa`| Path to a directory where artifacts (logs and screenshots) for failing tests will be saved. | No|
|
65
65
|
| `DOCKER_HOST` |`http://localhost`| Docker host to run tests against. | No|
|
66
|
+
| `QA_DOCKER_NETWORK` | `test` | Name of the Docker network that is created to allow connectivity between GitLab and other containers. | No |
|
66
67
|
| `WEBDRIVER_HEADLESS` |- | When running locally, set to `false` to allow Chrome tests to be visible - watch your tests being run. | No|
|
67
68
|
| `CHROME_DISABLE_DEV_SHM` | `false` | Set to `true` to disable `/dev/shm` usage in Chrome on Linux. | No|
|
68
69
|
| `QA_ADDITIONAL_REPOSITORY_STORAGE` |- | The name of additional, non-default storage to be used with tests tagged `repository_storage`, run via the `Test::Instance::RepositoryStorage` scenario. Note: Admin access is required to change repository storage. | No|
|
@@ -333,7 +334,7 @@ Scenario verifies upgrade from previous (major|minor) version to current release
|
|
333
334
|
- Deploys previous (major|minor) version and runs Smoke test suite
|
334
335
|
to populate data in database before upgrade
|
335
336
|
- Generates upgrade path following current GitLab recommendations
|
336
|
-
from ['gitlab
|
337
|
+
from ['gitlab.com/gitlab-org/gitlab'](https://gitlab.com/gitlab-org/gitlab/-/raw/master/config/upgrade_path.yml) project
|
337
338
|
- Gradually upgrades GitLab instances to `<current_version>`
|
338
339
|
associated with provided `<full image address>` and runs tests against it
|
339
340
|
|
@@ -883,9 +884,9 @@ $ export GITLAB_PASSWORD="$GITLAB_QA_PASSWORD"
|
|
883
884
|
$ gitlab-qa Test::Instance::StagingRef
|
884
885
|
```
|
885
886
|
|
886
|
-
### `Test::Instance::
|
887
|
+
### `Test::Instance::StagingRefGeo`
|
887
888
|
|
888
|
-
This scenario tests that the Geo staging deployment (with [`staging.gitlab.com`](https://staging.gitlab.com) as the primary site and [`geo.staging.gitlab.com`](https://geo.staging.gitlab.com) as the secondary site) works as expected by running tests tagged `:geo` against it. This is done by spinning up a GitLab QA (`gitlab/gitlab-qa`) container and running the `QA::EE::Scenario::Test::Geo` scenario. Note that the Geo setup steps in the `QA::EE::Scenario::Test::Geo` scenario are skipped when testing a live Geo deployment.
|
889
|
+
This scenario tests that the Geo staging deployment (with [`staging-ref.gitlab.com`](https://staging-ref.gitlab.com) as the primary site and [`geo.staging-ref.gitlab.com`](https://geo.staging-ref.gitlab.com) as the secondary site) works as expected by running tests tagged `:geo` against it. This is done by spinning up a GitLab QA (`gitlab/gitlab-qa`) container and running the `QA::EE::Scenario::Test::Geo` scenario. Note that the Geo setup steps in the `QA::EE::Scenario::Test::Geo` scenario are skipped when testing a live Geo deployment.
|
889
890
|
|
890
891
|
**Required user properties:**
|
891
892
|
|
@@ -907,23 +908,6 @@ This scenario tests that the Geo staging deployment (with [`staging.gitlab.com`]
|
|
907
908
|
If the variable isn't present, the QA image from Docker Hub will be used.
|
908
909
|
This can be found in the shared 1Password vault.
|
909
910
|
|
910
|
-
Example:
|
911
|
-
|
912
|
-
```shell
|
913
|
-
$ export GITLAB_QA_ACCESS_TOKEN=your_api_access_token
|
914
|
-
$ export GITLAB_QA_DEV_ACCESS_TOKEN=your_dev_registry_access_token
|
915
|
-
$ export GITLAB_USERNAME="gitlab-qa"
|
916
|
-
$ export GITLAB_PASSWORD="$GITLAB_QA_PASSWORD"
|
917
|
-
|
918
|
-
$ gitlab-qa Test::Instance::StagingGeo
|
919
|
-
```
|
920
|
-
|
921
|
-
### `Test::Instance::StagingRefGeo`
|
922
|
-
|
923
|
-
This scenario tests that the Geo staging deployment (with [`staging-ref.gitlab.com`](https://staging-ref.gitlab.com) as the primary site and [`geo.staging-ref.gitlab.com`](https://geo.staging-ref.gitlab.com) as the secondary site) works as expected by running tests tagged `:geo` against it. This is done by spinning up a GitLab QA (`gitlab/gitlab-qa`) container and running the `QA::EE::Scenario::Test::Geo` scenario. Note that the Geo setup steps in the `QA::EE::Scenario::Test::Geo` scenario are skipped when testing a live Geo deployment.
|
924
|
-
|
925
|
-
Scenario requirements are the same as [`Test::Instance::StagingGeo`](#testinstancestaginggeo) described above.
|
926
|
-
|
927
911
|
```shell
|
928
912
|
$ export GITLAB_QA_ACCESS_TOKEN=your_api_access_token
|
929
913
|
$ export GITLAB_QA_DEV_ACCESS_TOKEN=your_dev_registry_access_token
|
@@ -1034,7 +1018,7 @@ These tests verify features related to multiple repository storages.
|
|
1034
1018
|
Example:
|
1035
1019
|
|
1036
1020
|
```shell
|
1037
|
-
$ export QA_ADDITIONAL_REPOSITORY_STORAGE=secondary
|
1021
|
+
$ export QA_ADDITIONAL_REPOSITORY_STORAGE=secondary
|
1038
1022
|
$ export QA_GITALY_NON_CLUSTER_STORAGE=gitaly
|
1039
1023
|
$ export QA_PRAEFECT_REPOSITORY_STORAGE=praefect
|
1040
1024
|
|
data/gitlab-qa.gemspec
CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.add_development_dependency 'pry', '~> 0.11'
|
30
30
|
spec.add_development_dependency 'pry-byebug', '~> 3.10.1'
|
31
31
|
spec.add_development_dependency 'rake', '~> 13.0'
|
32
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
32
|
+
spec.add_development_dependency 'rspec', '~> 3.13'
|
33
33
|
spec.add_development_dependency 'simplecov', '~> 0.22'
|
34
34
|
spec.add_development_dependency 'simplecov-cobertura', '~> 2.1'
|
35
35
|
spec.add_development_dependency 'solargraph', '~> 0.41'
|
@@ -189,7 +189,7 @@ module Gitlab
|
|
189
189
|
raise 'Invalid instance name!' unless name
|
190
190
|
end
|
191
191
|
|
192
|
-
def instance_no_teardown
|
192
|
+
def instance_no_teardown # rubocop:disable Metrics/AbcSize
|
193
193
|
begin
|
194
194
|
retries ||= 0
|
195
195
|
prepare
|
@@ -201,12 +201,17 @@ module Gitlab
|
|
201
201
|
reconfigure_log_file = get_reconfigure_log_file_from_artefact
|
202
202
|
# for scenarios where a service fails during startup, attempt to retry to avoid flaky failures
|
203
203
|
if (retries += 1) < 3
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
204
|
+
unless reconfigure_log_file.nil?
|
205
|
+
Runtime::Logger.info(
|
206
|
+
"Follow the document " \
|
207
|
+
"https://gitlab.com/gitlab-org/quality/runbooks/-/blob/main/debug_orchestrated_test_locally/ " \
|
208
|
+
"for debugging the test failure locally.")
|
209
|
+
|
210
|
+
# Tailing the reconfigure logs after retries are over and before raising exception
|
211
|
+
Runtime::Logger.info("Tail of the reconfigure log file, see artifacts for full log: #{reconfigure_log_file}")
|
212
|
+
Support::ShellCommand.new("tail -n 100 #{reconfigure_log_file}", stream_output: true).execute!
|
213
|
+
end
|
214
|
+
|
210
215
|
Runtime::Logger.warn(
|
211
216
|
"Retry instance_no_teardown due to Support::ShellCommand::StatusError -- attempt #{retries}"
|
212
217
|
)
|
@@ -214,9 +219,14 @@ module Gitlab
|
|
214
219
|
retry
|
215
220
|
end
|
216
221
|
|
217
|
-
#
|
218
|
-
|
219
|
-
|
222
|
+
# Printing logs to stdout for last retry failure
|
223
|
+
|
224
|
+
if !reconfigure_log_file.nil? && retries == 3
|
225
|
+
# Tailing the reconfigure logs after retries are over and before raising exception
|
226
|
+
Runtime::Logger.info("Tail of the reconfigure log file, see artifacts for full log: #{reconfigure_log_file}")
|
227
|
+
Support::ShellCommand.new("tail -n 100 #{reconfigure_log_file}", stream_output: true).execute!
|
228
|
+
end
|
229
|
+
|
220
230
|
raise e
|
221
231
|
end
|
222
232
|
|
@@ -67,7 +67,8 @@ module Gitlab
|
|
67
67
|
gitaly['configuration'] = {
|
68
68
|
'listen_addr': '0.0.0.0:#{gitaly_port}',
|
69
69
|
'prometheus_listen_addr': '0.0.0.0:9236',
|
70
|
-
'auth_token': 'PRAEFECT_INTERNAL_TOKEN'
|
70
|
+
'auth_token': 'PRAEFECT_INTERNAL_TOKEN',
|
71
|
+
'transactions': {'enabled': #{Runtime::Env.qa_gitaly_transactions_enabled?}}
|
71
72
|
}
|
72
73
|
gitlab_shell['secret_token'] = 'GITLAB_SHELL_SECRET_TOKEN';
|
73
74
|
gitlab_rails['internal_api_url'] = 'http://#{cluster_config.gitlab_name}.#{cluster_config.network}';
|
@@ -16,7 +16,7 @@ module Gitlab
|
|
16
16
|
|
17
17
|
def initialize(params = {}) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
|
18
18
|
@gitlab_name = params[:gitlab_name] || 'gitlab-gitaly-cluster'
|
19
|
-
@network = params[:network] ||
|
19
|
+
@network = params[:network] || Runtime::Env.docker_network
|
20
20
|
@airgapped_network = params[:airgapped_network] || false
|
21
21
|
|
22
22
|
@praefect_node_name = params[:praefect_node_name] || 'praefect'
|
data/lib/gitlab/qa/runner.rb
CHANGED
@@ -93,7 +93,6 @@ module Gitlab
|
|
93
93
|
scenario = Scenario.const_get(args.shift)
|
94
94
|
|
95
95
|
load_omnibus_configurations
|
96
|
-
load_telegraf(scenario)
|
97
96
|
|
98
97
|
begin
|
99
98
|
@active_configurators.compact.each do |configurator|
|
@@ -129,18 +128,6 @@ module Gitlab
|
|
129
128
|
end.compact
|
130
129
|
end
|
131
130
|
|
132
|
-
# Start telegraf agent for metrics collection
|
133
|
-
#
|
134
|
-
# Do not load when running against external instance
|
135
|
-
#
|
136
|
-
# @param [Class] scenario
|
137
|
-
# @return [void]
|
138
|
-
def self.load_telegraf(scenario)
|
139
|
-
return if scenario <= Scenario::Test::Instance::DeploymentBase || scenario == Scenario::Test::Instance::Any
|
140
|
-
|
141
|
-
@active_configurators << Component::Telegraf.new
|
142
|
-
end
|
143
|
-
|
144
131
|
def self.load_omnibus_configurations
|
145
132
|
# OmnibusConfiguration::Test => --test
|
146
133
|
# OmnibusConfiguration::HelloThere => --hello_there
|
@@ -17,156 +17,156 @@ module Gitlab
|
|
17
17
|
# Any new key-value pairs should also be added to the hash at /rubocop/cop/gitlab/dangerous_interpolation.rb
|
18
18
|
# to prevent Rubocop errors.
|
19
19
|
ENV_VARIABLES = {
|
20
|
-
'QA_IMAGE' => :qa_image,
|
21
|
-
'QA_REMOTE_GRID' => :remote_grid,
|
22
|
-
'QA_REMOTE_GRID_USERNAME' => :remote_grid_username,
|
23
|
-
'QA_REMOTE_GRID_ACCESS_KEY' => :remote_grid_access_key,
|
24
|
-
'QA_REMOTE_GRID_PROTOCOL' => :remote_grid_protocol,
|
25
|
-
'QA_REMOTE_MOBILE_DEVICE_NAME' => :remote_mobile_device_name,
|
26
|
-
'QA_REMOTE_TUNNEL_ID' => :remote_tunnel_id,
|
27
|
-
'QA_BROWSER' => :browser,
|
28
|
-
'QA_SELENOID_BROWSER_VERSION' => :selenoid_browser_version,
|
29
|
-
'QA_RECORD_VIDEO' => :record_video,
|
30
|
-
'QA_LAYOUT' => :layout,
|
31
|
-
'QA_VIDEO_RECORDER_IMAGE' => :video_recorder_image,
|
32
|
-
'QA_VIDEO_RECORDER_VERSION' => :video_recorder_version,
|
33
|
-
'QA_SELENOID_BROWSER_IMAGE' => :selenoid_browser_image,
|
34
|
-
'QA_ADDITIONAL_REPOSITORY_STORAGE' => :qa_additional_repository_storage,
|
35
|
-
'QA_PRAEFECT_REPOSITORY_STORAGE' => :qa_praefect_repository_storage,
|
36
|
-
'QA_GITALY_NON_CLUSTER_STORAGE' => :qa_gitaly_non_cluster_storage,
|
37
|
-
'QA_COOKIES' => :qa_cookie,
|
38
|
-
'QA_DEBUG' => :qa_debug,
|
39
|
-
'QA_CAN_TEST_ADMIN_FEATURES' => :qa_can_test_admin_features,
|
40
|
-
'QA_CAN_TEST_GIT_PROTOCOL_V2' => :qa_can_test_git_protocol_v2,
|
41
|
-
'QA_CAN_TEST_PRAEFECT' => :qa_can_test_praefect,
|
42
|
-
'QA_SIMULATE_SLOW_CONNECTION' => :qa_simulate_slow_connection,
|
43
|
-
'QA_SLOW_CONNECTION_LATENCY_MS' => :qa_slow_connection_latency_ms,
|
44
|
-
'QA_SLOW_CONNECTION_THROUGHPUT_KBPS' => :qa_slow_connection_throughput_kbps,
|
45
|
-
'QA_GENERATE_ALLURE_REPORT' => :generate_allure_report,
|
46
|
-
'QA_EXPORT_TEST_METRICS' => :qa_export_test_metrics,
|
47
|
-
'QA_INFLUXDB_URL' => :qa_influxdb_url,
|
48
|
-
'QA_INFLUXDB_TOKEN' => :qa_influxdb_token,
|
49
|
-
'QA_SKIP_PULL' => :qa_skip_pull,
|
50
|
-
'QA_VALIDATE_RESOURCE_REUSE' => :qa_validate_resource_reuse,
|
51
|
-
'WEBDRIVER_HEADLESS' => :webdriver_headless,
|
52
|
-
'GITLAB_ADMIN_USERNAME' => :admin_username,
|
53
|
-
'GITLAB_ADMIN_PASSWORD' => :admin_password,
|
54
|
-
'GITLAB_USERNAME' => :user_username,
|
55
|
-
'GITLAB_PASSWORD' => :user_password,
|
56
|
-
'GITLAB_LDAP_USERNAME' => :ldap_username,
|
57
|
-
'GITLAB_LDAP_PASSWORD' => :ldap_password,
|
58
|
-
'GITLAB_FORKER_USERNAME' => :forker_username,
|
59
|
-
'GITLAB_FORKER_PASSWORD' => :forker_password,
|
60
|
-
'GITLAB_USER_TYPE' => :user_type,
|
61
|
-
'GITLAB_SANDBOX_NAME' => :gitlab_sandbox_name,
|
62
|
-
'GITLAB_QA_ACCESS_TOKEN' => :qa_access_token,
|
63
|
-
'GITLAB_QA_ADMIN_ACCESS_TOKEN' => :qa_admin_access_token,
|
64
|
-
'GITLAB_QA_DEV_ACCESS_TOKEN' => :qa_dev_access_token,
|
65
|
-
'GITLAB_QA_CONTAINER_REGISTRY_ACCESS_TOKEN' => :qa_container_registry_access_token,
|
66
|
-
'GITHUB_ACCESS_TOKEN' => :github_access_token,
|
67
|
-
'GITLAB_URL' => :gitlab_url,
|
68
|
-
'SIMPLE_SAML_HOSTNAME' => :simple_saml_hostname,
|
69
|
-
'SIMPLE_SAML_FINGERPRINT' => :simple_saml_fingerprint,
|
70
20
|
'ACCEPT_INSECURE_CERTS' => :accept_insecure_certs,
|
71
|
-
'
|
72
|
-
'
|
73
|
-
'
|
74
|
-
'
|
75
|
-
'
|
76
|
-
'
|
77
|
-
'GITLAB_QA_USERNAME_1' => :gitlab_qa_username_1,
|
78
|
-
'GITLAB_QA_PASSWORD_1' => :gitlab_qa_password_1,
|
79
|
-
'GITLAB_QA_USERNAME_2' => :gitlab_qa_username_2,
|
80
|
-
'GITLAB_QA_PASSWORD_2' => :gitlab_qa_password_2,
|
81
|
-
'QA_GITHUB_USERNAME' => :qa_github_username,
|
82
|
-
'QA_GITHUB_PASSWORD' => :qa_github_password,
|
83
|
-
'QA_GITLAB_HOSTNAME' => :qa_gitlab_hostname,
|
84
|
-
'QA_GITLAB_USE_TLS' => :qa_gitlab_use_tls,
|
85
|
-
'KNAPSACK_GENERATE_REPORT' => :knapsack_generate_report,
|
86
|
-
'KNAPSACK_REPORT_PATH' => :knapsack_report_path,
|
87
|
-
'KNAPSACK_TEST_FILE_PATTERN' => :knapsack_test_file_pattern,
|
88
|
-
'KNAPSACK_TEST_DIR' => :knapsack_test_dir,
|
89
|
-
'NO_KNAPSACK' => :no_knapsack,
|
90
|
-
'QA_KNAPSACK_REPORT_GCS_CREDENTIALS' => :qa_knapsack_report_gcs_credentials,
|
91
|
-
'QA_KNAPSACK_REPORT_PATH' => :qa_knapsack_report_path,
|
92
|
-
'QA_RSPEC_REPORT_PATH' => :qa_rspec_report_path,
|
93
|
-
'RSPEC_FAST_QUARANTINE_PATH' => :rspec_fast_quarantine_path,
|
94
|
-
'RSPEC_SKIPPED_TESTS_REPORT_PATH' => :skipped_tests_report_path,
|
21
|
+
'AWS_S3_ACCESS_KEY' => :aws_s3_access_key,
|
22
|
+
'AWS_S3_BUCKET_NAME' => :aws_s3_bucket_name,
|
23
|
+
'AWS_S3_KEY_ID' => :aws_s3_key_id,
|
24
|
+
'AWS_S3_REGION' => :aws_s3_region,
|
25
|
+
'CACHE_NAMESPACE_NAME' => :cache_namespace_name,
|
26
|
+
'CHROME_DISABLE_DEV_SHM' => :chrome_disable_dev_shm,
|
95
27
|
'CI' => :ci,
|
28
|
+
'CI_JOB_ID' => :ci_job_id,
|
96
29
|
'CI_JOB_NAME' => :ci_job_name,
|
97
30
|
'CI_JOB_NAME_SLUG' => :ci_job_name_slug,
|
98
|
-
'CI_JOB_ID' => :ci_job_id,
|
99
|
-
'CI_JOB_URL' => :ci_job_url,
|
100
31
|
'CI_JOB_TOKEN' => :ci_job_token,
|
101
|
-
'
|
102
|
-
'
|
103
|
-
'CI_SERVER_PERSONAL_ACCESS_TOKEN' => :ci_server_personal_access_token,
|
32
|
+
'CI_JOB_URL' => :ci_job_url,
|
33
|
+
'CI_MERGE_REQUEST_IID' => :ci_merge_request_iid,
|
104
34
|
'CI_NODE_INDEX' => :ci_node_index,
|
105
35
|
'CI_NODE_TOTAL' => :ci_node_total,
|
36
|
+
'CI_PIPELINE_CREATED_AT' => :ci_pipeline_created_at,
|
37
|
+
'CI_PIPELINE_ID' => :ci_pipeline_id,
|
38
|
+
'CI_PIPELINE_SOURCE' => :ci_pipeline_source,
|
39
|
+
'CI_PIPELINE_URL' => :ci_pipeline_url,
|
106
40
|
'CI_PROJECT_NAME' => :ci_project_name,
|
107
41
|
'CI_PROJECT_PATH' => :ci_project_path,
|
108
42
|
'CI_PROJECT_PATH_SLUG' => :ci_project_path_slug,
|
109
|
-
'
|
110
|
-
'
|
111
|
-
'
|
112
|
-
'
|
113
|
-
'
|
114
|
-
'
|
43
|
+
'CI_RUNNER_ID' => :ci_runner_id,
|
44
|
+
'CI_SERVER_HOST' => :ci_server_host,
|
45
|
+
'CI_SERVER_PERSONAL_ACCESS_TOKEN' => :ci_server_personal_access_token,
|
46
|
+
'COLORIZED_LOGS' => :colorized_logs,
|
47
|
+
'CLOUDSDK_CORE_PROJECT' => :cloudsdk_core_project,
|
48
|
+
'EE_LICENSE' => :ee_license,
|
115
49
|
'ELASTIC_URL' => :elastic_url,
|
116
|
-
'
|
117
|
-
'
|
118
|
-
'
|
119
|
-
'
|
120
|
-
'
|
121
|
-
'
|
122
|
-
'JIRA_ADMIN_USERNAME' => :jira_admin_username,
|
123
|
-
'JIRA_ADMIN_PASSWORD' => :jira_admin_password,
|
124
|
-
'CACHE_NAMESPACE_NAME' => :cache_namespace_name,
|
125
|
-
'GITLAB_QA_USER_AGENT' => :gitlab_qa_user_agent,
|
50
|
+
'FIPS' => :fips,
|
51
|
+
'GCS_BUCKET_NAME' => :gcs_bucket_name,
|
52
|
+
'GCS_CDN_BUCKET_NAME' => :gcs_cdn_bucket_name,
|
53
|
+
'GCLOUD_ACCOUNT_EMAIL' => :gcloud_account_email,
|
54
|
+
'GCLOUD_ACCOUNT_KEY' => :gcloud_account_key,
|
55
|
+
'GCLOUD_REGION' => :gcloud_region,
|
126
56
|
'GEO_FAILOVER' => :geo_failover,
|
57
|
+
'GEO_MAX_DB_REPLICATION_TIME' => :geo_max_db_replication_time,
|
58
|
+
'GEO_MAX_FILE_REPLICATION_TIME' => :geo_max_file_replication_time,
|
59
|
+
'GITLAB_ADMIN_PASSWORD' => :admin_password,
|
60
|
+
'GITLAB_ADMIN_USERNAME' => :admin_username,
|
61
|
+
'GITLAB_FORKER_PASSWORD' => :forker_password,
|
62
|
+
'GITLAB_FORKER_USERNAME' => :forker_username,
|
127
63
|
'GITLAB_INITIAL_ROOT_PASSWORD' => :initial_root_password,
|
64
|
+
'GITLAB_LDAP_PASSWORD' => :ldap_password,
|
65
|
+
'GITLAB_LDAP_USERNAME' => :ldap_username,
|
66
|
+
'GITLAB_PASSWORD' => :user_password,
|
67
|
+
'GITLAB_QA_ACCESS_TOKEN' => :qa_access_token,
|
68
|
+
'GITLAB_QA_ADMIN_ACCESS_TOKEN' => :qa_admin_access_token,
|
69
|
+
'GITLAB_QA_CONTAINER_REGISTRY_ACCESS_TOKEN' => :qa_container_registry_access_token,
|
70
|
+
'GITLAB_QA_DEV_ACCESS_TOKEN' => :qa_dev_access_token,
|
71
|
+
'GITLAB_QA_FORMLESS_LOGIN_TOKEN' => :gitlab_qa_formless_login_token,
|
72
|
+
'GITLAB_QA_LOOP_RUNNER_MINUTES' => :gitlab_qa_loop_runner_minutes,
|
73
|
+
'GITLAB_QA_PASSWORD_1' => :gitlab_qa_password_1,
|
74
|
+
'GITLAB_QA_PASSWORD_2' => :gitlab_qa_password_2,
|
75
|
+
'GITLAB_QA_USER_AGENT' => :gitlab_qa_user_agent,
|
76
|
+
'GITLAB_QA_USERNAME_1' => :gitlab_qa_username_1,
|
77
|
+
'GITLAB_QA_USERNAME_2' => :gitlab_qa_username_2,
|
78
|
+
'GITLAB_SANDBOX_NAME' => :gitlab_sandbox_name,
|
128
79
|
'GITLAB_TLS_CERTIFICATE' => :gitlab_tls_certificate,
|
129
|
-
'
|
130
|
-
'
|
131
|
-
'
|
132
|
-
'
|
133
|
-
'
|
134
|
-
'GOOGLE_PROJECT' => :google_project,
|
135
|
-
'GOOGLE_CLIENT_EMAIL' => :google_client_email,
|
136
|
-
'GOOGLE_JSON_KEY' => :google_json_key,
|
80
|
+
'GITLAB_URL' => :gitlab_url,
|
81
|
+
'GITLAB_USER_TYPE' => :user_type,
|
82
|
+
'GITLAB_USERNAME' => :user_username,
|
83
|
+
'GITLAB_CI' => :gitlab_ci,
|
84
|
+
'GITHUB_ACCESS_TOKEN' => :github_access_token,
|
137
85
|
'GOOGLE_CDN_JSON_KEY' => :google_cdn_json_key,
|
138
86
|
'GOOGLE_CDN_LB' => :google_cdn_load_balancer,
|
139
87
|
'GOOGLE_CDN_SIGNURL_KEY' => :google_cdn_signurl_key,
|
140
88
|
'GOOGLE_CDN_SIGNURL_KEY_NAME' => :google_cdn_signurl_key_name,
|
141
|
-
'
|
142
|
-
'
|
143
|
-
'
|
144
|
-
'NO_ADMIN' => :no_admin,
|
145
|
-
'CHROME_DISABLE_DEV_SHM' => :chrome_disable_dev_shm,
|
146
|
-
'COLORIZED_LOGS' => :colorized_logs,
|
147
|
-
'FIPS' => :fips,
|
89
|
+
'GOOGLE_CLIENT_EMAIL' => :google_client_email,
|
90
|
+
'GOOGLE_JSON_KEY' => :google_json_key,
|
91
|
+
'GOOGLE_PROJECT' => :google_project,
|
148
92
|
'JH_ENV' => :jh_env,
|
93
|
+
'JIRA_ADMIN_PASSWORD' => :jira_admin_password,
|
94
|
+
'JIRA_ADMIN_USERNAME' => :jira_admin_username,
|
95
|
+
'JIRA_HOSTNAME' => :jira_hostname,
|
96
|
+
'KNAPSACK_GENERATE_REPORT' => :knapsack_generate_report,
|
97
|
+
'KNAPSACK_REPORT_PATH' => :knapsack_report_path,
|
98
|
+
'KNAPSACK_TEST_DIR' => :knapsack_test_dir,
|
99
|
+
'KNAPSACK_TEST_FILE_PATTERN' => :knapsack_test_file_pattern,
|
100
|
+
'MAILHOG_HOSTNAME' => :mailhog_hostname,
|
101
|
+
'NO_KNAPSACK' => :no_knapsack,
|
102
|
+
'QA_ADDITIONAL_REPOSITORY_STORAGE' => :qa_additional_repository_storage,
|
103
|
+
'QA_BROWSER' => :browser,
|
104
|
+
'QA_CAN_TEST_ADMIN_FEATURES' => :qa_can_test_admin_features,
|
105
|
+
'QA_CAN_TEST_GIT_PROTOCOL_V2' => :qa_can_test_git_protocol_v2,
|
106
|
+
'QA_CAN_TEST_PRAEFECT' => :qa_can_test_praefect,
|
107
|
+
'QA_COOKIES' => :qa_cookie,
|
108
|
+
'QA_DEBUG' => :qa_debug,
|
109
|
+
'QA_DOCKER_NETWORK' => :docker_network,
|
110
|
+
'QA_EXPORT_TEST_METRICS' => :qa_export_test_metrics,
|
111
|
+
'QA_GITALY_NON_CLUSTER_STORAGE' => :qa_gitaly_non_cluster_storage,
|
149
112
|
'QA_GITHUB_OAUTH_APP_ID' => :github_oauth_app_id,
|
150
113
|
'QA_GITHUB_OAUTH_APP_SECRET' => :github_oauth_app_secret,
|
114
|
+
'QA_GITHUB_PASSWORD' => :qa_github_password,
|
115
|
+
'QA_GITHUB_USERNAME' => :qa_github_username,
|
116
|
+
'QA_GITLAB_HOSTNAME' => :qa_gitlab_hostname,
|
117
|
+
'QA_GITLAB_USE_TLS' => :qa_gitlab_use_tls,
|
118
|
+
'QA_IMAGE' => :qa_image,
|
119
|
+
'QA_INFLUXDB_TOKEN' => :qa_influxdb_token,
|
120
|
+
'QA_INFLUXDB_URL' => :qa_influxdb_url,
|
121
|
+
'QA_KNAPSACK_REPORT_GCS_CREDENTIALS' => :qa_knapsack_report_gcs_credentials,
|
122
|
+
'QA_KNAPSACK_REPORT_PATH' => :qa_knapsack_report_path,
|
123
|
+
'QA_LAYOUT' => :layout,
|
124
|
+
'QA_PRAEFECT_REPOSITORY_STORAGE' => :qa_praefect_repository_storage,
|
125
|
+
'QA_RECORD_VIDEO' => :record_video,
|
126
|
+
'QA_REMOTE_GRID' => :remote_grid,
|
127
|
+
'QA_REMOTE_GRID_ACCESS_KEY' => :remote_grid_access_key,
|
128
|
+
'QA_REMOTE_GRID_PROTOCOL' => :remote_grid_protocol,
|
129
|
+
'QA_REMOTE_GRID_USERNAME' => :remote_grid_username,
|
130
|
+
'QA_REMOTE_MOBILE_DEVICE_NAME' => :remote_mobile_device_name,
|
131
|
+
'QA_REMOTE_TUNNEL_ID' => :remote_tunnel_id,
|
132
|
+
'QA_RSPEC_REPORT_PATH' => :qa_rspec_report_path,
|
133
|
+
'QA_SELENOID_BROWSER_IMAGE' => :selenoid_browser_image,
|
134
|
+
'QA_SELENOID_BROWSER_VERSION' => :selenoid_browser_version,
|
135
|
+
'QA_SIMULATE_SLOW_CONNECTION' => :qa_simulate_slow_connection,
|
136
|
+
'QA_SKIP_PULL' => :qa_skip_pull,
|
137
|
+
'QA_SLOW_CONNECTION_LATENCY_MS' => :qa_slow_connection_latency_ms,
|
138
|
+
'QA_SLOW_CONNECTION_THROUGHPUT_KBPS' => :qa_slow_connection_throughput_kbps,
|
139
|
+
'QA_VALIDATE_RESOURCE_REUSE' => :qa_validate_resource_reuse,
|
140
|
+
'QA_VIDEO_RECORDER_IMAGE' => :video_recorder_image,
|
141
|
+
'QA_VIDEO_RECORDER_VERSION' => :video_recorder_version,
|
151
142
|
'QA_1P_EMAIL' => :qa_1p_email,
|
143
|
+
'QA_1P_GITHUB_UUID' => :qa_1p_github_uuid,
|
152
144
|
'QA_1P_PASSWORD' => :qa_1p_password,
|
153
145
|
'QA_1P_SECRET' => :qa_1p_secret,
|
154
|
-
'QA_1P_GITHUB_UUID' => :qa_1p_github_uuid,
|
155
146
|
'RELEASE' => :release,
|
147
|
+
'RELEASE_REGISTRY_PASSWORD' => :release_registry_password,
|
156
148
|
'RELEASE_REGISTRY_URL' => :release_registry_url,
|
157
149
|
'RELEASE_REGISTRY_USERNAME' => :release_registry_username,
|
158
|
-
'
|
150
|
+
'RSPEC_FAST_QUARANTINE_PATH' => :rspec_fast_quarantine_path,
|
151
|
+
'RSPEC_SKIPPED_TESTS_REPORT_PATH' => :skipped_tests_report_path,
|
152
|
+
'SCHEDULE_TYPE' => :schedule_type,
|
159
153
|
'SELENOID_DIRECTORY' => :selenoid_directory,
|
154
|
+
'SIGNUP_DISABLED' => :signup_disabled,
|
155
|
+
'SIMPLE_SAML_FINGERPRINT' => :simple_saml_fingerprint,
|
156
|
+
'SIMPLE_SAML_HOSTNAME' => :simple_saml_hostname,
|
157
|
+
'SMOKE_ONLY' => :smoke_only,
|
158
|
+
'TOP_UPSTREAM_MERGE_REQUEST_IID' => :top_upstream_merge_request_iid,
|
160
159
|
'USE_SELENOID' => :use_selenoid,
|
161
|
-
'
|
160
|
+
'WEBDRIVER_HEADLESS' => :webdriver_headless,
|
161
|
+
'WORKSPACES_DOMAIN_CERT' => { name: :workspaces_domain_cert, type: :file },
|
162
|
+
'WORKSPACES_DOMAIN_KEY' => { name: :workspaces_domain_key, type: :file },
|
162
163
|
'WORKSPACES_OAUTH_APP_ID' => :workspaces_oauth_app_id,
|
163
164
|
'WORKSPACES_OAUTH_APP_SECRET' => :workspaces_oauth_app_secret,
|
164
165
|
'WORKSPACES_OAUTH_SIGNING_KEY' => :workspaces_oauth_signing_key,
|
165
166
|
'WORKSPACES_PROXY_DOMAIN' => :workspaces_proxy_domain,
|
166
|
-
'WORKSPACES_DOMAIN_CERT' => { name: :workspaces_domain_cert, type: :file },
|
167
|
-
'WORKSPACES_DOMAIN_KEY' => { name: :workspaces_domain_key, type: :file },
|
168
167
|
'WORKSPACES_WILDCARD_CERT' => { name: :workspaces_wildcard_cert, type: :file },
|
169
|
-
'WORKSPACES_WILDCARD_KEY' => { name: :workspaces_wildcard_key, type: :file }
|
168
|
+
'WORKSPACES_WILDCARD_KEY' => { name: :workspaces_wildcard_key, type: :file },
|
169
|
+
'EPIC_SYNC_TEST' => :epic_sync_test
|
170
170
|
}.freeze
|
171
171
|
|
172
172
|
def variables
|
@@ -370,7 +370,8 @@ module Gitlab
|
|
370
370
|
end
|
371
371
|
|
372
372
|
def video_recorder_image
|
373
|
-
env_var_value_if_defined('QA_VIDEO_RECORDER_IMAGE') ||
|
373
|
+
env_var_value_if_defined('QA_VIDEO_RECORDER_IMAGE') ||
|
374
|
+
'registry.gitlab.com/gitlab-org/gitlab-qa/selenoid-manual-video-recorder'
|
374
375
|
end
|
375
376
|
|
376
377
|
def video_recorder_version
|
@@ -391,9 +392,7 @@ module Gitlab
|
|
391
392
|
live_envs = %w[staging staging-canary staging-ref canary preprod production]
|
392
393
|
return unless live_envs.include?(ci_project_name)
|
393
394
|
|
394
|
-
test_subset = if env_var_value_if_defined('
|
395
|
-
'sanity-no-admin'
|
396
|
-
elsif env_var_value_if_defined('SMOKE_ONLY') == 'true'
|
395
|
+
test_subset = if env_var_value_if_defined('SMOKE_ONLY') == 'true'
|
397
396
|
'sanity'
|
398
397
|
else
|
399
398
|
'full'
|
@@ -402,6 +401,13 @@ module Gitlab
|
|
402
401
|
"#{ci_project_name}-#{test_subset}"
|
403
402
|
end
|
404
403
|
|
404
|
+
# The default network for the Docker containers
|
405
|
+
#
|
406
|
+
# @example <component>.test
|
407
|
+
def docker_network
|
408
|
+
env_var_value_if_defined('QA_DOCKER_NETWORK') || 'test'
|
409
|
+
end
|
410
|
+
|
405
411
|
def docker_add_hosts
|
406
412
|
(env_var_value_if_defined('QA_DOCKER_ADD_HOSTS') || '').split(',')
|
407
413
|
end
|
@@ -470,6 +476,10 @@ module Gitlab
|
|
470
476
|
enabled?(env_var_value_if_defined('QA_RETRY_FAILED_SPECS'), default: false)
|
471
477
|
end
|
472
478
|
|
479
|
+
def self.qa_gitaly_transactions_enabled?
|
480
|
+
enabled?(env_var_value_if_defined('QA_GITALY_TRANSACTIONS_ENABLED'), default: false)
|
481
|
+
end
|
482
|
+
|
473
483
|
private
|
474
484
|
|
475
485
|
def enabled?(value, default: true)
|
@@ -13,7 +13,7 @@ module Gitlab
|
|
13
13
|
# Uses https://docs.docker.com/engine/reference/commandline/network_create/#network-internal-mode
|
14
14
|
@airgapped_network_name = 'airgapped'
|
15
15
|
# Uses iptables to deny all network traffic, with a number of exceptions for required ports and IPs
|
16
|
-
@iptables_restricted_network =
|
16
|
+
@iptables_restricted_network = Runtime::Env.docker_network
|
17
17
|
@config = Component::GitalyCluster::GitalyClusterConfig.new(
|
18
18
|
gitlab_name: "gitlab-airgapped-#{SecureRandom.hex(4)}",
|
19
19
|
airgapped_network: true,
|
@@ -37,7 +37,7 @@ module Gitlab
|
|
37
37
|
gitlab.skip_availability_check = true
|
38
38
|
gitlab.omnibus_configuration << gitlab_omnibus_configuration
|
39
39
|
rspec_args << "--" unless rspec_args.include?('--')
|
40
|
-
rspec_args <<
|
40
|
+
rspec_args << "--tag ~orchestrated"
|
41
41
|
gitlab.instance do
|
42
42
|
Component::Specs.perform do |specs|
|
43
43
|
specs.suite = 'Test::Instance::Airgapped'
|