# Specific specs passed .specific-specs: &specific-specs if: $QA_TESTS != "" # No specific specs passed .all-specs: &all-specs if: $QA_TESTS == "" # No specific specs in mr pipeline .all-specs-mr: &all-specs-mr if: $CI_MERGE_REQUEST_IID && $QA_TESTS == "" when: manual # Triggered by change pattern .app-changes: &app-changes if: $APP_CHANGE_TRIGGER == "true" # QA framework changes present .qa-framework-changes: &qa-framework-changes if: $QA_FRAMEWORK_CHANGES == "true" .default-branch: &default-branch if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH .qa-manual: &qa-manual when: manual allow_failure: true variables: QA_TESTS: "" .never-when-qa-framework-changes-or-no-specific-specs: - <<: *qa-framework-changes when: never - <<: *all-specs when: never .never-when-specific-specs-always-when-qa-framework-changes: - <<: *specific-specs when: manual allow_failure: true variables: QA_TESTS: "" - *qa-framework-changes # ------------------------------------------ # Prepare # ------------------------------------------ .rules:dont-interrupt: rules: - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH allow_failure: true - if: $CI_PIPELINE_SOURCE == "merge_request_event" when: manual allow_failure: true # ------------------------------------------ # Test # ------------------------------------------ .rules:qa-smoke: rules: # always trigger smoke suite if review pipeline got triggered by specific changes in application code - <<: *app-changes variables: QA_TESTS: "" # unset QA_TESTS even if specific tests were inferred from stage label - *qa-framework-changes - if: $QA_SUITES =~ /Test::Instance::Smoke/ - *qa-manual .rules:qa-blocking: rules: - <<: *app-changes when: never - !reference [.never-when-qa-framework-changes-or-no-specific-specs] - if: $QA_SUITES =~ /Test::Instance::ReviewBlocking/ .rules:qa-blocking-parallel: rules: # always trigger blocking suite if review pipeline got triggered by specific changes in application code - <<: *app-changes variables: QA_TESTS: "" # unset QA_TESTS even if specific tests were inferred from stage label - !reference [.never-when-specific-specs-always-when-qa-framework-changes] - if: $QA_SUITES =~ /Test::Instance::ReviewBlocking/ .rules:qa-non-blocking: rules: - !reference [.never-when-qa-framework-changes-or-no-specific-specs] - if: $QA_SUITES =~ /Test::Instance::ReviewNonBlocking/ .rules:qa-non-blocking-parallel: rules: - !reference [.never-when-specific-specs-always-when-qa-framework-changes] - *all-specs-mr # set full suite to manual when no specific specs passed in mr - if: $QA_SUITES =~ /Test::Instance::ReviewNonBlocking/ # ------------------------------------------ # Prepare/Report # ------------------------------------------ .rules:prepare-report: rules: - when: always .rules:notify-slack: rules: - <<: *default-branch when: on_failure