gitlab-qa 7.24.6 → 7.26.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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/.gitlab/ci/jobs/actioncable.gitlab-ci.yml +41 -0
  3. data/.gitlab/ci/jobs/base.gitlab-ci.yml +281 -0
  4. data/.gitlab/ci/jobs/cloud_activation.gitlab-ci.yml +30 -0
  5. data/.gitlab/ci/jobs/custom_parallel.gitlab-ci.yml +21 -0
  6. data/.gitlab/ci/jobs/ee_previous_to_ce_update.gitlab-ci.yml +18 -0
  7. data/.gitlab/ci/jobs/elasticsearch.gitlab-ci.yml +20 -0
  8. data/.gitlab/ci/jobs/geo.gitlab-ci.yml +18 -0
  9. data/.gitlab/ci/jobs/gitaly_cluster.gitlab-ci.yml +45 -0
  10. data/.gitlab/ci/jobs/group_saml.gitlab-ci.yml +20 -0
  11. data/.gitlab/ci/jobs/instance.gitlab-ci.yml +55 -0
  12. data/.gitlab/ci/jobs/instance_saml.gitlab-ci.yml +41 -0
  13. data/.gitlab/ci/jobs/integrations.gitlab-ci.yml +14 -0
  14. data/.gitlab/ci/jobs/jira.gitlab-ci.yml +41 -0
  15. data/.gitlab/ci/jobs/large_setup.gitlab-ci.yml +19 -0
  16. data/.gitlab/ci/jobs/ldap_no_server.gitlab-ci.yml +20 -0
  17. data/.gitlab/ci/jobs/ldap_no_tls.gitlab-ci.yml +41 -0
  18. data/.gitlab/ci/jobs/ldap_tls.gitlab-ci.yml +41 -0
  19. data/.gitlab/ci/jobs/mattermost.gitlab-ci.yml +41 -0
  20. data/.gitlab/ci/jobs/mtls.gitlab-ci.yml +17 -0
  21. data/.gitlab/ci/jobs/object_storage.gitlab-ci.yml +49 -0
  22. data/.gitlab/ci/jobs/object_storage_aws.gitlab-ci.yml +25 -0
  23. data/.gitlab/ci/jobs/object_storage_gcs.gitlab-ci.yml +23 -0
  24. data/.gitlab/ci/jobs/object_storage_registry_tls.gitlab-ci.yml +41 -0
  25. data/.gitlab/ci/jobs/omnibus_image.gitlab-ci.yml +15 -0
  26. data/.gitlab/ci/jobs/omnibus_upgrade.gitlab-ci.yml +28 -0
  27. data/.gitlab/ci/jobs/packages.gitlab-ci.yml +25 -0
  28. data/.gitlab/ci/jobs/praefect.gitlab-ci.yml +71 -0
  29. data/.gitlab/ci/jobs/registry.gitlab-ci.yml +41 -0
  30. data/.gitlab/ci/jobs/registry_with_cdn.gitlab-ci.yml +43 -0
  31. data/.gitlab/ci/jobs/relative_url.gitlab-ci.yml +65 -0
  32. data/.gitlab/ci/jobs/repository_storage.gitlab-ci.yml +41 -0
  33. data/.gitlab/ci/jobs/sanity_framework.gitlab-ci.yml +24 -0
  34. data/.gitlab/ci/jobs/service_ping_disabled.gitlab-ci.yml +19 -0
  35. data/.gitlab/ci/jobs/smtp.gitlab-ci.yml +19 -0
  36. data/.gitlab/ci/jobs/staging.gitlab-ci.yml +10 -0
  37. data/.gitlab/ci/jobs/update.gitlab-ci.yml +60 -0
  38. data/.gitlab/ci/rules.gitlab-ci.yml +19 -6
  39. data/.gitlab/issue_templates/Default.md +2 -0
  40. data/.gitlab/merge_request_templates/Default.md +2 -0
  41. data/.gitlab-ci.yml +110 -1333
  42. data/bin/notify_upstream +98 -0
  43. data/docs/what_tests_can_be_run.md +15 -0
  44. data/lib/gitlab/qa/component/base.rb +0 -1
  45. data/lib/gitlab/qa/component/gitlab.rb +48 -1
  46. data/lib/gitlab/qa/component/staging_ref.rb +1 -0
  47. data/lib/gitlab/qa/docker/engine.rb +4 -0
  48. data/lib/gitlab/qa/release.rb +1 -1
  49. data/lib/gitlab/qa/report/gitlab_issue_client.rb +12 -0
  50. data/lib/gitlab/qa/report/relate_failure_issue.rb +17 -2
  51. data/lib/gitlab/qa/report/test_result.rb +8 -0
  52. data/lib/gitlab/qa/report/update_screenshot_path.rb +28 -6
  53. data/lib/gitlab/qa/runner.rb +17 -0
  54. data/lib/gitlab/qa/runtime/env.rb +14 -1
  55. data/lib/gitlab/qa/runtime/omnibus_configuration.rb +1 -1
  56. data/lib/gitlab/qa/runtime/omnibus_configurations/ci_decomposition.rb +32 -0
  57. data/lib/gitlab/qa/scenario/test/instance/deployment_base.rb +5 -0
  58. data/lib/gitlab/qa/scenario/test/instance/staging_ref_geo.rb +27 -0
  59. data/lib/gitlab/qa/scenario/test/integration/geo.rb +2 -1
  60. data/lib/gitlab/qa/scenario/test/integration/gitaly_cluster.rb +2 -0
  61. data/lib/gitlab/qa/scenario/test/integration/mattermost.rb +5 -1
  62. data/lib/gitlab/qa/scenario/test/integration/mtls.rb +1 -0
  63. data/lib/gitlab/qa/scenario/test/integration/registry_with_cdn.rb +42 -0
  64. data/lib/gitlab/qa/scenario/test/omnibus/update.rb +1 -0
  65. data/lib/gitlab/qa/version.rb +1 -1
  66. data/lib/gitlab/qa.rb +3 -0
  67. data/scripts/generate-qa-jobs.rb +72 -0
  68. data/support/data/admin_access_token_seed.rb +24 -0
  69. data/support/data/license_usage_seed.rb +75 -0
  70. metadata +45 -3
  71. data/bin/notify_upstream_commit +0 -61
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1ab5663ab224b79f77ee02d363fa0e38d5a14f53e895b5135e87a79e91ebb89a
4
- data.tar.gz: 0b42e0776e042612565fe7e55af86db3dd3559dcdce549e4d937948e55173f81
3
+ metadata.gz: afdf52b910858a3f1ec0729d2eef2d170938d282cd116af17af424afc92fcae0
4
+ data.tar.gz: 1fb9f558a932a9344b774bc3d873e9184f8c31dd8472c4f51aa0a7ac0626422e
5
5
  SHA512:
