gitlab-qa 14.10.0 → 14.11.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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.gitlab-ci.yml +3 -5
  3. data/.rubocop_todo.yml +0 -1
  4. data/Gemfile.lock +1 -1
  5. data/docs/what_tests_can_be_run.md +5 -21
  6. data/lib/gitlab/qa/component/chaos.rb +1 -1
  7. data/lib/gitlab/qa/component/gitaly_cluster.rb +1 -1
  8. data/lib/gitlab/qa/runner.rb +0 -13
  9. data/lib/gitlab/qa/runtime/env.rb +124 -119
  10. data/lib/gitlab/qa/runtime/omnibus_configurations/object_storage.rb +1 -1
  11. data/lib/gitlab/qa/scenario/test/instance/airgapped.rb +1 -1
  12. data/lib/gitlab/qa/scenario/test/instance/image.rb +1 -1
  13. data/lib/gitlab/qa/scenario/test/instance/relative_url.rb +1 -1
  14. data/lib/gitlab/qa/scenario/test/instance/repository_storage.rb +1 -1
  15. data/lib/gitlab/qa/scenario/test/integration/ai_gateway_base.rb +2 -1
  16. data/lib/gitlab/qa/scenario/test/integration/client_ssl.rb +1 -1
  17. data/lib/gitlab/qa/scenario/test/integration/elasticsearch.rb +2 -2
  18. data/lib/gitlab/qa/scenario/test/integration/gitlab_pages.rb +1 -1
  19. data/lib/gitlab/qa/scenario/test/integration/import.rb +1 -1
  20. data/lib/gitlab/qa/scenario/test/integration/integrations.rb +1 -1
  21. data/lib/gitlab/qa/scenario/test/integration/jira.rb +1 -1
  22. data/lib/gitlab/qa/scenario/test/integration/ldap.rb +3 -3
  23. data/lib/gitlab/qa/scenario/test/integration/mattermost.rb +1 -1
  24. data/lib/gitlab/qa/scenario/test/integration/metrics.rb +1 -1
  25. data/lib/gitlab/qa/scenario/test/integration/mtls.rb +1 -1
  26. data/lib/gitlab/qa/scenario/test/integration/opensearch.rb +2 -2
  27. data/lib/gitlab/qa/scenario/test/integration/registry.rb +1 -1
  28. data/lib/gitlab/qa/scenario/test/integration/registry_tls.rb +1 -1
  29. data/lib/gitlab/qa/scenario/test/integration/registry_with_cdn.rb +2 -2
  30. data/lib/gitlab/qa/scenario/test/integration/saml.rb +3 -3
  31. data/lib/gitlab/qa/scenario/test/integration/service_ping_disabled.rb +1 -1
  32. data/lib/gitlab/qa/scenario/test/integration/smtp.rb +1 -1
  33. data/lib/gitlab/qa/scenario/test/integration/suggested_reviewer.rb +1 -1
  34. data/lib/gitlab/qa/scenario/test/omnibus/update_from_previous.rb +1 -1
  35. data/lib/gitlab/qa/support/gitlab_upgrade_path.rb +2 -2
  36. data/lib/gitlab/qa/version.rb +1 -1
  37. data/rubocop/cop/gitlab/dangerous_interpolation.rb +0 -1
  38. metadata +2 -5
  39. data/lib/gitlab/qa/component/telegraf.rb +0 -175
  40. data/lib/gitlab/qa/scenario/test/instance/staging_geo.rb +0 -32
  41. 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: a6f7bd80ea293183e6498166dfff6ed48a13ae11c6075fbb4a6b8da659486f0c
4
- data.tar.gz: 1fb02c24469c15088ebaa23607df22dac8237c98afdf3e641bb21c9544d2a6f8
3
+ metadata.gz: 0f1cb43d060925e3dd20830d8412563a94fca6fb8ad0636de7da5176b984c4e5
4
+ data.tar.gz: c6096e3712816f0c5667208d219f7e25ce125a869dc4c8b689e89e7c8c85242e
5
5
  SHA512:
