gitlab-qa 7.21.0 → 7.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7df136e02dc7640dd456d9e6f0f089cfdf105c7e8d4983ee41e487081eadb3eb
4
- data.tar.gz: 9ab31d33024c1a2e6826213028e4a1f1c3ab69c8ece4d230be79a4f3b1f15108
3
+ metadata.gz: 2f7604899a14fd7faaae2ee398b5b0769df8dde4badfd2123fa27993b1a0cbda
4
+ data.tar.gz: c3fea270e1583201349b1c73c10aab49a5db9c969714ab842ab21436155c8d96
5
5
  SHA512:
6
- metadata.gz: 5420d4ffea08d120903f51fa9d590b20cfee1686ecdff384ac2ff931ba1ead170409a412e3c45cb96f6310359540d245624bf05fce654f106030550d68ff8928
7
- data.tar.gz: 459ce3e23b1113bcb52b2413d6cae58dc9946976e7615833fd5fbe9d0b979d0894c964fc6565cb2a0e13e9953369c4073b6a5ec00510b24edec3cd4b2ad00a61
6
+ metadata.gz: 404e72b88f829f186a99bf2302fa92161b5267494b6ac3e91209c19882da58f348814394a5c23f02edfa3462715bcc4b4b5e136d2bd13c1e5bfa6c475f164c6c
7
+ data.tar.gz: f043de46cddd1b120fbd972224e4eef339b3b22acfd25e28e972e9407c93d38c65234d4c67049d517366b5bbf2b54177da5cc336615cdb1ee4af572c9ba9467c
data/.gitlab-ci.yml CHANGED
@@ -95,7 +95,11 @@ rspec:
95
95
  .combined-gitlab-qa-options-script:
96
96
  script:
97
97
  - 'echo "Running: bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS_COMBINED -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS"'
