gitlab-qa 14.10.0 → 14.11.0

Sign up to get free protection for your applications and to get access to all the features.
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