6
- metadata.gz: f3f8343857638e8ed1c2b1b496bf9f09094fddd9d14f477d7277bd71c37d967e7ecce22eb369e6a105df956a48b7ce92831812aa82356f82578bfaa6b847f1ca
7
- data.tar.gz: 5ca6e86b327ad376cbae3d58184c8f0ce348f8c6830078b4fd202a16c4ec523ced8ee5e68adf89aa2c79e6a71d40f57955f43271c5fef967661b45078b214e7b
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}:bundler-${BUNDLER_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}:bundler-${BUNDLER_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
- BUNDLER_VERSION: "2.5"
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.10.0)
4
+ gitlab-qa (14.11.0)
5
5
  activesupport (>= 6.1, < 7.2)
6
6
  gitlab (~> 4.19)
7
7
  http (~> 5.0)
@@ -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-com/support/toolbox/upgrade-path'](https://gitlab.com/gitlab-com/support/toolbox/upgrade-path/-/raw/main/upgrade-path.yml) project
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::StagingGeo`
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
 
@@ -11,7 +11,7 @@ module Gitlab
11
11
 
12
12
  def initialize
13
13
  super
14
- @network = "test"
14
+ @network = Runtime::Env.docker_network
15
15
  end
16
16
 
17
17
  def name
@@ -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] || 'test'
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'
@@ -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
- 'EE_LICENSE' => :ee_license,
72
- 'GCLOUD_ACCOUNT_EMAIL' => :gcloud_account_email,
73
- 'GCLOUD_ACCOUNT_KEY' => :gcloud_account_key,
74
- 'CLOUDSDK_CORE_PROJECT' => :cloudsdk_core_project,
75
- 'GCLOUD_REGION' => :gcloud_region,
76
- 'SIGNUP_DISABLED' => :signup_disabled,
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
- 'CI_RUNNER_ID' => :ci_runner_id,
102
- 'CI_SERVER_HOST' => :ci_server_host,
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
- 'CI_PIPELINE_SOURCE' => :ci_pipeline_source,
110
- 'CI_PIPELINE_ID' => :ci_pipeline_id,
111
- 'CI_PIPELINE_URL' => :ci_pipeline_url,
112
- 'CI_PIPELINE_CREATED_AT' => :ci_pipeline_created_at,
113
- 'CI_MERGE_REQUEST_IID' => :ci_merge_request_iid,
114
- 'GITLAB_CI' => :gitlab_ci,
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
- 'GITLAB_QA_LOOP_RUNNER_MINUTES' => :gitlab_qa_loop_runner_minutes,
117
- 'MAILHOG_HOSTNAME' => :mailhog_hostname,
118
- 'GITLAB_QA_FORMLESS_LOGIN_TOKEN' => :gitlab_qa_formless_login_token,
119
- 'GEO_MAX_FILE_REPLICATION_TIME' => :geo_max_file_replication_time,
120
- 'GEO_MAX_DB_REPLICATION_TIME' => :geo_max_db_replication_time,
121
- 'JIRA_HOSTNAME' => :jira_hostname,
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
- 'AWS_S3_REGION' => :aws_s3_region,
130
- 'AWS_S3_KEY_ID' => :aws_s3_key_id,
131
- 'AWS_S3_ACCESS_KEY' => :aws_s3_access_key,
132
- 'AWS_S3_BUCKET_NAME' => :aws_s3_bucket_name,
133
- 'TOP_UPSTREAM_MERGE_REQUEST_IID' => :top_upstream_merge_request_iid,
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
- 'GCS_CDN_BUCKET_NAME' => :gcs_cdn_bucket_name,
142
- 'GCS_BUCKET_NAME' => :gcs_bucket_name,
143
- 'SMOKE_ONLY' => :smoke_only,
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
- 'RELEASE_REGISTRY_PASSWORD' => :release_registry_password,
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
- 'SCHEDULE_TYPE' => :schedule_type,
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
@@ -392,9 +392,7 @@ module Gitlab
392
392
  live_envs = %w[staging staging-canary staging-ref canary preprod production]
393
393
  return unless live_envs.include?(ci_project_name)
394
394
 
395
- test_subset = if env_var_value_if_defined('NO_ADMIN') == 'true'
396
- 'sanity-no-admin'
397
- elsif env_var_value_if_defined('SMOKE_ONLY') == 'true'
395
+ test_subset = if env_var_value_if_defined('SMOKE_ONLY') == 'true'
398
396
  'sanity'
399
397
  else
400
398
  'full'
@@ -403,6 +401,13 @@ module Gitlab
403
401
  "#{ci_project_name}-#{test_subset}"
404
402
  end
405
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
+
406
411
  def docker_add_hosts
407
412
  (env_var_value_if_defined('QA_DOCKER_ADD_HOSTS') || '').split(',')
408
413
  end
@@ -21,7 +21,7 @@ module Gitlab
21
21
  end
22
22
 
23
23
  def prepare
24
- minio.network = 'test'
24
+ minio.network = Runtime::Env.docker_network
25
25
 
26
26
  TYPES.each do |bucket_name|
27
27
  minio.add_bucket("#{bucket_name}-bucket")
@@ -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 = 'test'
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,
@@ -17,7 +17,7 @@ module Gitlab
17
17
  Component::Gitlab.perform do |gitlab|
18
18
  gitlab.release = release
19
19
  gitlab.volumes = @volumes
20
- gitlab.network = 'test'
20
+ gitlab.network = Runtime::Env.docker_network
21
21
  gitlab.name = Runtime::Env.qa_gitlab_hostname
22
22
  gitlab.seed_admin_token = @seed_admin_token
23
23
  gitlab.tls = Runtime::Env.qa_gitlab_use_tls?
@@ -9,7 +9,7 @@ module Gitlab
9
9
  def perform(release, *rspec_args)
10
10
  Component::Gitlab.perform do |gitlab|
11
11
  gitlab.release = release
12
- gitlab.network = 'test'
12
+ gitlab.network = Runtime::Env.docker_network
13
13
  gitlab.relative_path = '/relative'
14
14
 
15
15
  gitlab.omnibus_configuration << "external_url '#{gitlab.address}'"
@@ -10,7 +10,7 @@ module Gitlab
10
10
  Component::Gitlab.perform do |gitlab|
11
11
  gitlab.release = QA::Release.new(release)
12
12
  gitlab.name = 'gitlab'
13
- gitlab.network = 'test'
13
+ gitlab.network = Runtime::Env.docker_network
14
14
  gitlab.omnibus_configuration << gitlab_omnibus_configuration
15
15
  cluster = Component::GitalyCluster.perform do |c|
16
16
  c.config = Component::GitalyCluster::GitalyClusterConfig.new(gitlab_name: 'gitlab')
@@ -10,7 +10,7 @@ module Gitlab
10
10
  SETUP_DEST_PATH = '/tmp/setup-scripts'
11
11
 
12
12
  def initialize
13
- @network = 'test'
13
+ @network = Runtime::Env.docker_network
14
14
  @ai_gateway_name = 'ai-gateway'
15
15
  @ai_gateway_hostname = "#{@ai_gateway_name}.#{@network}"
16
16
  @ai_gateway_port = 5000
@@ -42,6 +42,7 @@ module Gitlab
42
42
  gitlab.network = @network
43
43
 
44
44
  gitlab.omnibus_gitlab_rails_env['AI_GATEWAY_URL'] = "http://#{@ai_gateway_hostname}:#{@ai_gateway_port}"
45
+ gitlab.omnibus_gitlab_rails_env['LLM_DEBUG'] = 'true'
45
46
 
46
47
  gitlab.set_ee_activation_code if @use_cloud_license
47
48
  end
@@ -9,7 +9,7 @@ module Gitlab
9
9
  def initialize
10
10
  @gitlab_name = 'gitlab'
11
11
  @spec_suite = 'Test::Instance::All'
12
- @network = 'test'
12
+ @network = Runtime::Env.docker_network
13
13
  @env = {}
14
14
  @tag = 'client_ssl'
15
15
  end
@@ -26,7 +26,7 @@ module Gitlab
26
26
  setup_elasticsearch_on gitlab
27
27
 
28
28
  Component::Elasticsearch.perform do |elastic|
29
- elastic.network = 'test'
29
+ elastic.network = Runtime::Env.docker_network
30
30
  elastic.instance do
31
31
  gitlab.instance do
32
32
  Runtime::Logger.info("Running #{spec_suite} specs!")
@@ -49,7 +49,7 @@ module Gitlab
49
49
 
50
50
  def setup_elasticsearch_on(instance)
51
51
  instance.name = gitlab_name
52
- instance.network = 'test'
52
+ instance.network = Runtime::Env.docker_network
53
53
  instance.elastic_url = 'http://elastic68:9200'
54
54
  instance.exec_commands = empty_index
55
55
  end
@@ -8,7 +8,7 @@ module Gitlab
8
8
  class GitlabPages < Scenario::Template
9
9
  def initialize
10
10
  @gitlab_name = 'gitlab-pages'
11
- @network = 'test'
11
+ @network = Runtime::Env.docker_network
12
12
  @pages_host = 'gitlab-pages.test'
13
13
  @pages_sandbox_name = 'gitlab-qa-sandbox-group-pages'
14
14
  @tag = 'gitlab_pages'
@@ -14,7 +14,7 @@ module Gitlab
14
14
  #
15
15
  class Import < Scenario::Template
16
16
  def initialize
17
- @network = "test"
17
+ @network = Runtime::Env.docker_network
18
18
  @source_gitlab = Component::Gitlab.new.tap { |gitlab| gitlab.network = @network }
19
19
  @target_gitlab = Component::Gitlab.new.tap { |gitlab| gitlab.network = @network }
20
20
  @mock_server = Component::MockServer.new.tap do |server|
@@ -9,7 +9,7 @@ module Gitlab
9
9
  def perform(release, *rspec_args)
10
10
  Component::Gitlab.perform do |gitlab|
11
11
  gitlab.release = QA::Release.new(release)
12
- gitlab.network = 'test'
12
+ gitlab.network = Runtime::Env.docker_network
13
13
  gitlab.name = 'gitlab-integrations'
14
14
  gitlab.instance do
15
15
  Component::Specs.perform do |specs|
@@ -9,7 +9,7 @@ module Gitlab
9
9
  def perform(release, *rspec_args)
10
10
  Component::Gitlab.perform do |gitlab|
11
11
  gitlab.release = QA::Release.new(release)
12
- gitlab.network = 'test'
12
+ gitlab.network = Runtime::Env.docker_network
13
13
  gitlab.name = 'gitlab-jira'
14
14
 
15
15
  Component::Jira.perform do |jira|
@@ -21,7 +21,7 @@ module Gitlab
21
21
 
22
22
  def initialize
23
23
  @ldap_name = 'ldap-server'
24
- @network = 'test'
24
+ @network = Runtime::Env.docker_network
25
25
  end
26
26
 
27
27
  def configure_omnibus(gitlab)
@@ -69,7 +69,7 @@ module Gitlab
69
69
  def orchestrate_ldap(&block)
70
70
  Component::LDAP.perform do |ldap|
71
71
  ldap.name = 'ldap-server'
72
- ldap.network = 'test'
72
+ ldap.network = Runtime::Env.docker_network
73
73
  ldap.set_gitlab_credentials
74
74
  ldap.tls = tls
75
75
 
@@ -81,7 +81,7 @@ module Gitlab
81
81
  Component::Gitlab.perform do |gitlab|
82
82
  gitlab.release = release
83
83
  gitlab.name = gitlab_name
84
- gitlab.network = 'test'
84
+ gitlab.network = Runtime::Env.docker_network
85
85
  gitlab.tls = tls
86
86
  configure_omnibus(gitlab)
87
87
 
@@ -9,7 +9,7 @@ module Gitlab
9
9
  def perform(release, *rspec_args)
10
10
  Component::Gitlab.perform do |gitlab|
11
11
  gitlab.release = release
12
- gitlab.network = 'test'
12
+ gitlab.network = Runtime::Env.docker_network
13
13
 
14
14
  mattermost_hostname = "mattermost.#{gitlab.network}"
15
15
  mattermost_external_url = "http://#{mattermost_hostname}"
@@ -12,7 +12,7 @@ module Gitlab
12
12
  def perform(release, *rspec_args)
13
13
  Component::Gitlab.perform do |gitlab|
14
14
  gitlab.release = release
15
- gitlab.network = 'test'
15
+ gitlab.network = Runtime::Env.docker_network
16
16
  gitlab.name = 'gitlab'
17
17
  gitlab.ports = [PUMA_METRICS_SERVER_PORT, SIDEKIQ_METRICS_SERVER_PORT]
18
18
 
@@ -10,7 +10,7 @@ module Gitlab
10
10
  @gitlab_name = 'gitlab'
11
11
  @gitaly_name = 'gitaly'
12
12
  @spec_suite = 'Test::Instance::All'
13
- @network = 'test'
13
+ @network = Runtime::Env.docker_network
14
14
  @env = {}
15
15
  @tag = 'mtls'
16
16
  end
@@ -27,7 +27,7 @@ module Gitlab
27
27
  setup_opensearch_on gitlab
28
28
 
29
29
  Component::Opensearch.perform do |opensearch|
30
- opensearch.network = 'test'
30
+ opensearch.network = Runtime::Env.docker_network
31
31
  opensearch.instance do
32
32
  gitlab.instance do
33
33
  Runtime::Logger.info("Running #{spec_suite} specs!")
@@ -50,7 +50,7 @@ module Gitlab
50
50
 
51
51
  def setup_opensearch_on(instance)
52
52
  instance.name = gitlab_name
53
- instance.network = 'test'
53
+ instance.network = Runtime::Env.docker_network
54
54
  instance.elastic_url = "http://elastic68:9200"
55
55
  instance.exec_commands = empty_index
56
56
  end
@@ -9,7 +9,7 @@ module Gitlab
9
9
  def perform(release, *rspec_args)
10
10
  Component::Gitlab.perform do |gitlab|
11
11
  gitlab.release = release
12
- gitlab.network = 'test'
12
+ gitlab.network = Runtime::Env.docker_network
13
13
  gitlab.name = 'gitlab'
14
14
 
15
15
  gitlab.omnibus_configuration << <<~OMNIBUS
@@ -9,7 +9,7 @@ module Gitlab
9
9
  def perform(release, *rspec_args)
10
10
  Component::Gitlab.perform do |gitlab|
11
11
  gitlab.release = release
12
- gitlab.network = 'test'
12
+ gitlab.network = Runtime::Env.docker_network
13
13
  gitlab.name = 'gitlab'
14
14
  gitlab.tls = true
15
15
 
@@ -11,9 +11,9 @@ module Gitlab
11
11
 
12
12
  Component::Gitlab.perform do |gitlab|
13
13
  gitlab.release = release
14
- gitlab.network = 'test'
14
+ gitlab.network = Runtime::Env.docker_network
15
15
  gitlab.name = 'gitlab'
16
- gitlab.seed_admin_token = false
16
+ gitlab.seed_admin_token = true
17
17
  sign_url_key_path = gitlab.create_key_file('GOOGLE_CDN_SIGNURL_KEY')
18
18
  cdn_gcloud_path = gitlab.create_key_file('GOOGLE_CDN_JSON_KEY')
19
19
 
@@ -18,19 +18,19 @@ module Gitlab
18
18
  # no-op
19
19
  end
20
20
 
21
- def perform(release, *rspec_args)
21
+ def perform(release, *rspec_args) # rubocop:disable Metrics/AbcSize
22
22
  release = QA::Release.new(release)
23
23
  before_perform(release)
24
24
 
25
25
  Component::Gitlab.perform do |gitlab|
26
26
  gitlab.release = release
27
- gitlab.network = 'test'
27
+ gitlab.network = Runtime::Env.docker_network
28
28
  gitlab.name = gitlab_name
29
29
  gitlab.set_accept_insecure_certs
30
30
 
31
31
  if saml_component
32
32
  Component::SAML.perform do |saml|
33
- saml.network = 'test'
33
+ saml.network = Runtime::Env.docker_network
34
34
  configure(gitlab, saml)
35
35
 
36
36
  saml.instance do
@@ -9,7 +9,7 @@ module Gitlab
9
9
  def perform(release, *rspec_args)
10
10
  Component::Gitlab.perform do |gitlab|
11
11
  gitlab.release = release
12
- gitlab.network = 'test'
12
+ gitlab.network = Runtime::Env.docker_network
13
13
 
14
14
  gitlab.omnibus_configuration << <<~OMNIBUS
15
15
  gitlab_rails['usage_ping_enabled'] = false;
@@ -28,7 +28,7 @@ module Gitlab
28
28
 
29
29
  Component::Gitlab.perform do |gitlab|
30
30
  gitlab.release = release
31
- gitlab.network = 'test'
31
+ gitlab.network = Runtime::Env.docker_network
32
32
  gitlab.name = gitlab_name
33
33
 
34
34
  Component::MailHog.perform do |mail_hog|
@@ -10,7 +10,7 @@ module Gitlab
10
10
 
11
11
  def initialize
12
12
  @spec_suite = 'Test::Instance::All'
13
- @network = 'test'
13
+ @network = Runtime::Env.docker_network
14
14
  @env = {}
15
15
  @tag = 'suggested_reviewer'
16
16
  @gitlab_name = 'gitlab-suggested-reviewer'
@@ -79,7 +79,7 @@ module Gitlab
79
79
  Component::Gitlab.perform do |gitlab|
80
80
  gitlab.release = release
81
81
  gitlab.volumes = volumes
82
- gitlab.network = 'test'
82
+ gitlab.network = Runtime::Env.docker_network
83
83
 
84
84
  if skip_setup
85
85
  gitlab.skip_server_hooks = true
@@ -82,9 +82,9 @@ module Gitlab
82
82
  # @return [String]
83
83
  def upgrade_path_yml
84
84
  @upgrade_path_yml ||= begin
85
- logger.info("Fetching gitlab upgrade path from 'gitlab-com/support/toolbox/upgrade-path' project")
85
+ logger.info("Fetching gitlab upgrade path from 'gitlab.com/gitlab-org/gitlab' project")
86
86
  HttpRequest.make_http_request(
87
- url: "https://gitlab.com/gitlab-com/support/toolbox/upgrade-path/-/raw/main/upgrade-path.yml"
87
+ url: "https://gitlab.com/gitlab-org/gitlab/-/raw/master/config/upgrade_path.yml"
88
88
  ).body
89
89
  end
90
90
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gitlab
4
4
  module QA
5
- VERSION = '14.10.0'
5
+ VERSION = '14.11.0'
6
6
  end
7
7
  end
@@ -119,7 +119,6 @@ module RuboCop
119
119
  'GCS_CDN_BUCKET_NAME' => :gcs_cdn_bucket_name,
120
120
  'GCS_BUCKET_NAME' => :gcs_bucket_name,
121
121
  'SMOKE_ONLY' => :smoke_only,
122
- 'NO_ADMIN' => :no_admin,
123
122
  'CHROME_DISABLE_DEV_SHM' => :chrome_disable_dev_shm,
124
123
  'COLORIZED_LOGS' => :colorized_logs,
125
124
  'FIPS' => :fips,
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: 14.10.0
4
+ version: 14.11.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: 2024-05-12 00:00:00.000000000 Z
11
+ date: 2024-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: climate_control
@@ -409,7 +409,6 @@ files:
409
409
  - lib/gitlab/qa/component/staging.rb
410
410
  - lib/gitlab/qa/component/staging_ref.rb
411
411
  - lib/gitlab/qa/component/suggested_reviewer.rb
412
- - lib/gitlab/qa/component/telegraf.rb
413
412
  - lib/gitlab/qa/docker/command.rb
414
413
  - lib/gitlab/qa/docker/engine.rb
415
414
  - lib/gitlab/qa/docker/volumes.rb
@@ -442,7 +441,6 @@ files:
442
441
  - lib/gitlab/qa/scenario/test/instance/repository_storage.rb
443
442
  - lib/gitlab/qa/scenario/test/instance/smoke.rb
444
443
  - lib/gitlab/qa/scenario/test/instance/staging.rb
445
- - lib/gitlab/qa/scenario/test/instance/staging_geo.rb
446
444
  - lib/gitlab/qa/scenario/test/instance/staging_ref.rb
447
445
  - lib/gitlab/qa/scenario/test/instance/staging_ref_geo.rb
448
446
  - lib/gitlab/qa/scenario/test/integration/ai_gateway.rb
@@ -480,7 +478,6 @@ files:
480
478
  - lib/gitlab/qa/scenario/test/omnibus/image.rb
481
479
  - lib/gitlab/qa/scenario/test/omnibus/update_from_previous.rb
482
480
  - lib/gitlab/qa/scenario/test/omnibus/upgrade.rb
483
- - lib/gitlab/qa/scenario/test/sanity/version.rb
484
481
  - lib/gitlab/qa/service/cluster_provider/base.rb
485
482
  - lib/gitlab/qa/service/cluster_provider/k3d.rb
486
483
  - lib/gitlab/qa/service/kubernetes_cluster.rb
@@ -1,175 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'tempfile'
4
-
5
- module Gitlab
6
- module QA
7
- module Component
8
- # Component to collect docker metrics
9
- #
10
- class Telegraf < Base
11
- DOCKER_IMAGE = 'telegraf'
12
- DOCKER_IMAGE_TAG = '1.21-alpine'
13
- LOG_DIR = '/etc/telegraf/log'
14
-
15
- def initialize
16
- super
17
-
18
- @name = DOCKER_IMAGE
19
- @host_log_dir = "#{Runtime::Env.host_artifacts_dir}/#{@name}"
20
- @environment = Runtime::Env.variables.slice(
21
- 'QA_INFLUXDB_TOKEN',
22
- 'QA_INFLUXDB_URL',
23
- 'QA_RUN_TYPE',
24
- 'CI_JOB_NAME',
25
- 'CI_PIPELINE_ID'
26
- )
27
- end
28
-
29
- attr_reader :name, :host_log_dir, :telegraf_config
30
-
31
- # Start container
32
- #
33
- # @return [void]
34
- def start
35
- docker.run(image: image, tag: tag) do |command|
36
- set_command_args(command)
37
- set_volumes(command)
38
- set_environment(command)
39
- end
40
- end
41
-
42
- # Run prepare commands
43
- #
44
- # @return [void]
45
- def prepare
46
- @telegraf_config = File.open("#{Dir.mktmpdir(nil, ENV.fetch('CI_BUILDS_DIR', nil))}/telegraf.conf",
47
- 'w') do |file|
48
- file.write(config)
49
- file.path
50
- end
51
- FileUtils.mkdir_p(host_log_dir)
52
-
53
- prepare_docker_image
54
- prepare_docker_container
55
- end
56
-
57
- # Run teardown
58
- #
59
- # @return [void]
60
- def teardown
61
- return unless run_telegraf?
62
-
63
- super
64
- end
65
-
66
- private
67
-
68
- # Set custom run command arguments
69
- #
70
- # @param [Docker::Command] command
71
- # @return [void]
72
- def set_command_args(command)
73
- command << '-d'
74
- command << "--name #{name}"
75
- command << "--user root"
76
- command << "--entrypoint telegraf"
77
- end
78
-
79
- # Set volumes
80
- #
81
- # @param [Docker::Command] command
82
- # @return [void]
83
- def set_volumes(command)
84
- command.volume(host_log_dir, LOG_DIR)
85
- command.volume('/var/run/docker.sock', '/var/run/docker.sock')
86
- command.volume(telegraf_config, '/etc/telegraf/telegraf.conf', :ro)
87
- end
88
-
89
- # Set environment variables
90
- #
91
- # @param [Docker::Command] command
92
- # @return [void]
93
- def set_environment(command)
94
- environment.each { |k, v| command.env(k, v) }
95
- end
96
-
97
- # Run main entrypoint
98
- #
99
- # @return [void]
100
- def instance_no_teardown
101
- if run_telegraf?
102
- super
103
- else
104
- Runtime::Logger.debug("Skipping starting telegraf container!")
105
- yield self if block_given?
106
- end
107
- end
108
-
109
- # Should telegraf be started
110
- #
111
- # Run only on CI and skip if metrics explicitly disabled, run_type not set or influx params missing
112
- #
113
- # @return [Boolean]
114
- def run_telegraf?
115
- Runtime::Env.ci && Runtime::Env.qa_export_test_metrics? && Runtime::Env.qa_run_type && !missing_influx_config?
116
- end
117
-
118
- # Influxdb config params missing
119
- #
120
- # @return [Boolean]
121
- def missing_influx_config?
122
- environment.slice('QA_INFLUXDB_TOKEN', 'QA_INFLUXDB_URL').any? { |_k, v| v.blank? }
123
- end
124
-
125
- # Telegraf configuration
126
- #
127
- # @return [String]
128
- def config
129
- <<~CONFIG
130
- [global_tags]
131
- run_type = "${QA_RUN_TYPE}"
132
- pipeline_id = "${CI_PIPELINE_ID}"
133
- job_name = "${CI_JOB_NAME}"
134
-
135
- [agent]
136
- interval = "1s"
137
- round_interval = true
138
- metric_batch_size = 1000
139
- metric_buffer_limit = 10000
140
- collection_jitter = "0s"
141
- flush_interval = "10s"
142
- flush_jitter = "0s"
143
- precision = ""
144
- debug = true
145
- logtarget = "file"
146
- logfile = "#{LOG_DIR}/telegraf.log"
147
- hostname = ""
148
- omit_hostname = false
149
-
150
- [[outputs.influxdb_v2]]
151
- urls = ["${QA_INFLUXDB_URL}"]
152
- token = "${QA_INFLUXDB_TOKEN}"
153
- organization = "gitlab-qa"
154
- bucket = "test-env-stats"
155
-
156
- [[inputs.docker]]
157
- endpoint = "unix:///var/run/docker.sock"
158
- gather_services = false
159
- container_names = []
160
- source_tag = false
161
- container_name_include = []
162
- container_name_exclude = ["#{name}"]
163
- timeout = "5s"
164
- perdevice = false
165
- perdevice_include = []
166
- total = true
167
- total_include = ["cpu", "blkio", "network"]
168
- docker_label_include = []
169
- docker_label_exclude = []
170
- CONFIG
171
- end
172
- end
173
- end
174
- end
175
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Gitlab
4
- module QA
5
- module Scenario
6
- module Test
7
- module Instance
8
- ##
9
- # Run test suite against staging.gitlab.com
10
- #
11
- class StagingGeo < DeploymentBase
12
- def initialize
13
- @suite = 'QA::EE::Scenario::Test::Geo'
14
- end
15
-
16
- def deployment_component
17
- Component::Staging
18
- end
19
-
20
- def non_rspec_args
21
- [
22
- '--primary-address', deployment_component::ADDRESS,
23
- '--secondary-address', deployment_component::GEO_SECONDARY_ADDRESS,
24
- '--without-setup'
25
- ]
26
- end
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,93 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'json'
4
- require 'net/http'
5
- require 'cgi'
6
- require 'time'
7
-
8
- module Gitlab
9
- module QA
10
- module Scenario
11
- module Test
12
- module Sanity
13
- # This test checks that the sha_version of a GitLab was authored in
14
- # the window defined by the `weekday_hours` method.
15
- # We perform a single API call to get the commit
16
- class Version < Scenario::Template
17
- SOURCE_MAP = {
18
- 'git@dev.gitlab.org:gitlab/gitlab-ee.git' => {
19
- host: 'dev.gitlab.org',
20
- project: 'gitlab/gitlab-ee'
21
- },
22
- 'git@dev.gitlab.org:gitlab/gitlabhq.git' => {
23
- host: 'dev.gitlab.org',
24
- project: 'gitlab/gitlabhq'
25
- },
26
- 'git@gitlab.com:gitlab-org/gitlab.git' => {
27
- host: 'gitlab.com',
28
- project: 'gitlab-org/gitlab'
29
- },
30
- 'git@gitlab.com:gitlab-org/gitlab-foss.git' => {
31
- host: 'gitlab.com',
32
- project: 'gitlab-org/gitlab-foss'
33
- }
34
- }.freeze
35
-
36
- def perform(release = 'ce')
37
- version = Component::Gitlab.perform do |gitlab|
38
- gitlab.release = release
39
- gitlab.act do
40
- pull
41
- rails_version
42
- end
43
- end
44
-
45
- project = SOURCE_MAP[version[:source]][:project]
46
- host = SOURCE_MAP[version[:source]][:host]
47
- sha = version[:sha]
48
- commit = api_commit_detail(host, project, sha)
49
-
50
- if commit_within_hours?(commit['created_at'], weekday_hours(commit['created_at']))
51
- puts "Found commit #{sha} in recent history of #{project} on #{host}"
52
- else
53
- puts "Did not find #{sha} in recent history of #{project} on #{host}"
54
- exit 1
55
- end
56
- end
57
-
58
- private
59
-
60
- def weekday_hours(date_string)
61
- case Date.parse(date_string).wday
62
- # Sunday
63
- when 0
64
- 48
65
- # Monday
66
- when 1
67
- 72
68
- else
69
- 24
70
- end
71
- end
72
-
73
- def commit_within_hours?(commit_time_string, hours)
74
- Time.at(Time.parse(commit_time_string).utc).to_datetime > Time.at((Time.now - (hours * 60 * 60)).utc).to_datetime
75
- end
76
-
77
- def api_commit_detail(host, project, sha)
78
- url = "https://#{host}/api/v4/projects/#{CGI.escape(project)}/repository/commits/#{sha}"
79
-
80
- if host == 'dev.gitlab.org'
81
- Runtime::Env.require_qa_dev_access_token!
82
-
83
- url = "#{url}?private_token=#{Runtime::Env.qa_dev_access_token}"
84
- end
85
-
86
- JSON.parse(Net::HTTP.get(URI(url)))
87
- end
88
- end
89
- end
90
- end
91
- end
92
- end
93
- end