omnibus-gitlab/gitlab-ci-config/workflow-rules.yml

141 lines
8.3 KiB
YAML

workflow:
name: '$PIPELINE_TYPE'
rules:
# Avoid duplicate pipeline when an MR is open
- if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push"'
when: never
# Skip pipelines if configured to do so. For example,
# $SKIP_PIPELINE_SOURCE is set to "push" in QA mirror
- if: '$SKIP_PIPELINE_SOURCE == $CI_PIPELINE_SOURCE'
when: never
# No pipeline on auto-deploy branches as a tag will definitely follow
- if: '$CI_COMMIT_BRANCH =~ /^[0-9]+-[0-9]+-auto-deploy-[0-9]+$/'
when: never
# Detect pipeline type
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $CANONICAL_PROJECT_PATH && $PAGES_UPDATE == "true" && $CI_PIPELINE_SOURCE == "schedule"'
variables:
PIPELINE_TYPE: LICENSE_PAGE_UPDATE_PIPELINE
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $CANONICAL_PROJECT_PATH && $DEPENDENCY_SCANNING == "true" && $CI_PIPELINE_SOURCE == "schedule"'
variables:
PIPELINE_TYPE: DEPENDENCY_SCANNING_PIPELINE
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $CANONICAL_PROJECT_PATH && $DEPS_PIPELINE == "true"'
variables:
PIPELINE_TYPE: DEPS_IO_VERSION_CHECK_PIPELINE
- if: '$PIPELINE_TYPE == null && $CACHE_UPDATE == "true" && $CI_PIPELINE_SOURCE == "schedule"'
variables:
PIPELINE_TYPE: CACHE_UPDATE_PIPELINE
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $QA_PROJECT_PATH && ($CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "trigger") && $ee == "true" && $CACHE_UPDATE == "true" && $TOP_UPSTREAM_SOURCE_PROJECT == "gitlab-org/gitlab"'
variables:
PIPELINE_TYPE: TRIGGER_CACHE_UPDATE_PIPELINE
CACHE_EDITION: "GITLAB"
# We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
CACHE_POLICY: 'push'
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $QA_PROJECT_PATH && $CACHE_UPDATE == "true"'
variables:
PIPELINE_TYPE: TRIGGER_CACHE_UPDATE_PIPELINE
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $QA_PROJECT_PATH && $DURATION_PLOTTER == "true" && $CI_PIPELINE_SOURCE == "schedule"'
variables:
PIPELINE_TYPE: DURATION_PLOTTER_PIPELINE
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $CANONICAL_PROJECT_PATH && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^deps/'
variables:
PIPELINE_TYPE: DEPS_IO_VERSION_BUMP_PIPELINE
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $CANONICAL_PROJECT_PATH && ($CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^docs-/ || $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /-docs$/)'
variables:
PIPELINE_TYPE: DOCS_PIPELINE
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $CANONICAL_PROJECT_PATH && $CI_PIPELINE_SOURCE == "merge_request_event"'
variables:
PIPELINE_TYPE: GITLAB_MR_PIPELINE
- if: '$PIPELINE_TYPE == null && $NIGHTLY && $CI_COMMIT_BRANCH && ($ee == "true" || $GITLAB_VERSION =~ /-ee$/)'
variables:
PIPELINE_TYPE: EE_NIGHTLY_BUILD_PIPELINE
CACHE_EDITION: "EE"
# Set CACHE_EDITION variable to STABLE on stable branch pipelines so that they don't pollute regular branch cache
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $DEV_PROJECT_PATH && $CI_COMMIT_BRANCH =~ /^.*-stable$/ && ($ee == "true" || $GITLAB_VERSION =~ /-ee$/)'
variables:
PIPELINE_TYPE: EE_BRANCH_BUILD_PIPELINE
CACHE_EDITION: "STABLE"
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $DEV_PROJECT_PATH && $CI_COMMIT_BRANCH && ($ee == "true" || $GITLAB_VERSION =~ /-ee$/)'
variables:
PIPELINE_TYPE: EE_BRANCH_BUILD_PIPELINE
CACHE_EDITION: "EE"
- if: '$PIPELINE_TYPE == null && $NIGHTLY && $CI_COMMIT_BRANCH'
variables:
PIPELINE_TYPE: CE_NIGHTLY_BUILD_PIPELINE
CACHE_EDITION: "CE"
# Set CACHE_EDITION variable to STABLE on stable branch pipelines so that they don't pollute regular branch cache
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $DEV_PROJECT_PATH && $CI_COMMIT_BRANCH =~ /^.*-stable$/'
variables:
PIPELINE_TYPE: CE_BRANCH_BUILD_PIPELINE
CACHE_EDITION: "STABLE"
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $DEV_PROJECT_PATH && $CI_COMMIT_BRANCH'
variables:
PIPELINE_TYPE: CE_BRANCH_BUILD_PIPELINE
CACHE_EDITION: "CE"
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $DEV_PROJECT_PATH && $CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+\+[^ ]{7,}\.[^ ]{7,}$/'
variables:
PIPELINE_TYPE: AUTO_DEPLOY_BUILD_PIPELINE
CACHE_EDITION: "AUTO_DEPLOY${AUTO_DEPLOY_CACHE_REVISION}"
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $DEV_PROJECT_PATH && $CI_COMMIT_TAG =~ /^.*\+rc.*\.ce\..*/'
variables:
PIPELINE_TYPE: CE_RC_BUILD_PIPELINE
CACHE_EDITION: "CE"
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $DEV_PROJECT_PATH && $CI_COMMIT_TAG =~ /^.*\+rc.*\.ee\..*/'
variables:
PIPELINE_TYPE: EE_RC_BUILD_PIPELINE
CACHE_EDITION: "EE"
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $DEV_PROJECT_PATH && $CI_COMMIT_TAG =~ /^.*ce\.\d.*$/'
variables:
PIPELINE_TYPE: CE_TAG_BUILD_PIPELINE
CACHE_EDITION: "CE"
GITLAB_EDITION: "Community Edition"
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $DEV_PROJECT_PATH && $CI_COMMIT_TAG =~ /^.*ee\.\d.*$/'
variables:
PIPELINE_TYPE: EE_TAG_BUILD_PIPELINE
CACHE_EDITION: "EE"
GITLAB_EDITION: "Enterprise Edition"
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $CANONICAL_PROJECT_PATH && $CI_COMMIT_REF_PROTECTED == "true"'
variables:
PIPELINE_TYPE: PROTECTED_TEST_PIPELINE
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $SECURITY_PROJECT_PATH && $CI_PIPELINE_SOURCE == "merge_request_event"'
variables:
PIPELINE_TYPE: GITLAB_MR_PIPELINE
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $SECURITY_PROJECT_PATH && $CI_COMMIT_REF_PROTECTED == "true"'
variables:
PIPELINE_TYPE: PROTECTED_TEST_PIPELINE
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $CANONICAL_PROJECT_PATH && $CI_COMMIT_BRANCH'
variables:
PIPELINE_TYPE: GITLAB_BRANCH_TEST_PIPELINE
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $SECURITY_PROJECT_PATH && $CI_COMMIT_BRANCH'
variables:
PIPELINE_TYPE: GITLAB_BRANCH_TEST_PIPELINE
# Set CACHE_EDITION variable to GITLAB for pipelines triggered from gitlab-org/gitlab project so that they don't pollute regular branch cache
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $QA_PROJECT_PATH && ($CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "trigger") && $ee == "true" && $TOP_UPSTREAM_SOURCE_PROJECT == "gitlab-org/gitlab"'
variables:
PIPELINE_TYPE: TRIGGERED_EE_PIPELINE
CACHE_EDITION: "GITLAB"
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $QA_PROJECT_PATH && ($CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "trigger") && $ee == "true"'
variables:
PIPELINE_TYPE: TRIGGERED_EE_PIPELINE
CACHE_EDITION: "EE"
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH == $QA_PROJECT_PATH && ($CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "trigger")'
variables:
PIPELINE_TYPE: TRIGGERED_CE_PIPELINE
CACHE_EDITION: "CE"
- if: '$PIPELINE_TYPE == null && $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_PROJECT_PATH != $CANONICAL_PROJECT_PATH && $CI_PROJECT_PATH != $SECURITY_PROJECT_PATH && $CI_PROJECT_PATH != $QA_PROJECT_PATH && $CI_PROJECT_PATH != $DEV_PROJECT_PATH'
variables:
PIPELINE_TYPE: FORK_MR_PIPELINE
- if: '$PIPELINE_TYPE == null && $CI_PROJECT_PATH != $CANONICAL_PROJECT_PATH && $CI_PROJECT_PATH != $SECURITY_PROJECT_PATH && $CI_PROJECT_PATH != $QA_PROJECT_PATH && $CI_PROJECT_PATH != $DEV_PROJECT_PATH'
variables:
PIPELINE_TYPE: FORK_BRANCH_TEST_PIPELINE
# If a pipeline type is specified, use it and create a pipeline
- if: '$PIPELINE_TYPE'
# If pipeline type is neither specified nor could be detected, do not create a pipeline
- if: '$PIPELINE_TYPE == null'
when: never
# Support Merge Request pipelines
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
# Run regular pipelines on pushes to branches that does not have an MR open
- if: '$CI_COMMIT_BRANCH'
# For tags, always create a pipeline.
- if: '$CI_COMMIT_TAG'