diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-06-20 13:43:29 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-06-20 13:43:29 +0300 |
commit | 3b1af5cc7ed2666ff18b718ce5d30fa5a2756674 (patch) | |
tree | 3bc4a40e0ee51ec27eabf917c537033c0c5b14d4 /.gitlab/ci/rules.gitlab-ci.yml | |
parent | 9bba14be3f2c211bf79e15769cd9b77bc73a13bc (diff) |
Add latest changes from gitlab-org/gitlab@16-1-stable-eev16.1.0-rc42
Diffstat (limited to '.gitlab/ci/rules.gitlab-ci.yml')
-rw-r--r-- | .gitlab/ci/rules.gitlab-ci.yml | 252 |
1 files changed, 174 insertions, 78 deletions
diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index 0b660c4c0a7..1c1f6cfa96a 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -12,10 +12,10 @@ if: '$CI_PROJECT_NAME != "gitlab-foss" && $CI_PROJECT_NAME != "gitlab-ce" && $CI_PROJECT_NAME != "gitlabhq"' .if-jh: &if-jh - # Example of these projects: + # Matches these two projects: # https://jihulab.com/gitlab-cn/gitlab # https://gitlab.com/gitlab-org-sandbox/gitlab-jh-validation - if: '$CI_PROJECT_PATH =~ /^gitlab-(jh|cn)\/.*/ || $CI_PROJECT_NAME =~ /^gitlab-jh/' + if: '$CI_PROJECT_PATH == "gitlab-cn/gitlab" || $CI_PROJECT_PATH == "gitlab-org-sandbox/gitlab-jh-validation"' .if-force-ci: &if-force-ci if: '$FORCE_GITLAB_CI' @@ -48,7 +48,7 @@ if: '($CI_MERGE_REQUEST_EVENT_TYPE == "merged_result" || $CI_MERGE_REQUEST_EVENT_TYPE == "detached") && $CI_MERGE_REQUEST_LABELS !~ /pipeline:mr-approved/' .if-automated-merge-request: &if-automated-merge-request - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == "release-tools/update-gitaly" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /stable-ee$/' + if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == "release-tools/update-gitaly" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /stable-(ee|jh)$/' .if-merge-request-targeting-stable-branch: &if-merge-request-targeting-stable-branch if: '($CI_MERGE_REQUEST_EVENT_TYPE == "merged_result" || $CI_MERGE_REQUEST_EVENT_TYPE == "detached") && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^[\d-]+-stable(-ee)?$/' @@ -169,6 +169,7 @@ - ".gitlab/ci/frontend.gitlab-ci.yml" - ".gitlab/ci/build-images.gitlab-ci.yml" - ".gitlab/ci/review.gitlab-ci.yml" + - ".gitlab/ci/cng/**/*" - ".gitlab/ci/review-apps/**/*" - "scripts/review_apps/**/*" - "scripts/trigger-build.rb" @@ -185,6 +186,7 @@ - ".gitlab/ci/package-and-test/*.yml" - ".gitlab/ci/review-apps/qa.gitlab-ci.yml" - ".gitlab/ci/review-apps/rules.gitlab-ci.yml" + - ".gitlab/ci/test-on-gdk/*.yml" .gitaly-patterns: &gitaly-patterns - "GITALY_SERVER_VERSION" @@ -338,6 +340,24 @@ - "{,ee/,jh/}{bin,config,db,generator_templates,lib}/**/*" - "{,ee/,jh/}spec/**/*" +# Redis patterns + feature flags +.redis-patterns: &redis-patterns + - "{,ee/,jh/}{,spec/}app/models/concerns/redis_cacheable{,_spec}.rb" + - "{,ee/,jh/}{,spec/}app/models/ci/build_trace_chunks/redis{,_base,_trace_chunks}{,_spec}.rb" + - "{,ee/,jh/}{,spec/}lib/{,ee/,jh/}gitlab/usage_data_counters/{hll_redis_counter,redis_counter}{,_spec}.rb" + - "{,ee/,jh/}{,spec/}lib/{,ee/,jh/}gitlab/usage/metrics/instrumentations/redis{_metric,hll_metric}{,_spec}.rb" + - "{,ee/,jh/}{,spec/}lib/{,ee/,jh/}gitlab/usage/metrics/aggregates/sources/redis_hll{,_spec}.rb" + - "{,ee/,jh/}{,spec/}lib/{,ee/,jh/}gitlab/patch/action_cable_redis_listener{,_spec}.rb" + - "{,ee/,jh/}{,spec/}lib/{,ee/,jh/}gitlab/merge_requests/mergeability/redis_interface{,_spec}.rb" + - "{,ee/,jh/}{,spec/}lib/{,ee/,jh/}gitlab/markdown_cache/redis/*.rb" + - "{,ee/,jh/}{,spec/}lib/{,ee/,jh/}gitlab/redis/**/*.rb" + - "{,ee/,jh/}{,spec/}lib/{,ee/,jh/}gitlab/instrumentation/*.rb" + - "{,ee/,jh/}{,spec/}lib/{,ee/,jh/}gitlab/redis.rb" + - "{,ee/,jh/}config/initializers/7_redis.rb" + # Feature flag changes + - "{,ee/,jh/}{,spec/}lib/feature.rb" + - "config/feature_flags/**/*" + # DB patterns + .ci-patterns .db-patterns: &db-patterns - "{,ee/,jh/}{,spec/}{db,migrations}/**/*" @@ -522,9 +542,6 @@ - "config.ru" - "{,ee/,jh/}{app,bin,config,db,generator_templates,haml_lint,lib,locale,public,scripts,storybook,symbol,vendor}/**/*" - "doc/api/graphql/reference/*" # Files in this folder are auto-generated - # Mapped patterns (see tests.yml) - - "data/whats_new/*.yml" - - "doc/index.md" # CI changes - ".gitlab-ci.yml" - ".gitlab/ci/**/*" @@ -538,6 +555,9 @@ # QA changes - ".dockerignore" - "{,jh/}qa/**/*" + # Mapped patterns (see tests.yml) + - "data/whats_new/*.yml" + - "doc/index.md" # Workhorse changes - "GITLAB_WORKHORSE_VERSION" - "workhorse/**/*" @@ -815,6 +835,7 @@ - <<: *if-merge-request-labels-pipeline-expedite when: never - <<: *if-merge-request-targeting-stable-branch + changes: *setup-test-env-patterns - <<: *if-merge-request-labels-run-review-app - <<: *if-merge-request changes: *ci-build-images-patterns @@ -856,19 +877,70 @@ .build-images:rules:build-qa-image-as-if-foss: rules: - !reference [".build-images:rules:build-qa-image-merge-requests", "rules"] + - <<: *if-default-branch-schedule-nightly + variables: + ARCH: amd64,arm64 -# We want to rebuild the master image when the full e2e test pipeline runs. Currently this happens on a 2 hour schedule. -.build-images:rules:build-qa-on-gdk-master-image: +# We use a multi-stage image to: +# - (re)build the first stage in master pipelines (including scheduled pipelines), and +# - build the final stage in code-change pipelines (including MRs), and scheduled pipelines +# This has to match ".qa:rules:e2e:test-on-gdk" otherwise there won't be an image available to run GDK in the test jobs. +# Unfortunately, we can't just include ".qa:rules:e2e:test-on-gdk" because some of the conditions are manual +.build-images:rules:build-gdk-image: rules: - if: '$QA_RUN_TESTS_ON_GDK !~ /true|yes|1/i' when: never - - <<: *if-not-canonical-namespace + - !reference [".qa:rules:package-and-test-never-run", rules] + - <<: *if-default-branch-schedule-nightly # already executed in the 2-hourly schedule when: never - - <<: *if-not-ee - when: never - - <<: *if-dot-com-gitlab-org-schedule + - <<: *if-default-branch-refs # Includes scheduled pipelines variables: - ARCH: amd64,arm64 + BUILD_GDK_BASE: "true" + allow_failure: true + # We want to also rebuild the base image if MRs change certain components. + - <<: *if-merge-request + variables: + BUILD_GDK_BASE: "true" + changes: + - qa/gdk/**/* + - Gemfile.lock + - yarn.lock + - workhorse/**/* + - VERSION + - GITLAB_METRICS_EXPORTER_VERSION + - GITLAB_SHELL_VERSION + - GITALY_SERVER_VERSION + allow_failure: true + # The rest are included to be consistent with .qa:rules:e2e:test-on-gdk + - <<: *if-merge-request-targeting-stable-branch + changes: *setup-test-env-patterns + allow_failure: true + - <<: *if-ruby2-branch + allow_failure: true + # We include the job under the matching conditions below, but unlike in .qa:rules:e2e:test-on-gdk we don't need to + # set OMNIBUS_GITLAB_BUILD_ON_ALL_OS when testing against GDK + - <<: *if-merge-request + changes: *dependency-patterns + allow_failure: true + - <<: *if-merge-request-labels-run-all-e2e + allow_failure: true + - <<: *if-merge-request + changes: *feature-flag-development-config-patterns + allow_failure: true + - <<: *if-merge-request + changes: *initializers-patterns + allow_failure: true + - <<: *if-merge-request + changes: *nodejs-patterns + allow_failure: true + - <<: *if-merge-request + changes: *ci-qa-patterns + allow_failure: true + - <<: *if-merge-request + changes: *code-qa-patterns + allow_failure: true + - <<: *if-force-ci + allow_failure: true .build-images:rules:build-assets-image: rules: @@ -877,6 +949,7 @@ - <<: *if-merge-request-labels-pipeline-expedite when: never - <<: *if-merge-request-targeting-stable-branch + changes: *setup-test-env-patterns - <<: *if-ruby2-branch - <<: *if-merge-request-labels-run-review-app - <<: *if-auto-deploy-branches @@ -884,7 +957,8 @@ changes: *ci-build-images-patterns - <<: *if-default-refs changes: *code-qa-patterns - # Rules to support .qa:rules:package-and-test-ee + # Rules to support .qa:rules:package-and-test + - <<: *if-default-branch-schedule-nightly - <<: *if-merge-request changes: *dependency-patterns - <<: *if-merge-request-labels-run-all-e2e @@ -902,8 +976,6 @@ rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-labels-pipeline-expedite - when: never - !reference [".build-images:rules:build-assets-image", "rules"] ################# @@ -1072,10 +1144,12 @@ - <<: *if-merge-request-labels-pipeline-expedite when: never - <<: *if-merge-request-targeting-stable-branch + changes: *setup-test-env-patterns - <<: *if-merge-request-labels-run-review-app - <<: *if-merge-request-labels-run-all-e2e - <<: *if-auto-deploy-branches - <<: *if-ruby2-branch + - <<: *if-default-branch-schedule-nightly - <<: *if-default-refs changes: *ci-build-images-patterns - <<: *if-default-refs @@ -1280,17 +1354,6 @@ ########## # Notify # ########## -.notify:rules:create-issues-for-failing-tests: - rules: - - <<: *if-not-canonical-namespace - when: never - # Don't report child pipeline failures - - if: '$CI_PIPELINE_SOURCE == "parent_pipeline"' - when: never - - if: '$CREATE_ISSUES_FOR_FAILING_TESTS == "true"' - when: on_failure - allow_failure: true - .notify:rules:notify-package-and-test-failure: rules: - <<: *if-not-canonical-namespace @@ -1298,6 +1361,7 @@ - <<: *if-security-merge-request when: never - <<: *if-merge-request-targeting-stable-branch + changes: *setup-test-env-patterns when: always ############### @@ -1310,6 +1374,13 @@ ############ # QA rules # ############ +.qa:rules:code-merge-request-manual: + rules: + - <<: *if-merge-request + changes: *code-patterns + when: manual + allow_failure: true + .qa:rules:internal: rules: - <<: *if-default-refs @@ -1341,6 +1412,7 @@ - <<: *if-merge-request-labels-pipeline-expedite when: never - <<: *if-merge-request-targeting-stable-branch + changes: *setup-test-env-patterns allow_failure: true - <<: *if-merge-request changes: *code-backstage-qa-patterns @@ -1369,7 +1441,7 @@ - <<: *if-force-ci allow_failure: true -.qa:rules:package-and-test-common: +.qa:rules:package-and-test-never-run: rules: - <<: *if-not-canonical-namespace when: never @@ -1377,7 +1449,12 @@ when: never - <<: *if-merge-request-labels-pipeline-expedite when: never + +.qa:rules:package-and-test-common: + rules: + - !reference [".qa:rules:package-and-test-never-run", rules] - <<: *if-merge-request-targeting-stable-branch + changes: *setup-test-env-patterns allow_failure: true - <<: *if-ruby2-branch allow_failure: true @@ -1417,17 +1494,16 @@ - <<: *if-force-ci when: manual allow_failure: true - - <<: *if-merge-request - changes: *code-patterns - when: manual - allow_failure: true + # We used to have a rule at the end here that would catch any remaining code MRs and allow the job to be run + # manually. That rule is now in ".qa:rules:code-merge-request-manual" so it can be included when needed and we can + # still use ".qa:rules:package-and-test-common" in jobs we don't want to be manual. .qa:rules:package-and-test-schedule: rules: - <<: *if-dot-com-gitlab-org-schedule allow_failure: true variables: - SKIP_REPORT_IN_ISSUES: "false" + CREATE_TEST_FAILURE_ISSUES: "true" PROCESS_TEST_RESULTS: "true" KNAPSACK_GENERATE_REPORT: "true" UPDATE_QA_CACHE: "true" @@ -1436,17 +1512,15 @@ .qa:rules:package-and-test-ee: rules: + - <<: *if-default-branch-schedule-nightly # already executed in the 2-hourly schedule + when: never - !reference [".qa:rules:package-and-test-common", rules] - !reference [".qa:rules:package-and-test-schedule", rules] + - !reference [".qa:rules:code-merge-request-manual", rules] .qa:rules:package-and-test-ce: rules: - - <<: *if-not-canonical-namespace - when: never - - <<: *if-not-ee - when: never - - <<: *if-merge-request-labels-pipeline-expedite - when: never + - !reference [".qa:rules:package-and-test-never-run", rules] - <<: *if-dot-com-gitlab-org-and-security-merge-request changes: *ci-build-images-patterns when: manual @@ -1455,22 +1529,30 @@ changes: *code-qa-patterns when: manual allow_failure: true + - <<: *if-default-branch-schedule-nightly + allow_failure: true + variables: + CREATE_TEST_FAILURE_ISSUES: "true" + PROCESS_TEST_RESULTS: "true" + QA_SAVE_TEST_METRICS: "true" + QA_EXPORT_TEST_METRICS: "false" .qa:rules:e2e:test-on-gdk: rules: - if: '$QA_RUN_TESTS_ON_GDK !~ /true|yes|1/i' when: never + - <<: *if-default-branch-schedule-nightly # already executed in the 2-hourly schedule + when: never - !reference [".qa:rules:package-and-test-common", rules] - !reference [".qa:rules:package-and-test-schedule", rules] + # Run automatically in all other code MRs that weren't included in ".qa:rules:package-and-test-common". + - <<: *if-merge-request + changes: *code-patterns + allow_failure: true -.qa:rules:package-and-test-sidebar: +.qa:rules:package-and-test-old-nav: rules: - - <<: *if-not-canonical-namespace - when: never - - <<: *if-not-ee - when: never - - <<: *if-merge-request-labels-pipeline-expedite - when: never + - !reference [".qa:rules:package-and-test-never-run", rules] - <<: *if-merge-request changes: *code-patterns when: manual @@ -1478,7 +1560,7 @@ - <<: *if-default-branch-schedule-nightly allow_failure: true variables: - SKIP_REPORT_IN_ISSUES: "false" + CREATE_TEST_FAILURE_ISSUES: "true" PROCESS_TEST_RESULTS: "true" QA_SAVE_TEST_METRICS: "true" QA_EXPORT_TEST_METRICS: "false" @@ -1486,12 +1568,24 @@ .qa:rules:package-and-test-nightly: rules: - <<: *if-default-branch-schedule-nightly + allow_failure: true variables: KNAPSACK_GENERATE_REPORT: "true" - SKIP_REPORT_IN_ISSUES: "false" + PROCESS_TEST_RESULTS: "true" + CREATE_TEST_FAILURE_ISSUES: "true" QA_SAVE_TEST_METRICS: "true" QA_EXPORT_TEST_METRICS: "false" +.qa:rules:trigger-omnibus: + rules: + - !reference [".qa:rules:package-and-test-nightly", rules] + - !reference [".qa:rules:package-and-test-ee", rules] + +.qa:rules:trigger-omnibus-ce: + rules: + - !reference [".qa:rules:package-and-test-nightly", rules] + - !reference [".qa:rules:package-and-test-ce", rules] + ############### # Rails rules # ############### @@ -1501,6 +1595,15 @@ changes: *setup-test-env-patterns - <<: *if-merge-request-labels-run-all-rspec +.rails:rules:single-redis: + rules: + - <<: *if-merge-request-labels-run-single-db + - <<: *if-merge-request-labels-pipeline-expedite + when: never + - <<: *if-merge-request + changes: *redis-patterns + - <<: *if-default-branch-schedule-nightly + .rails:rules:single-db: rules: - <<: *if-merge-request-labels-run-single-db @@ -2210,17 +2313,6 @@ - <<: *if-default-refs changes: *python-patterns -.reports:rules:yarn-audit-dependency_scanning: - rules: - - <<: *if-merge-request-labels-pipeline-expedite - when: never - - if: '$DEPENDENCY_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\bdependency_scanning\b/' - when: never - # Run Dependency Scanning on master until https://gitlab.com/gitlab-org/gitlab/-/issues/361657 is resolved - - <<: *if-default-branch-refs - - <<: *if-default-refs - changes: *nodejs-patterns - .reports:rules:test-dast: rules: - <<: *if-merge-request-labels-pipeline-expedite @@ -2411,25 +2503,6 @@ - <<: *if-default-refs changes: *code-backstage-patterns -.setup:rules:rails-production-server-boot: - rules: - - <<: *if-default-refs - changes: *code-patterns - -.setup:rules:no-ee-check: - rules: - - <<: *if-not-foss - when: never - - <<: *if-default-refs - changes: *code-backstage-patterns - -.setup:rules:no-jh-check: - rules: - - <<: *if-jh - when: never - - <<: *if-default-refs - changes: *code-backstage-patterns - .setup:rules:verify-ruby-3.0: rules: - <<: *if-merge-request-labels-run-in-ruby2 @@ -2461,6 +2534,29 @@ - "scripts/rspec_helpers.sh" ####################### +# Preflight rules # +####################### + +.preflight:rules:rails-production-server-boot: + rules: + - <<: *if-default-refs + changes: *code-patterns + +.preflight:rules:no-ee-check: + rules: + - <<: *if-not-foss + when: never + - <<: *if-default-refs + changes: *code-backstage-patterns + +.preflight:rules:no-jh-check: + rules: + - <<: *if-jh + when: never + - <<: *if-default-refs + changes: *code-backstage-patterns + +####################### # Test metadata rules # ####################### .test-metadata:rules:retrieve-tests-metadata: |