170 lines
5.2 KiB
YAML
170 lines
5.2 KiB
YAML
# ------------------------------------------
|
|
# Conditions
|
|
# ------------------------------------------
|
|
# 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_EVENT_TYPE == "merged_result" || $CI_MERGE_REQUEST_EVENT_TYPE == "detached") && $QA_TESTS == ""'
|
|
when: manual
|
|
|
|
# Triggered by change pattern
|
|
.app-changes: &app-changes
|
|
if: $APP_CHANGE_TRIGGER == "true"
|
|
|
|
# Run all tests when framework changes present or explicitly enabled full suite execution
|
|
.qa-run-all-tests: &qa-run-all-tests
|
|
if: $QA_FRAMEWORK_CHANGES == "true" || $QA_RUN_ALL_TESTS == "true"
|
|
|
|
.default-branch: &default-branch
|
|
if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
|
|
|
|
.if-merge-request: &if-merge-request
|
|
if: '$CI_MERGE_REQUEST_EVENT_TYPE == "merged_result" || $CI_MERGE_REQUEST_EVENT_TYPE == "detached"'
|
|
|
|
.if-merge-request-labels-run-review-app: &if-merge-request-labels-run-review-app
|
|
if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-review-app/'
|
|
|
|
.if-dot-com-ee-schedule-nightly-child-pipeline: &if-dot-com-ee-schedule-nightly-child-pipeline
|
|
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab" && $CI_PIPELINE_SOURCE == "parent_pipeline" && $SCHEDULE_TYPE == "nightly"'
|
|
|
|
# ------------------------------------------
|
|
# Changes patterns
|
|
# ------------------------------------------
|
|
.ci-review-patterns: &ci-review-patterns
|
|
- ".gitlab-ci.yml"
|
|
- ".gitlab/ci/frontend.gitlab-ci.yml"
|
|
- ".gitlab/ci/build-images.gitlab-ci.yml"
|
|
- ".gitlab/ci/review.gitlab-ci.yml"
|
|
- ".gitlab/ci/review-apps/**/*"
|
|
- "scripts/review_apps/**/*"
|
|
- "scripts/trigger-build.rb"
|
|
- "{,ee/,jh/}{bin,config}/**/*.rb"
|
|
|
|
# ------------------------------------------
|
|
# Conditions set
|
|
# ------------------------------------------
|
|
.qa-manual: &qa-manual
|
|
when: manual
|
|
allow_failure: true
|
|
variables:
|
|
QA_TESTS: ""
|
|
|
|
.never-when-qa-run-all-tests-or-no-specific-specs:
|
|
- <<: *qa-run-all-tests
|
|
when: never
|
|
- <<: *all-specs
|
|
when: never
|
|
|
|
.never-when-specific-specs-always-when-qa-run-all-tests:
|
|
- *qa-run-all-tests
|
|
- <<: *specific-specs
|
|
when: manual
|
|
allow_failure: true
|
|
variables:
|
|
QA_TESTS: ""
|
|
|
|
# ------------------------------------------
|
|
# Prepare
|
|
# ------------------------------------------
|
|
.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
|
|
|
|
.review:rules:review-build-cng:
|
|
rules:
|
|
- when: always
|
|
|
|
.review:rules:review-delete-deployment:
|
|
rules:
|
|
- when: on_success
|
|
|
|
# ------------------------------------------
|
|
# Deploy
|
|
# ------------------------------------------
|
|
.review:rules:review-deploy:
|
|
rules:
|
|
- when: on_success
|
|
|
|
.review:rules:trigger-review-stop:
|
|
rules:
|
|
- 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-run-all-tests
|
|
- if: $QA_SUITES =~ /Test::Instance::Smoke/
|
|
- *qa-manual
|
|
|
|
.rules:qa-blocking:
|
|
rules:
|
|
- <<: *app-changes
|
|
when: never
|
|
- !reference [.never-when-qa-run-all-tests-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-run-all-tests]
|
|
- if: $QA_SUITES =~ /Test::Instance::ReviewBlocking/
|
|
|
|
.rules:qa-non-blocking:
|
|
rules:
|
|
- !reference [.never-when-qa-run-all-tests-or-no-specific-specs]
|
|
- if: $QA_SUITES =~ /Test::Instance::ReviewNonBlocking/
|
|
.rules:qa-non-blocking-parallel:
|
|
rules:
|
|
- !reference [.never-when-specific-specs-always-when-qa-run-all-tests]
|
|
- *all-specs-mr # set full suite to manual when no specific specs passed in mr
|
|
- if: $QA_SUITES =~ /Test::Instance::ReviewNonBlocking/
|
|
|
|
.review:rules:review-performance:
|
|
rules:
|
|
- if: '$DAST_RUN == "true"' # Skip this job when DAST is run
|
|
when: never
|
|
- <<: *if-merge-request-labels-run-review-app # we explicitly don't allow the job to fail in that case
|
|
- <<: *if-merge-request # we explicitly don't allow the job to fail in that case
|
|
changes: *ci-review-patterns
|
|
- when: on_success
|
|
allow_failure: true
|
|
|
|
# ------------------------------------------
|
|
# DAST
|
|
# ------------------------------------------
|
|
.reports:rules:schedule-dast:
|
|
rules:
|
|
- if: '$DAST_DISABLED || $GITLAB_FEATURES !~ /\bdast\b/'
|
|
when: never
|
|
- <<: *if-dot-com-ee-schedule-nightly-child-pipeline
|
|
|
|
# ------------------------------------------
|
|
# Prepare/Report
|
|
# ------------------------------------------
|
|
.rules:prepare-report:
|
|
rules:
|
|
- when: always
|
|
|
|
.rules:main-run:
|
|
rules:
|
|
- *default-branch
|