98
- - bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS_COMBINED -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS
98
+ - bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS_COMBINED -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS || test_run_exit_code=$?
99
+ - bundle exec exe/gitlab-qa-report --update-screenshot-path "gitlab-qa-run-*/**/rspec-*.xml"
100
+ - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
101
+ - if [ "$TOP_UPSTREAM_SOURCE_REF" == $TOP_UPSTREAM_DEFAULT_BRANCH ] || [[ "$TOP_UPSTREAM_SOURCE_JOB" == https://ops.gitlab.net* ]]; then exe/gitlab-qa-report --report-results "gitlab-qa-run-*/**/rspec-*.json" --test-case-project "$QA_TESTCASES_REPORTING_PROJECT" --results-issue-project "$QA_TEST_RESULTS_ISSUES_PROJECT" || true; fi
102
+ - exit $test_run_exit_code
99
103
 
100
104
  # The Test::Omnibus::Update scenarios require the release to be specified twice, which can't be done dynamically using the `variables` parameter
101
105
  # So instead we can use this script with two release variables
@@ -1186,6 +1190,21 @@ ee:jira-quarantine:
1186
1190
  variables:
1187
1191
  QA_SCENARIO: "Test::Integration::Jira"
1188
1192
 
1193
+ ce:integrations:
1194
+ extends:
1195
+ - .rules:ce-never-when-triggered-by-feature-flag-definition-change
1196
+ - .test
1197
+ - .high-capacity
1198
+ - .ce-variables
1199
+ - .rspec-report-opts
1200
+ variables:
1201
+ QA_SCENARIO: "Test::Integration::Integrations"
1202
+
1203
+ ce:integrations-quarantine:
1204
+ extends:
1205
+ - ce:integrations
1206
+ - .quarantine
1207
+
1189
1208
  ce:large-setup:
1190
1209
  extends:
1191
1210
  - .rules:ce-never-when-triggered-by-feature-flag-definition-change
data/README.md CHANGED
@@ -88,7 +88,6 @@ of tests.
88
88
  - [How it works](docs/how_it_works.md)
89
89
  - [Release process](docs/release_process.md)
90
90
  - [Run QA tests against your GDK setup](docs/run_qa_against_gdk.md)
91
- - [Running specific orchestrated tests](docs/running_specific_orchestrated_tests.md)
92
91
  - [Trainings](docs/trainings.md)
93
92
  - [Waits](docs/waits.md)
94
93
  - [What tests can be run?](docs/what_tests_can_be_run.md)
@@ -82,6 +82,7 @@ All environment variables used by GitLab QA should be defined in [`lib/gitlab/qa
82
82
  | `QA_INFLUXDB_URL` |- | Influxdb url for test metrics reporting | No|
83
83
  | `QA_INFLUXDB_TOKEN` |- | Influxdb token for test metrics reporting | No|
84
84
  | `QA_RUN_TYPE` |- | QA run type like `staging-full`, `canary`, `production` etc. Used in test metrics reporting | No|
85
+ | `QA_VALIDATE_RESOURCE_REUSE` | `false` | Set to `true` to [validate resource reuse](https://docs.gitlab.com/ee/development/testing_guide/end_to_end/resources.html#reusable-resources) after a test suite | No |
85
86
  | `GITHUB_USERNAME` |- | Username for authenticating with GitHub. | No|
86
87
  | `GITHUB_PASSWORD` |- | Password for authenticating with GitHub. | No|
87
88
  | `GITLAB_QA_LOOP_RUNNER_MINUTES` | `1` | Minutes to run and repeat a spec while using the '--loop' option; default value is 1 minute. | No|
@@ -95,6 +96,7 @@ All environment variables used by GitLab QA should be defined in [`lib/gitlab/qa
95
96
  | `GITLAB_QA_USER_AGENT` |- | The browser user-agent to use instead of the default Chrome user-agent. | No|
96
97
  | `GEO_FAILOVER` | `false` | Set to `true` when a Geo secondary site has been promoted to a Geo primary site. | No|
97
98
  | `GITLAB_INITIAL_ROOT_PASSWORD` | `5iveL!fe` | Initial root password for Omnibus installations | No|
99
+ | `COLORIZED_LOGS` | `false` | Colors GitLab QA and test logs to improve readability | No|
98
100
 
99
101
  ## [Supported Remote Grid environment variables](./running_against_remote_grid.md)
100
102
 
@@ -664,6 +666,20 @@ Example:
664
666
  $ gitlab-qa Test::Integration::Actioncable CE
665
667
  ```
666
668
 
669
+ ### `Test::Integration::Integrations CE|<full image address>`
670
+
671
+ This scenario is intended to test the different integrations that a GitLab instance can offer, such as WebHooks to an external service, Jenkins, etc.
672
+
673
+ To run tests against the GitLab container, a GitLab QA (`gitlab/gitlab-qa`)
674
+ container is spun up and tests are run from it by running the
675
+ `Test::Integration::Integrations` scenario.
676
+
677
+ Example:
678
+
679
+ ```
680
+ $ gitlab-qa Test::Integration::Integrations CE
681
+ ```
682
+
667
683
  ### `Test::Instance::Any CE|EE|<full image address>:nightly|latest|any_tag http://your.instance.gitlab`
668
684
 
669
685
  This tests that a live GitLab instance works as expected by running tests
@@ -877,12 +893,39 @@ $ gitlab-qa Test::Instance::Airgapped EE -- --tag smoke
877
893
 
878
894
  ### `Test::Instance::Image CE|EE|<full image address> --omnibus-config object_storage`
879
895
 
880
- This orchestrated scenario runs tests from the test suite against a GitLab instance which has object storage configured instead of using local storage. The omnibus configuration `object_storage` ([configurator](configuring_omnibus.md)), uses Minio and `object_storage_aws` uses an AWS S3 account with credentials configured in the pipeline as CI Variables (available on 1Password). Requires:
896
+ This orchestrated scenario runs tests from the test suite against a GitLab instance which has object storage configured instead of using local storage. The omnibus configuration `object_storage` ([configurator](configuring_omnibus.md)), uses Minio and `object_storage_aws` uses an AWS S3 account with credentials configured in the pipeline as CI Variables. To use Google Cloud Storage pass `--omnibus-config object_storage_gcp`. According to the storage selected it requires:
897
+
898
+ | Scenario | Variable | Description |
899
+ |-----------------------|---------------------|--------------------------------------|
900
+ | AWS S3 Object Storage | AWS_S3_REGION | AWS region where bucket is created |
901
+ | AWS S3 Object Storage | AWS_S3_KEY_ID | AWS credentials |
902
+ | AWS S3 Object Storage | AWS_S3_ACCESS_KEY | AWS credentials |
903
+ | AWS S3 Object Storage | AWS_S3_BUCKET_NAME | Name of the bucket set in AWS |
904
+ | GCP Object Storage | GCS_BUCKET_NAME | Name of the bucket set in AWS |
905
+ | GCP Object Storage | GOOGLE_JSON_KEY | JSON key credential |
906
+ | GCP Object Storage | GOOGLE_CLIENT_EMAIL | Email address of the service account |
907
+ | GCP Object Storage | GOOGLE_PROJECT | GCP project name |
908
+
909
+ These variables are available at 1Password QA Vault.
910
+
911
+ ### `Test::Integration::RegistryTLS EE`
912
+
913
+ It requires GitLab's TLS certificate found on the [`tls_certificates`](https://gitlab.com/gitlab-org/gitlab-qa/-/blob/master/tls_certificates/gitlab/gitlab.test.crt) folder
914
+ ```
915
+ $ export GITLAB_TLS_CERTIFICATE=$(cat /path/to/certificate.crt)
916
+ ```
917
+
918
+ To run a scenario with an insecure registry enabled use `Test::Integration::Registry EE` instead (it does not require the above certificate).
919
+
920
+ ### Test::Integration::RegistryTLS EE --omnibus-config object_storage
921
+
922
+ This scenario is a composition of two orchestrated scenarios. It tests the container registry (TLS-enabled) integrated with an object storage backend.
923
+
924
+ An example would be to pass the option `--omnibus-config object_storage_aws` and the registry will be pulling and pushing images using AWS Cloud Storage as a storage backend.
881
925
 
882
- * `AWS_S3_REGION` - Region where the bucket is created. To optimize latency, minimize costs, or address regulatory requirements, choose any AWS Region that is geographically close to you.
883
- * `AWS_S3_KEY_ID` - Key ID for the user accessing the bucket.
884
- * `AWS_S3_ACCESS_KEY` - Access Key for the user accessing the bucket.
885
- * `AWS_S3_BUCKET_NAME` - The name of the bucket where objects are stored. After a bucket is created, the name of that bucket cannot be used by another AWS account in any AWS Region until the bucket is deleted.
926
+ ```
927
+ GITLAB_TLS_CERTIFICATE=$(cat /path/to/certificate.crt) gitlab-qa Test::Integration::RegistryTLS EE --omnibus-config object_storage_aws
928
+ ```
886
929
 
887
930
  ### `Test::Instance::Geo EE|<full image address>:nightly|latest|any_tag http://geo-primary.gitlab http://geo-secondary.gitlab`
888
931
 
data/gitlab-qa.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_development_dependency 'climate_control', '~> 0.2'
23
+ spec.add_development_dependency 'climate_control', '~> 1.0.1'
24
24
  spec.add_development_dependency 'gitlab-styles', '~> 6.2.1'
25
25
  spec.add_development_dependency 'pry', '~> 0.11'
26
26
  spec.add_development_dependency 'rake', '~> 13.0'
@@ -9,7 +9,7 @@ module Gitlab
9
9
  module Component
10
10
  class Minio < Base
11
11
  DOCKER_IMAGE = 'minio/minio'.freeze
12
- DOCKER_IMAGE_TAG = 'RELEASE.2021-09-15T04-54-25Z'.freeze
12
+ DOCKER_IMAGE_TAG = 'latest'.freeze
13
13
  # These are secrets used in a local Minio container, they're not used for any online S3 server.
14
14
  AWS_ACCESS_KEY = 'AKIAIOSFODNN7EXAMPLE'.freeze
15
15
  AWS_SECRET_KEY = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'.freeze
@@ -157,8 +157,8 @@ module Gitlab
157
157
  gather_services = false
158
158
  container_names = []
159
159
  source_tag = false
160
- container_name_include = ["gitlab-{ce,ee}-*", "gitlab-{ce,ee}-qa-*"]
161
- container_name_exclude = []
160
+ container_name_include = []
161
+ container_name_exclude = ["#{name}"]
162
162
  timeout = "5s"
163
163
  perdevice = false
164
164
  perdevice_include = []
@@ -25,7 +25,7 @@ module Gitlab
25
25
  end
26
26
 
27
27
  issue = gitlab.create_issue(
28
- title: "#{Time.now.strftime('%Y-%m-%d')} Test session report | #{pipeline}",
28
+ title: "#{Time.now.strftime('%Y-%m-%d')} Test session report | #{Runtime::Env.qa_run_type}",
29
29
  description: generate_description(tests),
30
30
  labels: ['Quality', 'QA', 'triage report', pipeline_name_label]
31
31
  )
@@ -55,6 +55,8 @@ module Gitlab
55
55
  #{generate_stages_listing(tests)}
56
56
 
57
57
  #{generate_qa_issue_relation}
58
+
59
+ #{generate_link_to_dashboard}
58
60
  MARKDOWN
59
61
  end
60
62
 
@@ -257,6 +259,16 @@ module Gitlab
257
259
  /relate #{Runtime::Env.qa_issue_url}
258
260
  MARKDOWN
259
261
  end
262
+
263
+ def generate_link_to_dashboard
264
+ return unless Runtime::Env.qa_run_type
265
+
266
+ <<~MARKDOWN.chomp
267
+ ## Link to Grafana dashboard for run-type of #{Runtime::Env.qa_run_type}
268
+
269
+ * https://dashboards.quality.gitlab.net/d/kuNYMgDnz/test-run-metrics?orgId=1&refresh=1m&var-run_type=#{Runtime::Env.qa_run_type}
270
+ MARKDOWN
271
+ end
260
272
  end
261
273
  end
262
274
  end
@@ -70,8 +70,8 @@ module Gitlab
70
70
  <<~MKDOWN.strip
71
71
  ### Executions
72
72
 
73
- package-and-qa:
74
- <img src="https://dashboards.quality.gitlab.net/render/d-solo/cW0UMgv7k/spec-health?orgId=1&var-run_type=package-and-qa&var-name=#{formatted_title}&panelId=4&width=1000&height=500" />
73
+ All Environments:
74
+ <img src="https://dashboards.quality.gitlab.net/render/d-solo/cW0UMgv7k/spec-health?orgId=1&var-run_type=All&var-name=#{formatted_title}&panelId=4&width=1000&height=500" />
75
75
  MKDOWN
76
76
  end
77
77
 
@@ -42,6 +42,7 @@ module Gitlab
42
42
  'QA_INFLUXDB_TOKEN' => :qa_influxdb_token,
43
43
  'QA_RUN_TYPE' => :qa_run_type,
44
44
  'QA_SKIP_PULL' => :qa_skip_pull,
45
+ 'QA_VALIDATE_RESOURCE_REUSE' => :qa_validate_resource_reuse,
45
46
  'GITLAB_API_BASE' => :api_base,
46
47
  'GITLAB_ADMIN_USERNAME' => :admin_username,
47
48
  'GITLAB_ADMIN_PASSWORD' => :admin_password,
@@ -306,6 +307,23 @@ module Gitlab
306
307
  enabled?(env_var_value_if_defined('QA_EXPORT_TEST_METRICS'), default: true)
307
308
  end
308
309
 
310
+ def qa_run_type
311
+ return env_var_value_if_defined('QA_RUN_TYPE') if env_var_value_valid?('QA_RUN_TYPE')
312
+
313
+ live_envs = %w[staging staging-canary staging-ref canary preprod production]
314
+ return unless live_envs.include?(ci_project_name)
315
+
316
+ test_subset = if env_var_value_if_defined('NO_ADMIN') == 'true'
317
+ 'sanity-no-admin'
318
+ elsif env_var_value_if_defined('SMOKE_ONLY') == 'true'
319
+ 'sanity'
320
+ else
321
+ 'full'
322
+ end
323
+
324
+ "#{ci_project_name}-#{test_subset}"
325
+ end
326
+
309
327
  private
310
328
 
311
329
  def enabled?(value, default: true)
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Gitlab
4
+ module QA
5
+ module Scenario
6
+ module Test
7
+ module Integration
8
+ class Integrations < Scenario::Template
9
+ def perform(release, *rspec_args)
10
+ Component::Gitlab.perform do |gitlab|
11
+ gitlab.release = QA::Release.new(release)
12
+ gitlab.network = 'test'
13
+ gitlab.name = 'gitlab-integrations'
14
+ gitlab.instance do
15
+ Component::Specs.perform do |specs|
16
+ rspec_args << '--' unless rspec_args.include?('--')
17
+ rspec_args << %w[--tag integrations]
18
+ specs.suite = 'Test::Instance::All'
19
+ specs.hostname = "qa-e2e-specs.#{gitlab.network}"
20
+ specs.release = gitlab.release
21
+ specs.network = gitlab.network
22
+ specs.args = [gitlab.address, *rspec_args]
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gitlab
4
4
  module QA
5
- VERSION = '7.21.0'
5
+ VERSION = '7.23.0'
6
6
  end
7
7
  end
data/lib/gitlab/qa.rb CHANGED
@@ -74,6 +74,7 @@ module Gitlab
74
74
  autoload :Registry, 'gitlab/qa/scenario/test/integration/registry'
75
75
  autoload :RegistryTLS, 'gitlab/qa/scenario/test/integration/registry_tls'
76
76
  autoload :ServicePingDisabled, 'gitlab/qa/scenario/test/integration/service_ping_disabled'
77
+ autoload :Integrations, 'gitlab/qa/scenario/test/integration/integrations'
77
78
  end
78
79
 
79
80
  module Sanity
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-qa
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.21.0
4
+ version: 7.23.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab Quality
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-28 00:00:00.000000000 Z
11
+ date: 2022-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: climate_control
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.2'
19
+ version: 1.0.1
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.2'
26
+ version: 1.0.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: gitlab-styles
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -228,7 +228,6 @@ files:
228
228
  - docs/release_process.md
229
229
  - docs/run_qa_against_gdk.md
230
230
  - docs/running_against_remote_grid.md
231
- - docs/running_specific_orchestrated_tests.md
232
231
  - docs/trainings.md
233
232
  - docs/waits.md
234
233
  - docs/what_tests_can_be_run.md
@@ -316,6 +315,7 @@ files:
316
315
  - lib/gitlab/qa/scenario/test/integration/gitaly_cluster.rb
317
316
  - lib/gitlab/qa/scenario/test/integration/group_saml.rb
318
317
  - lib/gitlab/qa/scenario/test/integration/instance_saml.rb
318
+ - lib/gitlab/qa/scenario/test/integration/integrations.rb
319
319
  - lib/gitlab/qa/scenario/test/integration/jira.rb
320
320
  - lib/gitlab/qa/scenario/test/integration/kubernetes.rb
321
321
  - lib/gitlab/qa/scenario/test/integration/ldap.rb
@@ -1,11 +0,0 @@
1
- # Running specific orchestrated tests
2
-
3
- ## Maven artifact spec
4
-
5
- The [maven repository spec](https://gitlab.com/gitlab-org/gitlab/-/blob/master/qa/qa/specs/features/ee/browser_ui/5_package/maven_repository_spec.rb) creates a Maven artifact and links it to a GitLab project. The artifact is created within a [Maven docker image](https://gitlab.com/gitlab-org/gitlab/-/blob/master/qa/qa/service/docker_run/maven.rb#L8).
6
-
7
- Using `gitlab-qa` to run these tests reduces the likelihood of network errors between the maven container and GitLab instance.
8
-
9
- To run this with `gitlab-qa` you can use the `Test::Instance::Image` that is needed for your test. For example:
10
-
11
- `gitlab-qa Test::Instance::Image registry.gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/gitlab-ee:2cb9a85d2beadd51b926eaddb05005403bee0013 -- --tag orchestrated qa/specs/features/ee/browser_ui/5_package/maven_repository_spec.rb` - runs the test against a specific Omnibus GitLab image that was built through `package-and-qa`.