debian-mirror-gitlab/.gitlab/ci/package-and-test/rules.gitlab-ci.yml

128 lines
3.5 KiB
YAML
Raw Normal View History

2022-10-11 01:57:18 +05:30
# 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 != ""
# Only deleted feature flags
.feature-flags-deleted: &feature-flags-deleted
if: $QA_FEATURE_FLAGS != "" && $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
# QA framework changes present
.qa-framework-changes: &qa-framework-changes
if: $QA_FRAMEWORK_CHANGES == "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"
# 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
2022-11-25 23:54:43 +05:30
.rules:dont-interrupt:
rules:
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
allow_failure: true
- if: $CI_MERGE_REQUEST_IID
when: manual
allow_failure: true
.rules:omnibus-build:
rules:
- if: $SKIP_OMNIBUS_TRIGGER == "true"
when: never
- when: always
2022-10-11 01:57:18 +05:30
# ------------------------------------------
# Test
# ------------------------------------------
2022-11-25 23:54:43 +05:30
.rules:test:manual:
2022-10-11 01:57:18 +05:30
rules:
- when: manual
2022-11-25 23:54:43 +05:30
allow_failure: true
2022-10-11 01:57:18 +05:30
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: ""
.rules:test:feature-flags-deleted:
rules:
- <<: *feature-flags-deleted
when: never
# 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-non-parallel:
rules:
# always run parallel with full suite when framework changes present or ff state changed
- <<: *qa-framework-changes
when: never
- <<: *all-specs
when: never
- <<: *feature-flags-set
when: never
.rules:test:qa-parallel:
rules:
- *qa-framework-changes
- <<: *specific-specs
2022-11-25 23:54:43 +05:30
when: manual
allow_failure: true
variables:
QA_TESTS: ""
2022-10-11 01:57:18 +05:30
- *feature-flags-set-manual
# general qa job rule for jobs without the need to run in parallel
.rules:test:qa:
rules:
- *qa-framework-changes
- *feature-flags-set-manual
2022-11-25 23:54:43 +05:30
.rules:test:update:
rules:
# skip upgrade jobs if gitlab version is not provided
# these jobs need gitlab version because we can't reliably detect it from just the image
- if: $GITLAB_VERSION == null
when: never
- !reference [.rules:test:qa, rules]
2022-10-11 01:57:18 +05:30
# ------------------------------------------
# Report
# ------------------------------------------
.rules:report:allure-report:
rules:
2022-11-25 23:54:43 +05:30
- if: $SKIP_ALLURE_REPORT == "true"
when: never
2022-10-11 01:57:18 +05:30
- when: always
.rules:report:process-results:
rules:
- *process-test-results