6
- metadata.gz: a9046b2ee0a0a41d289a3551c4fe5179198b86854bcda525b1bc25915f5cc43f1b2d43f7197f077b55a43dd92bd3e40cd38c5d672bff4aa8b3c166933f7bd941
7
- data.tar.gz: c3b2491338c9a433cf3cf1ae83864484e1f769cc3626497e2ef2e3b37717b1a58b481aec74fe37024ed7a18e7cd80364f749f6d9cab481a761c81b16aaab2cd8
6
+ metadata.gz: 3cb4ab49fee9a1ade2abd1125bb5a8ae020c0343a06415d74130709fd5556f715a49010ee6e9b31e1abb9b0c8ece9dc7f3f63e3c85606f21a02434ab276da030
7
+ data.tar.gz: bd5310d35ede8bef9b8aabc2113a76841a530b11e95e15bc87d82d45e7242b0efb7d6c170f6d2c785d7f7cf8b603c8367dc0b2994f8d1481fff2c8eab8d908a5
@@ -0,0 +1,41 @@
1
+ ce:actioncable:
2
+ extends:
3
+ - .rules:ce-never-when-triggered-by-feature-flag-definition-change
4
+ - .test
5
+ - .high-capacity
6
+ - .ce-variables
7
+ - .rspec-report-opts
8
+ variables:
9
+ QA_SCENARIO: "Test::Integration::Actioncable"
10
+
11
+ ce:actioncable-quarantine:
12
+ extends:
13
+ - .rules:ce-never-when-triggered-by-feature-flag-definition-change
14
+ - .test
15
+ - .high-capacity
16
+ - .ce-variables
17
+ - .quarantine
18
+ - .rspec-report-opts
19
+ variables:
20
+ QA_SCENARIO: "Test::Integration::Actioncable"
21
+
22
+ ee:actioncable:
23
+ extends:
24
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
25
+ - .test
26
+ - .high-capacity
27
+ - .ee-variables
28
+ - .rspec-report-opts
29
+ variables:
30
+ QA_SCENARIO: "Test::Integration::Actioncable"
31
+
32
+ ee:actioncable-quarantine:
33
+ extends:
34
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
35
+ - .test
36
+ - .high-capacity
37
+ - .ee-variables
38
+ - .quarantine
39
+ - .rspec-report-opts
40
+ variables:
41
+ QA_SCENARIO: "Test::Integration::Actioncable"
@@ -0,0 +1,281 @@
1
+ stages:
2
+ - test
3
+ - report
4
+ - notify
5
+
6
+ default:
7
+ image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-qa-ruby-2.7
8
+ tags:
9
+ - gitlab-org
10
+ cache:
11
+ key:
12
+ files:
13
+ - Gemfile.lock
14
+ - gitlab-qa.gemspec
15
+ paths:
16
+ - vendor/ruby
17
+ before_script:
18
+ - export QA_ARTIFACTS_DIR=$CI_PROJECT_DIR
19
+ - bundle version
20
+ - bundle config path vendor
21
+ - bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check
22
+ - export LANG=C.UTF-8
23
+ - echo $CI_MERGE_REQUEST_IID
24
+ - echo $CI_COMMIT_BRANCH
25
+ - echo $CI_COMMIT_TAG
26
+ - echo $CI_PIPELINE_SOURCE
27
+ - echo $CI_DEFAULT_BRANCH
28
+ - echo $CI_COMMIT_REF_NAME
29
+ - echo $CI_JOB_ID
30
+ - echo $CI_COMMIT_REF_PROTECTED
31
+ - echo $TOP_UPSTREAM_SOURCE_SHA
32
+ - echo $TOP_UPSTREAM_MERGE_REQUEST_IID
33
+ - echo $TOP_UPSTREAM_SOURCE_PROJECT
34
+ - echo $TOP_UPSTREAM_DEFAULT_BRANCH
35
+ - echo $TOP_UPSTREAM_SOURCE_REF
36
+ - echo $TOP_UPSTREAM_SOURCE_JOB
37
+ - echo $GITLAB_QA_OPTIONS
38
+ - echo $QA_TESTS
39
+ - echo $RSPEC_REPORT_OPTS
40
+ - echo $QA_RSPEC_TAGS
41
+ - echo $QA_TEST_RESULTS_ISSUES_PROJECT
42
+ - echo $QA_TESTCASES_REPORTING_PROJECT
43
+ - echo $DEFAULT_RELEASE
44
+ - echo $GITLAB_QA_OPTIONS_COMBINED
45
+ - echo $DISABLE_RELATING_FAILURE_ISSUES
46
+ - echo $QA_FAILURES_MAX_DIFF_RATIO
47
+ - echo $QA_FAILURES_REPORTER_OPTIONS
48
+ - echo $NOTIFY_CHANNEL
49
+ - echo $REPORT_ISSUE_URL
50
+ - echo $QA_TESTCASE_SESSIONS_PROJECT
51
+ - echo $QA_FAILURES_REPORTING_PROJECT
52
+ - echo $ALLURE_JOB_NAME
53
+ - echo $QA_IMAGE
54
+ - echo $RELEASE
55
+ - echo $TEST_LICENSE_MODE
56
+
57
+ workflow:
58
+ rules:
59
+ # For merge requests, create a pipeline.
60
+ - if: $CI_MERGE_REQUEST_IID
61
+ # For the default branch, create a pipeline (this includes on schedules, pushes, merges, etc.).
62
+ - if: $CI_COMMIT_BRANCH == "master"
63
+ # For tags, create a pipeline.
64
+ - if: $CI_COMMIT_TAG
65
+ # For triggers from GitLab MR pipelines (and pipelines from other projects or parent pipeline), create a pipeline
66
+ - if: $CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "parent_pipeline"
67
+ # When using Run pipeline button in the GitLab UI, from the project’s CI/CD > Pipelines section, create a pipeline.
68
+ - if: $CI_PIPELINE_SOURCE == "web"
69
+
70
+ variables:
71
+ DOCKER_DRIVER: overlay2
72
+ DOCKER_HOST: tcp://docker:2375
73
+ QA_CAN_TEST_GIT_PROTOCOL_V2: "true"
74
+ QA_CAN_TEST_PRAEFECT: "false"
75
+ QA_GENERATE_ALLURE_REPORT: "true"
76
+ QA_TESTCASES_REPORTING_PROJECT: "gitlab-org/gitlab"
77
+ QA_TEST_RESULTS_ISSUES_PROJECT: "gitlab-org/quality/testcases"
78
+ QA_TESTCASE_SESSIONS_PROJECT: "gitlab-org/quality/testcase-sessions"
79
+ # QA_DEFAULT_BRANCH is the default branch name of the instance under test.
80
+ QA_DEFAULT_BRANCH: "master"
81
+
82
+ .ce-variables:
83
+ variables:
84
+ DEFAULT_RELEASE: "CE"
85
+
86
+ .ee-variables:
87
+ variables:
88
+ DEFAULT_RELEASE: "EE"
89
+
90
+ .test:
91
+ stage: test
92
+ timeout: 1 hour 30 minutes
93
+ services:
94
+ - docker:20.10.5-dind
95
+ tags:
96
+ - gitlab-org
97
+ - docker
98
+ artifacts:
99
+ when: always
100
+ expire_in: 10d
101
+ paths:
102
+ - gitlab-qa-run-*
103
+ reports:
104
+ junit: gitlab-qa-run-*/**/rspec-*.xml
105
+ script:
106
+ - 'echo "QA_ARTIFACTS_DIR: $QA_ARTIFACTS_DIR"'
107
+ - 'echo "CI_PROJECT_DIR: $CI_PROJECT_DIR"'
108
+ - 'echo "Running: bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS"'
109
+ - bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS || test_run_exit_code=$?
110
+ - bundle exec exe/gitlab-qa-report --update-screenshot-path "gitlab-qa-run-*/**/rspec-*.xml"
111
+ - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
112
+ - 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
113
+ - exit $test_run_exit_code
114
+
115
+ # For jobs that shouldn't report results in issues, e.g., manually run custom jobs
116
+ .no-issue-report-script:
117
+ script:
118
+ - 'echo "Running: bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS"'
119
+ - bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS
120
+
121
+ # For jobs that provide additional GITLAB_QA_OPTIONS, e.g., jobs that include --omnibus-config
122
+ .combined-gitlab-qa-options-script:
123
+ script:
124
+ - '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"'
125
+
126
+ - 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=$?
127
+ - bundle exec exe/gitlab-qa-report --update-screenshot-path "gitlab-qa-run-*/**/rspec-*.xml"
128
+ - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
129
+ - 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
130
+ - exit $test_run_exit_code
131
+
132
+ # The Test::Omnibus::Update scenarios require the release to be specified twice, which can't be done dynamically using the `variables` parameter
133
+ # So instead we can use this script with two release variables
134
+ .update-scenario-script:
135
+ script:
136
+ - 'echo "Running: bundle exec exe/gitlab-qa Test::Omnibus::Update ${RELEASE:=$DEFAULT_RELEASE} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS"'
137
+ - bundle exec exe/gitlab-qa Test::Omnibus::Update ${RELEASE:=$DEFAULT_RELEASE} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS || test_run_exit_code=$?
138
+ - bundle exec exe/gitlab-qa-report --update-screenshot-path "gitlab-qa-run-*/**/rspec-*.xml"
139
+ - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
140
+ - 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
141
+ - exit $test_run_exit_code
142
+
143
+ .high-capacity:
144
+ tags:
145
+ - docker
146
+ - 7gb
147
+ - triggered-packages
148
+
149
+ .rspec-report-opts:
150
+ variables:
151
+ FILE_SAFE_JOB_NAME: $(echo $CI_JOB_NAME | sed 's/[ /]/_/g')
152
+ RSPEC_REPORT_OPTS: '--format QA::Support::JsonFormatter --out "tmp/rspec-${CI_JOB_ID}.json" --format RspecJunitFormatter --out "tmp/rspec-${CI_JOB_ID}.xml" --format html --out "tmp/rspec-${FILE_SAFE_JOB_NAME}.htm" --color --format documentation'
153
+
154
+ .quarantine:
155
+ allow_failure: true
156
+ variables:
157
+ QA_RSPEC_TAGS: "--tag quarantine"
158
+
159
+ generate_test_session:
160
+ stage: report
161
+ rules:
162
+ - if: '$TOP_UPSTREAM_SOURCE_JOB !=null && $TOP_UPSTREAM_SOURCE_JOB !="" && $TOP_UPSTREAM_SOURCE_REF == $TOP_UPSTREAM_DEFAULT_BRANCH'
163
+ when: always
164
+ - if: '$TOP_UPSTREAM_SOURCE_JOB =~ /\Ahttps:\/\/ops.gitlab.net\//'
165
+ when: always
166
+ artifacts:
167
+ when: always
168
+ expire_in: 10d
169
+ paths:
170
+ - REPORT_ISSUE_URL
171
+ script:
172
+ - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
173
+ - bundle exec exe/gitlab-qa-report --generate-test-session "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_TESTCASE_SESSIONS_PROJECT"
174
+
175
+ relate_test_failures:
176
+ stage: report
177
+ rules:
178
+ - if: '$DISABLE_RELATING_FAILURE_ISSUES != null && $DISABLE_RELATING_FAILURE_ISSUES != ""'
179
+ when: never
180
+ - if: '$TOP_UPSTREAM_SOURCE_JOB !=null && $TOP_UPSTREAM_SOURCE_JOB !="" && $TOP_UPSTREAM_SOURCE_REF == $TOP_UPSTREAM_DEFAULT_BRANCH'
181
+ when: always
182
+ - if: '$TOP_UPSTREAM_SOURCE_JOB =~ /\Ahttps:\/\/ops.gitlab.net\//'
183
+ when: always
184
+ variables:
185
+ QA_FAILURES_REPORTING_PROJECT: "gitlab-org/gitlab"
186
+ QA_FAILURES_MAX_DIFF_RATIO: "0.15"
187
+ # The --dry-run can be set to modify the behavior of `exe/gitlab-qa-report --relate-failure-issue` without releasing a new gem version.
188
+ QA_FAILURES_REPORTER_OPTIONS: ""
189
+ script:
190
+ - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
191
+ - bundle exec exe/gitlab-qa-report --relate-failure-issue "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_FAILURES_REPORTING_PROJECT" --max-diff-ratio "$QA_FAILURES_MAX_DIFF_RATIO" $QA_FAILURES_REPORTER_OPTIONS
192
+
193
+ .notify_upstream:
194
+ stage: notify
195
+ image: ruby:3.0-alpine
196
+ dependencies: []
197
+ before_script:
198
+ - gem install gitlab --no-document
199
+
200
+ notify_upstream:success:
201
+ extends: .notify_upstream
202
+ script:
203
+ - bin/notify_upstream success
204
+ rules:
205
+ - if: '$TOP_UPSTREAM_SOURCE_PROJECT && $TOP_UPSTREAM_MERGE_REQUEST_IID && $TOP_UPSTREAM_SOURCE_SHA'
206
+ when: on_success
207
+
208
+ notify_upstream:failure:
209
+ extends: .notify_upstream
210
+ script:
211
+ - bin/notify_upstream failure
212
+ rules:
213
+ - if: '$TOP_UPSTREAM_SOURCE_PROJECT && $TOP_UPSTREAM_MERGE_REQUEST_IID && $TOP_UPSTREAM_SOURCE_SHA'
214
+ when: on_failure
215
+
216
+ .notify_slack:
217
+ image: alpine
218
+ stage: notify
219
+ dependencies: ['generate_test_session']
220
+ cache: {}
221
+ before_script:
222
+ - apk update && apk add git curl bash
223
+
224
+ notify_slack:
225
+ extends:
226
+ - .notify_slack
227
+ rules:
228
+ - if: '$TOP_UPSTREAM_SOURCE_JOB !=null && $TOP_UPSTREAM_SOURCE_JOB !="" && $NOTIFY_CHANNEL !=null && $NOTIFY_CHANNEL !=""'
229
+ when: on_failure
230
+ - if: '$TOP_UPSTREAM_SOURCE_JOB !=null && $TOP_UPSTREAM_SOURCE_JOB !="" && $TOP_UPSTREAM_SOURCE_REF == $TOP_UPSTREAM_DEFAULT_BRANCH'
231
+ when: on_failure
232
+ script:
233
+ - export RELEASE=${TOP_UPSTREAM_SOURCE_REF:-$RELEASE}
234
+ - echo "NOTIFY_CHANNEL is ${NOTIFY_CHANNEL:=qa-$TOP_UPSTREAM_SOURCE_REF}"
235
+ - echo "RELEASE is ${RELEASE}"
236
+ - echo "CI_PIPELINE_URL is $CI_PIPELINE_URL"
237
+ - echo "TOP_UPSTREAM_SOURCE_JOB is $TOP_UPSTREAM_SOURCE_JOB"
238
+ - 'bin/slack $NOTIFY_CHANNEL "☠️ QA against $RELEASE failed! ☠️ See the test session report: $(cat REPORT_ISSUE_URL), and pipeline: $CI_PIPELINE_URL (triggered from $TOP_UPSTREAM_SOURCE_JOB)" ci_failing'
239
+
240
+ generate-allure-report:
241
+ extends: .generate-allure-report-base
242
+ stage: report
243
+ variables:
244
+ ALLURE_RESULTS_GLOB: gitlab-qa-run-*/**/allure-results/*
245
+ cache:
246
+ policy: pull
247
+ before_script:
248
+ # Override allure variables for upstream triggers
249
+ # Override default before script and don't push cache
250
+ - export STORAGE_CREDENTIALS=$QA_ALLURE_REPORT_GCS_CREDENTIALS
251
+ - export GITLAB_AUTH_TOKEN=$GITLAB_QA_MR_ALLURE_REPORT_TOKEN
252
+ - export ALLURE_PROJECT_PATH=$TOP_UPSTREAM_SOURCE_PROJECT
253
+ - export ALLURE_MERGE_REQUEST_IID=$TOP_UPSTREAM_MERGE_REQUEST_IID
254
+ - export ALLURE_COMMIT_SHA=$TOP_UPSTREAM_SOURCE_SHA
255
+ - export ALLURE_JOB_NAME="${ALLURE_JOB_NAME:-package-and-qa}"
256
+ rules:
257
+ # Don't run report generation on release pipelines
258
+ - if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab-qa" && $RELEASE == null'
259
+ changes: ["lib/**/version.rb"]
260
+ when: never
261
+ - if: '$CI_COMMIT_TAG'
262
+ when: never
263
+ - if: '$CI_PIPELINE_SOURCE == "merge_request_event" || $CI_PIPELINE_SOURCE == "parent_pipeline" || ($CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH)'
264
+ variables:
265
+ ALLURE_JOB_NAME: gitlab-qa
266
+ when: always
267
+ - if: '$TOP_UPSTREAM_SOURCE_PROJECT != null && $TOP_UPSTREAM_SOURCE_PROJECT != "" && $TOP_UPSTREAM_SOURCE_SHA != null && $TOP_UPSTREAM_SOURCE_SHA != ""'
268
+ when: always
269
+
270
+ generate-knapsack-report:
271
+ extends: .generate-knapsack-report-base
272
+ image:
273
+ name: ${QA_IMAGE}
274
+ stage: report
275
+
276
+ include:
277
+ - local: .gitlab/ci/rules.gitlab-ci.yml
278
+ - project: 'gitlab-org/quality/pipeline-common'
279
+ file:
280
+ - '/ci/allure-report.yml'
281
+ - '/ci/knapsack-report.yml'
@@ -0,0 +1,30 @@
1
+ ee:cloud-activation:
2
+ before_script:
3
+ - unset EE_LICENSE
4
+ - !reference [default, before_script]
5
+ extends:
6
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
7
+ - .test
8
+ - .high-capacity
9
+ - .ee-variables
10
+ - .rspec-report-opts
11
+ - .combined-gitlab-qa-options-script
12
+ variables:
13
+ QA_RSPEC_TAGS: "--tag cloud_activation"
14
+ GITLAB_QA_OPTIONS_COMBINED: "$GITLAB_QA_OPTIONS --no-admin-token --seed-db license*.rb"
15
+
16
+ ee:cloud-activation-quarantine:
17
+ before_script:
18
+ - unset EE_LICENSE
19
+ - !reference [default, before_script]
20
+ extends:
21
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
22
+ - .test
23
+ - .high-capacity
24
+ - .ee-variables
25
+ - .quarantine
26
+ - .rspec-report-opts
27
+ - .combined-gitlab-qa-options-script
28
+ variables:
29
+ QA_RSPEC_TAGS: "--tag cloud_activation"
30
+ GITLAB_QA_OPTIONS_COMBINED: "$GITLAB_QA_OPTIONS --no-admin-token --seed-db license*.rb"
@@ -0,0 +1,21 @@
1
+ ce:custom-parallel:
2
+ extends:
3
+ - .rules:ce-never-when-triggered-by-feature-flag-definition-change
4
+ - .test
5
+ - .high-capacity
6
+ - .rspec-report-opts
7
+ - .no-issue-report-script
8
+ - .ce-variables
9
+ allow_failure: true
10
+ parallel: 10
11
+
12
+ ee:custom-parallel:
13
+ extends:
14
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
15
+ - .test
16
+ - .high-capacity
17
+ - .ee-variables
18
+ - .rspec-report-opts
19
+ - .no-issue-report-script
20
+ allow_failure: true
21
+ parallel: 10
@@ -0,0 +1,18 @@
1
+ ee-previous-to-ce:update:
2
+ script:
3
+ - bundle exec exe/gitlab-qa Test::Omnibus::Update EE CE -- $RSPEC_REPORT_OPTS
4
+ extends:
5
+ - .rules:only-qa-never-when-triggered-by-feature-flag-definition-change
6
+ - .test
7
+ - .high-capacity
8
+ - .rspec-report-opts
9
+
10
+ ee-previous-to-ce:update-quarantine:
11
+ script:
12
+ - bundle exec exe/gitlab-qa Test::Omnibus::Update EE CE -- --tag quarantine --tag ~orchestrated $RSPEC_REPORT_OPTS
13
+ extends:
14
+ - .rules:only-qa-never-when-triggered-by-feature-flag-definition-change
15
+ - .test
16
+ - .high-capacity
17
+ - .quarantine
18
+ - .rspec-report-opts
@@ -0,0 +1,20 @@
1
+ ee:elasticsearch:
2
+ extends:
3
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
4
+ - .test
5
+ - .high-capacity
6
+ - .ee-variables
7
+ - .rspec-report-opts
8
+ variables:
9
+ QA_SCENARIO: "Test::Integration::Elasticsearch"
10
+
11
+ ee:elasticsearch-quarantine:
12
+ extends:
13
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
14
+ - .test
15
+ - .high-capacity
16
+ - .ee-variables
17
+ - .quarantine
18
+ - .rspec-report-opts
19
+ variables:
20
+ QA_SCENARIO: "Test::Integration::Elasticsearch"
@@ -0,0 +1,18 @@
1
+ ee:geo:
2
+ extends:
3
+ - .test
4
+ - .ee-variables
5
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
6
+ - .rspec-report-opts
7
+ variables:
8
+ QA_SCENARIO: "Test::Integration::Geo"
9
+
10
+ ee:geo-quarantine:
11
+ extends:
12
+ - .test
13
+ - .ee-variables
14
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
15
+ - .quarantine
16
+ - .rspec-report-opts
17
+ variables:
18
+ QA_SCENARIO: "Test::Integration::Geo"
@@ -0,0 +1,45 @@
1
+ ce:gitaly-cluster:
2
+ extends:
3
+ - .rules:ce-never-when-triggered-by-feature-flag-definition-change
4
+ - .test
5
+ - .high-capacity
6
+ - .ce-variables
7
+ - .rspec-report-opts
8
+ variables:
9
+ QA_SCENARIO: "Test::Integration::GitalyCluster"
10
+ QA_LOG_PATH: "tmp/gitaly_cluster.log"
11
+
12
+ ce:gitaly-cluster-quarantine:
13
+ extends:
14
+ - .rules:ce-never-when-triggered-by-feature-flag-definition-change
15
+ - .test
16
+ - .high-capacity
17
+ - .ce-variables
18
+ - .quarantine
19
+ - .rspec-report-opts
20
+ variables:
21
+ QA_SCENARIO: "Test::Integration::GitalyCluster"
22
+ QA_LOG_PATH: "tmp/gitaly_cluster.log"
23
+
24
+ ee:gitaly-cluster:
25
+ extends:
26
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
27
+ - .test
28
+ - .high-capacity
29
+ - .ee-variables
30
+ - .rspec-report-opts
31
+ variables:
32
+ QA_SCENARIO: "Test::Integration::GitalyCluster"
33
+ QA_LOG_PATH: "tmp/gitaly_cluster.log"
34
+
35
+ ee:gitaly-cluster-quarantine:
36
+ extends:
37
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
38
+ - .test
39
+ - .high-capacity
40
+ - .ee-variables
41
+ - .quarantine
42
+ - .rspec-report-opts
43
+ variables:
44
+ QA_SCENARIO: "Test::Integration::GitalyCluster"
45
+ QA_LOG_PATH: "tmp/gitaly_cluster.log"
@@ -0,0 +1,20 @@
1
+ ee:group_saml:
2
+ extends:
3
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
4
+ - .test
5
+ - .high-capacity
6
+ - .ee-variables
7
+ - .rspec-report-opts
8
+ variables:
9
+ QA_SCENARIO: "Test::Integration::GroupSAML"
10
+
11
+ ee:group_saml-quarantine:
12
+ extends:
13
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
14
+ - .test
15
+ - .high-capacity
16
+ - .ee-variables
17
+ - .quarantine
18
+ - .rspec-report-opts
19
+ variables:
20
+ QA_SCENARIO: "Test::Integration::GroupSAML"
@@ -0,0 +1,55 @@
1
+ ce:instance-parallel:
2
+ extends:
3
+ - .rules:ce-never-when-qa-tests-specified
4
+ - .test
5
+ - .high-capacity
6
+ - .ce-variables
7
+ - .rspec-report-opts
8
+ parallel: 5
9
+
10
+ ee:instance-parallel:
11
+ extends:
12
+ - .rules:ee-never-when-qa-tests-specified
13
+ - .test
14
+ - .high-capacity
15
+ - .ee-variables
16
+ - .rspec-report-opts
17
+ parallel: 5
18
+
19
+ ce:instance:
20
+ extends:
21
+ - .rules:ce-never-when-qa-tests-not-specified
22
+ - .test
23
+ - .high-capacity
24
+ - .ce-variables
25
+ - .rspec-report-opts
26
+
27
+ ce:instance-quarantine:
28
+ extends:
29
+ - .rules:ce-qa
30
+ - .test
31
+ - .high-capacity
32
+ - .ce-variables
33
+ - .quarantine
34
+ - .rspec-report-opts
35
+ variables:
36
+ QA_RSPEC_TAGS: "--tag quarantine --tag ~orchestrated"
37
+
38
+ ee:instance:
39
+ extends:
40
+ - .rules:ee-never-when-qa-tests-not-specified
41
+ - .test
42
+ - .high-capacity
43
+ - .ee-variables
44
+ - .rspec-report-opts
45
+
46
+ ee:instance-quarantine:
47
+ extends:
48
+ - .rules:ee-qa
49
+ - .test
50
+ - .high-capacity
51
+ - .ee-variables
52
+ - .quarantine
53
+ - .rspec-report-opts
54
+ variables:
55
+ QA_RSPEC_TAGS: "--tag quarantine --tag ~orchestrated"
@@ -0,0 +1,41 @@
1
+ ce:instance_saml:
2
+ extends:
3
+ - .rules:ce-never-when-triggered-by-feature-flag-definition-change
4
+ - .test
5
+ - .high-capacity
6
+ - .ce-variables
7
+ - .rspec-report-opts
8
+ variables:
9
+ QA_SCENARIO: "Test::Integration::InstanceSAML"
10
+
11
+ ce:instance_saml-quarantine:
12
+ extends:
13
+ - .rules:ce-never-when-triggered-by-feature-flag-definition-change
14
+ - .test
15
+ - .high-capacity
16
+ - .ce-variables
17
+ - .quarantine
18
+ - .rspec-report-opts
19
+ variables:
20
+ QA_SCENARIO: "Test::Integration::InstanceSAML"
21
+
22
+ ee:instance_saml:
23
+ extends:
24
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
25
+ - .test
26
+ - .high-capacity
27
+ - .ee-variables
28
+ - .rspec-report-opts
29
+ variables:
30
+ QA_SCENARIO: "Test::Integration::InstanceSAML"
31
+
32
+ ee:instance_saml-quarantine:
33
+ extends:
34
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
35
+ - .test
36
+ - .high-capacity
37
+ - .ee-variables
38
+ - .quarantine
39
+ - .rspec-report-opts
40
+ variables:
41
+ QA_SCENARIO: "Test::Integration::InstanceSAML"
@@ -0,0 +1,14 @@
1
+ ce:integrations:
2
+ extends:
3
+ - .rules:ce-never-when-triggered-by-feature-flag-definition-change
4
+ - .test
5
+ - .high-capacity
6
+ - .ce-variables
7
+ - .rspec-report-opts
8
+ variables:
9
+ QA_SCENARIO: "Test::Integration::Integrations"
10
+
11
+ ce:integrations-quarantine:
12
+ extends:
13
+ - ce:integrations
14
+ - .quarantine
@@ -0,0 +1,41 @@
1
+ ce:jira:
2
+ extends:
3
+ - .rules:ce-never-when-triggered-by-feature-flag-definition-change
4
+ - .test
5
+ - .high-capacity
6
+ - .ce-variables
7
+ - .rspec-report-opts
8
+ variables:
9
+ QA_SCENARIO: "Test::Integration::Jira"
10
+
11
+ ce:jira-quarantine:
12
+ extends:
13
+ - .rules:ce-never-when-triggered-by-feature-flag-definition-change
14
+ - .test
15
+ - .high-capacity
16
+ - .ce-variables
17
+ - .quarantine
18
+ - .rspec-report-opts
19
+ variables:
20
+ QA_SCENARIO: "Test::Integration::Jira"
21
+
22
+ ee:jira:
23
+ extends:
24
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
25
+ - .test
26
+ - .high-capacity
27
+ - .ee-variables
28
+ - .rspec-report-opts
29
+ variables:
30
+ QA_SCENARIO: "Test::Integration::Jira"
31
+
32
+ ee:jira-quarantine:
33
+ extends:
34
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
35
+ - .test
36
+ - .high-capacity
37
+ - .ee-variables
38
+ - .quarantine
39
+ - .rspec-report-opts
40
+ variables:
41
+ QA_SCENARIO: "Test::Integration::Jira"