summaryrefslogtreecommitdiff
path: root/.gitlab/ci/rules.gitlab-ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.gitlab/ci/rules.gitlab-ci.yml')
-rw-r--r--.gitlab/ci/rules.gitlab-ci.yml199
1 files changed, 172 insertions, 27 deletions
diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml
index fbbb0391ec5..f508bfa1465 100644
--- a/.gitlab/ci/rules.gitlab-ci.yml
+++ b/.gitlab/ci/rules.gitlab-ci.yml
@@ -11,7 +11,7 @@
if: '$CI_PROJECT_NAME != "gitlab-foss" && $CI_PROJECT_NAME != "gitlab-ce" && $CI_PROJECT_NAME != "gitlabhq"'
.if-default-refs: &if-default-refs
- if: '$CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME =~ /^[\d-]+-stable(-ee)?$/ || $CI_COMMIT_REF_NAME =~ /^\d+-\d+-auto-deploy-\d+$/ || $CI_COMMIT_REF_NAME =~ /^security\// || $CI_MERGE_REQUEST_IID || $CI_COMMIT_TAG'
+ if: '$CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME =~ /^[\d-]+-stable(-ee)?$/ || $CI_COMMIT_REF_NAME =~ /^\d+-\d+-auto-deploy-\d+$/ || $CI_COMMIT_REF_NAME =~ /^security\// || $CI_MERGE_REQUEST_IID || $CI_COMMIT_TAG || $FORCE_GITLAB_CI'
.if-master-refs: &if-master-refs
if: '$CI_COMMIT_REF_NAME == "master"'
@@ -40,6 +40,9 @@
.if-merge-request-title-update-caches: &if-merge-request-title-update-caches
if: '$CI_MERGE_REQUEST_TITLE =~ /UPDATE CACHE/'
+.if-merge-request-title-run-all-rspec: &if-merge-request-title-run-all-rspec
+ if: '$CI_MERGE_REQUEST_TITLE =~ /RUN ALL RSPEC/'
+
.if-security-merge-request: &if-security-merge-request
if: '$CI_PROJECT_NAMESPACE == "gitlab-org/security" && $CI_MERGE_REQUEST_IID'
@@ -71,6 +74,22 @@
- ".gitlab-ci.yml"
- ".gitlab/ci/**/*"
+.ci-build-images-patterns: &ci-build-images-patterns
+ - ".gitlab-ci.yml"
+ - ".gitlab/ci/build-images.gitlab-ci.yml"
+
+.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"
+
+.ci-qa-patterns: &ci-qa-patterns
+ - ".gitlab-ci.yml"
+ - ".gitlab/ci/frontend.gitlab-ci.yml"
+ - ".gitlab/ci/build-images.gitlab-ci.yml"
+ - ".gitlab/ci/qa.gitlab-ci.yml"
+
.yaml-patterns: &yaml-patterns
- "**/*.yml"
@@ -92,6 +111,21 @@
- "vendor/assets/**/*"
- "{,ee/}{app/assets,app/helpers,app/presenters,app/views,locale,public,symbol}/**/*"
+.backend-patterns: &backend-patterns
+ - "Gemfile{,.lock}"
+ - "Rakefile"
+ - "config.ru"
+ # List explicitly all the app/ dirs that are backend (i.e. all except app/assets).
+ - "{,ee/}{app/channels,app/controllers,app/finders,app/graphql,app/helpers,app/mailers,app/models,app/policies,app/presenters,app/serializers,app/services,app/uploaders,app/validators,app/views,app/workers}/**/*"
+ - "{,ee/}{bin,cable,config,db,lib}/**/*"
+ - "{,ee/}spec/**/*.rb"
+ - ".gitlab-ci.yml"
+ - ".gitlab/ci/**/*"
+
+.db-patterns: &db-patterns
+ - "{,ee/}{,spec/}{db,migrations}/**/*"
+ - "{,ee/}{,spec/}lib/{,ee/}gitlab/background_migration/**/*"
+
.backstage-patterns: &backstage-patterns
- "Dangerfile"
- "danger/**/*"
@@ -197,6 +231,26 @@
- <<: *if-master-schedule-2-hourly
- <<: *if-merge-request-title-update-caches
+######################
+# Build images rules #
+######################
+.build-images:rules:build-qa-image:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - <<: *if-dot-com-gitlab-org-and-security-merge-request
+ changes: *ci-build-images-patterns
+ - <<: *if-dot-com-gitlab-org-and-security-merge-request
+ changes: *code-qa-patterns
+ - <<: *if-dot-com-gitlab-org-schedule
+
+.build-images:rules:build-assets-image:
+ rules:
+ - <<: *if-not-canonical-namespace
+ when: never
+ - changes: *ci-build-images-patterns
+ - changes: *code-qa-patterns
+
####################
# Cache repo rules #
####################
@@ -263,7 +317,7 @@
- <<: *if-not-canonical-namespace
when: never
- <<: *if-default-refs
- changes: *code-backstage-qa-patterns
+ changes: *code-qa-patterns
.frontend:rules:compile-test-assets:
rules:
@@ -273,11 +327,8 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-security-merge-request
+ - <<: *if-merge-request # Always run for MRs since `compile-test-assets as-if-foss` is either needed by `rspec foss-impact` or the `rspec * as-if-foss` jobs.
changes: *code-backstage-qa-patterns
- - <<: *if-merge-request-title-as-if-foss
- - <<: *if-merge-request
- changes: *ci-patterns
.frontend:rules:default-frontend-jobs:
rules:
@@ -294,6 +345,15 @@
- <<: *if-merge-request
changes: *ci-patterns
+.frontend:rules:eslint-as-if-foss:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - <<: *if-merge-request-title-as-if-foss
+ when: never
+ - <<: *if-merge-request
+ changes: *frontend-patterns
+
.frontend:rules:ee-mr-and-master-only:
rules:
- <<: *if-not-ee
@@ -341,9 +401,7 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-dot-com-gitlab-org-master
- changes: *code-backstage-qa-patterns
- when: on_success
+ - <<: *if-master-schedule-2-hourly
############
# QA rules #
@@ -367,7 +425,7 @@
.qa:rules:package-and-qa:
rules:
- <<: *if-dot-com-gitlab-org-and-security-merge-request
- changes: *ci-patterns
+ changes: *ci-qa-patterns
allow_failure: true
- <<: *if-dot-com-gitlab-org-and-security-merge-request
changes: *qa-patterns
@@ -382,24 +440,95 @@
###############
# Rails rules #
###############
-.rails:rules:ee-and-foss:
+.rails:rules:ee-and-foss-migration:
rules:
- - <<: *if-default-refs
- changes: *code-backstage-patterns
+ - changes: *db-patterns
+ - <<: *if-merge-request-title-run-all-rspec
+
+.rails:rules:ee-and-foss-unit:
+ rules:
+ - changes: *backend-patterns
+ - <<: *if-merge-request-title-run-all-rspec
+
+.rails:rules:ee-and-foss-integration:
+ rules:
+ - changes: *backend-patterns
+ - <<: *if-merge-request-title-run-all-rspec
+
+.rails:rules:ee-and-foss-system:
+ rules:
+ - changes: *code-backstage-patterns
+ - <<: *if-merge-request-title-run-all-rspec
+
+.rails:rules:ee-and-foss-fast_spec_helper:
+ rules:
+ - changes: ["config/**/*"]
+ - <<: *if-merge-request-title-run-all-rspec
.rails:rules:default-refs-code-backstage-qa:
rules:
- <<: *if-default-refs
changes: *code-backstage-qa-patterns
-.rails:rules:ee-only:
+.rails:rules:ee-only-migration:
rules:
- <<: *if-not-ee
when: never
- - <<: *if-default-refs
- changes: *code-backstage-patterns
+ - changes: *db-patterns
+ - <<: *if-merge-request-title-run-all-rspec
-.rails:rules:as-if-foss:
+.rails:rules:ee-only-unit:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - changes: *backend-patterns
+ - <<: *if-merge-request-title-run-all-rspec
+
+.rails:rules:ee-only-integration:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - changes: *backend-patterns
+ - <<: *if-merge-request-title-run-all-rspec
+
+.rails:rules:ee-only-system:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - changes: *code-backstage-patterns
+ - <<: *if-merge-request-title-run-all-rspec
+
+.rails:rules:as-if-foss-migration:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - <<: *if-security-merge-request
+ changes: *db-patterns
+ - <<: *if-merge-request-title-as-if-foss
+ - <<: *if-merge-request
+ changes: *ci-patterns
+
+.rails:rules:as-if-foss-unit:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - <<: *if-security-merge-request
+ changes: *backend-patterns
+ - <<: *if-merge-request-title-as-if-foss
+ - <<: *if-merge-request
+ changes: *ci-patterns
+
+.rails:rules:as-if-foss-integration:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - <<: *if-security-merge-request
+ changes: *backend-patterns
+ - <<: *if-merge-request-title-as-if-foss
+ - <<: *if-merge-request
+ changes: *ci-patterns
+
+.rails:rules:as-if-foss-system:
rules:
- <<: *if-not-ee
when: never
@@ -413,6 +542,7 @@
rules:
- <<: *if-not-ee
when: never
+ - <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *code-backstage-patterns
- <<: *if-master-refs
@@ -434,6 +564,27 @@
- <<: *if-merge-request
changes: *code-backstage-patterns
+.rails:rules:rspec-coverage:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - <<: *if-master-schedule-2-hourly
+ - <<: *if-merge-request-title-run-all-rspec
+
+.rails:rules:master-schedule-nightly--code-backstage:
+ rules:
+ - <<: *if-master-schedule-nightly
+ - <<: *if-merge-request
+ changes: [".gitlab/ci/rails.gitlab-ci.yml"]
+
+.rails:rules:master-schedule-nightly--code-backstage-ee-only:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - <<: *if-master-schedule-nightly
+ - <<: *if-merge-request
+ changes: [".gitlab/ci/rails.gitlab-ci.yml"]
+
##################
# Releases rules #
##################
@@ -496,18 +647,12 @@
################
# Review rules #
################
-.review:rules:build-qa-image:
+.review:rules:review-build-cng:
rules:
- <<: *if-not-ee
when: never
- - <<: *if-dot-com-gitlab-org-and-security-merge-request
- changes: *code-qa-patterns
- - <<: *if-dot-com-gitlab-org-schedule
-
-.review:rules:review-build-cng:
- rules:
- <<: *if-dot-com-gitlab-org-merge-request
- changes: *ci-patterns
+ changes: *ci-review-patterns
- <<: *if-dot-com-gitlab-org-merge-request
changes: *frontend-patterns
- <<: *if-dot-com-gitlab-org-merge-request
@@ -521,7 +666,7 @@
- <<: *if-not-ee
when: never
- <<: *if-dot-com-gitlab-org-merge-request
- changes: *ci-patterns
+ changes: *ci-review-patterns
- <<: *if-dot-com-gitlab-org-merge-request
changes: *frontend-patterns
allow_failure: true
@@ -544,7 +689,7 @@
- <<: *if-not-ee
when: never
- <<: *if-dot-com-gitlab-org-merge-request
- changes: *ci-patterns
+ changes: *ci-review-patterns
- <<: *if-dot-com-gitlab-org-merge-request
changes: *frontend-patterns
allow_failure: true