Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '.gitlab/ci/qa-common/rules.gitlab-ci.yml')
-rw-r--r--.gitlab/ci/qa-common/rules.gitlab-ci.yml154
1 files changed, 154 insertions, 0 deletions
diff --git a/.gitlab/ci/qa-common/rules.gitlab-ci.yml b/.gitlab/ci/qa-common/rules.gitlab-ci.yml
new file mode 100644
index 00000000000..3580339921d
--- /dev/null
+++ b/.gitlab/ci/qa-common/rules.gitlab-ci.yml
@@ -0,0 +1,154 @@
+# Specific specs passed
+.specific-specs: &specific-specs
+ if: $QA_TESTS != ""
+
+# No specific specs passed
+.all-specs: &all-specs
+ if: $QA_TESTS == ""
+
+# FF changes
+.feature-flags-set: &feature-flags-set
+ if: $QA_FEATURE_FLAGS =~ /enabled|disabled/
+
+# Manually trigger job on ff changes but with default ff state instead of inverted
+.feature-flags-set-manual: &feature-flags-set-manual
+ <<: *feature-flags-set
+ when: manual
+ allow_failure: true
+
+# Run the job on master pipeline
+.default-branch: &default-branch
+ if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
+
+# Run all tests when QA framework changes present, full suite execution is explicitly enabled or a feature flag file is removed
+.qa-run-all-tests: &qa-run-all-tests
+ if: $QA_FRAMEWORK_CHANGES == "true" || $QA_RUN_ALL_TESTS == "true" || $QA_RUN_ALL_E2E_LABEL == "true" || $QA_FEATURE_FLAGS =~ /deleted/
+
+# Run job when MR has pipeline:run-all-e2e label
+.qa-run-all-e2e-label: &qa-run-all-e2e-label
+ if: $QA_RUN_ALL_E2E_LABEL == "true"
+
+# Process test results (notify failure to slack, create test session report, relate test failures)
+.process-test-results: &process-test-results
+ if: $PROCESS_TEST_RESULTS == "true"
+
+.not-canonical-project: &not-canonical-project
+ if: '$CI_PROJECT_PATH != "gitlab-org/gitlab" && $CI_PROJECT_PATH != "gitlab-cn/gitlab"'
+
+# Selective test execution against omnibus instance have following execution scenarios:
+# * only e2e spec files changed - runs only changed specs
+# * qa framework changes - runs full test suite
+# * feature flag changed - runs full test suite with base gitlab instance configuration with both ff states
+# * quarantined e2e spec - skips execution of e2e tests by creating a no-op pipeline
+
+# ------------------------------------------
+# Prepare
+# ------------------------------------------
+.rules:prepare:
+ rules:
+ - when: always
+
+.rules:omnibus-build:
+ rules:
+ - if: $SKIP_OMNIBUS_TRIGGER == "true"
+ when: never
+ - if: $FOSS_ONLY != "1"
+
+.rules:omnibus-build-ce:
+ rules:
+ - if: $SKIP_OMNIBUS_TRIGGER == "true"
+ when: never
+ - if: $FOSS_ONLY == "1"
+
+.rules:update-cache:
+ rules:
+ - if: '$UPDATE_QA_CACHE == "true"'
+
+.rules:download-knapsack:
+ rules:
+ - when: always
+
+# ------------------------------------------
+# Test
+# ------------------------------------------
+.rules:test:manual:
+ rules:
+ - when: manual
+ allow_failure: true
+ variables:
+ QA_TESTS: ""
+
+.rules:test:feature-flags-set:
+ rules:
+ # unset specific specs if pipeline has feature flag changes and run full suite
+ - <<: *feature-flags-set
+ variables:
+ QA_TESTS: ""
+
+# parallel and non parallel rules are used for jobs that require parallel execution and thus need to switch
+# between parallel and non parallel when only certain specs are executed
+.rules:test:qa-selective:
+ rules:
+ # always run parallel with full suite when framework changes present or ff state changed
+ - <<: *qa-run-all-tests
+ when: never
+ - <<: *all-specs
+ when: never
+ - <<: *feature-flags-set
+ when: never
+
+.rules:test:qa-parallel:
+ rules:
+ - *qa-run-all-tests
+ - <<: *specific-specs
+ when: manual
+ allow_failure: true
+ variables:
+ QA_TESTS: ""
+ - *feature-flags-set-manual
+
+# general qa job rule for jobs without the need to run in parallel
+.rules:test:qa:
+ rules:
+ - *qa-run-all-tests
+ - *feature-flags-set-manual
+
+.rules:test:ee-only:
+ rules:
+ - if: $FOSS_ONLY == "1"
+ when: never
+
+.rules:test:update:
+ rules:
+ # skip upgrade jobs if gitlab version is not in semver compatible format
+ # these jobs need gitlab version because we can't reliably detect it from just the image
+ - if: $GITLAB_SEMVER_VERSION !~ /^\d+\.\d+\.\d+/
+ when: never
+ # update type tests are used to check if gitlab upgrade can be performed correctly (mainly migrations)
+ # there isn't much benefit in running tests after update with new sidebar enabled and there
+ # is also an issue to properly pass feature toggle to this job due to how gitlab-qa parses cli args
+ - if: $QA_SUPER_SIDEBAR_ENABLED == "true"
+ when: never
+ - !reference [.rules:test:ee-only, rules]
+ - !reference [.rules:test:qa, rules]
+
+.rules:test:qa-default-branch:
+ rules:
+ - *qa-run-all-e2e-label
+ - *default-branch
+ - *feature-flags-set-manual
+
+# ------------------------------------------
+# Report
+# ------------------------------------------
+.rules:report:allure-report:
+ rules:
+ - if: $SKIP_ALLURE_REPORT == "true"
+ when: never
+ - when: always
+
+.rules:report:process-results:
+ rules:
+ - <<: *not-canonical-project
+ when: never
+ - *process-test-results