diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-04-11 21:08:31 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-04-11 21:08:31 +0300 |
commit | 1a2f754734eb189e371e25e685413808f69a7f2c (patch) | |
tree | 2c97884971f36d9026600897b74364d2e212a109 /.gitlab | |
parent | f1ce71c88c407709987dd4a7b40bdb7596b6baa2 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to '.gitlab')
-rw-r--r-- | .gitlab/ci/build-images.gitlab-ci.yml | 7 | ||||
-rw-r--r-- | .gitlab/ci/frontend.gitlab-ci.yml | 6 | ||||
-rw-r--r-- | .gitlab/ci/package-and-test/main.gitlab-ci.yml | 30 | ||||
-rw-r--r-- | .gitlab/ci/package-and-test/rules.gitlab-ci.yml | 10 | ||||
-rw-r--r-- | .gitlab/ci/qa.gitlab-ci.yml | 19 | ||||
-rw-r--r-- | .gitlab/ci/rails.gitlab-ci.yml | 152 | ||||
-rw-r--r-- | .gitlab/ci/rails/rspec-foss-impact.gitlab-ci.yml.erb | 2 | ||||
-rw-r--r-- | .gitlab/ci/rails/rspec-predictive.gitlab-ci.yml.erb | 153 | ||||
-rw-r--r-- | .gitlab/ci/rails/shared.gitlab-ci.yml | 5 | ||||
-rw-r--r-- | .gitlab/ci/rules.gitlab-ci.yml | 346 | ||||
-rw-r--r-- | .gitlab/ci/setup.gitlab-ci.yml | 13 |
11 files changed, 438 insertions, 305 deletions
diff --git a/.gitlab/ci/build-images.gitlab-ci.yml b/.gitlab/ci/build-images.gitlab-ci.yml index 4ee15ccb311..c1123b29d67 100644 --- a/.gitlab/ci/build-images.gitlab-ci.yml +++ b/.gitlab/ci/build-images.gitlab-ci.yml @@ -71,3 +71,10 @@ build-assets-image: # The `cached-assets-hash.txt` file is used in `review-build-cng-env` (`.gitlab/ci/review-apps/main.gitlab-ci.yml`) # to pass the assets image tag to the CNG downstream pipeline. - cached-assets-hash.txt + +build-assets-image as-if-foss: + extends: + - build-assets-image + - .as-if-foss + - .build-images:rules:build-assets-image-as-if-foss + needs: ["compile-production-assets as-if-foss"] diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml index d296604bc68..ad7f4552ae3 100644 --- a/.gitlab/ci/frontend.gitlab-ci.yml +++ b/.gitlab/ci/frontend.gitlab-ci.yml @@ -49,6 +49,12 @@ compile-production-assets: after_script: - rm -f /etc/apt/sources.list.d/google*.list # We don't need to update Chrome here +compile-production-assets as-if-foss: + extends: + - compile-production-assets + - .as-if-foss + - .frontend:rules:compile-production-assets-as-if-foss + compile-test-assets: extends: - .compile-assets-base diff --git a/.gitlab/ci/package-and-test/main.gitlab-ci.yml b/.gitlab/ci/package-and-test/main.gitlab-ci.yml index 7abcca3a891..97462b9a4dd 100644 --- a/.gitlab/ci/package-and-test/main.gitlab-ci.yml +++ b/.gitlab/ci/package-and-test/main.gitlab-ci.yml @@ -4,6 +4,9 @@ default: interruptible: true +workflow: + name: $PIPELINE_NAME + include: - local: .gitlab/ci/package-and-test/rules.gitlab-ci.yml - local: .gitlab/ci/package-and-test/variables.gitlab-ci.yml @@ -54,13 +57,6 @@ stages: stage: test tags: - e2e - needs: - - job: trigger-omnibus - optional: true - - job: download-knapsack-report - artifacts: true - optional: true - - job: check-release-set variables: QA_GENERATE_ALLURE_REPORT: "true" QA_CAN_TEST_PRAEFECT: "false" @@ -128,13 +124,21 @@ trigger-omnibus-env: echo "OMNIBUS_GITLAB_CACHE_EDITION=${OMNIBUS_GITLAB_CACHE_EDITION:-GITLAB}" >> $BUILD_ENV echo "OMNIBUS_GITLAB_BUILD_ON_ALL_OS=${OMNIBUS_GITLAB_BUILD_ON_ALL_OS:-false}" >> $BUILD_ENV echo "GITLAB_ASSETS_TAG=$(assets_image_tag)" >> $BUILD_ENV - echo "EE=$([[ $FOSS_ONLY == 'true' ]] && echo 'false' || echo 'true')" >> $BUILD_ENV + echo "EE=$([[ $FOSS_ONLY == '1' ]] && echo 'false' || echo 'true')" >> $BUILD_ENV echo "Built environment file for omnibus build:" cat $BUILD_ENV artifacts: reports: dotenv: $BUILD_ENV +trigger-omnibus-env-ce: + extends: + - trigger-omnibus-env + - .rules:omnibus-build-ce + needs: + - pipeline: $PARENT_PIPELINE_ID + job: build-assets-image as-if-foss + trigger-omnibus: extends: .rules:omnibus-build stage: .pre @@ -166,6 +170,16 @@ trigger-omnibus: project: gitlab-org/build/omnibus-gitlab-mirror strategy: depend +trigger-omnibus-ce: + extends: + - trigger-omnibus + - .rules:omnibus-build-ce + variables: + # Override gitlab repository so that omnibus doesn't use foss repository for CE build + GITLAB_ALTERNATIVE_REPO: $CI_PROJECT_URL + needs: + - trigger-omnibus-env-ce + download-knapsack-report: extends: - .gitlab-qa-image diff --git a/.gitlab/ci/package-and-test/rules.gitlab-ci.yml b/.gitlab/ci/package-and-test/rules.gitlab-ci.yml index 640f5f53bfa..8f63dbc38c3 100644 --- a/.gitlab/ci/package-and-test/rules.gitlab-ci.yml +++ b/.gitlab/ci/package-and-test/rules.gitlab-ci.yml @@ -60,7 +60,13 @@ rules: - if: $SKIP_OMNIBUS_TRIGGER == "true" when: never - - when: always + - if: $FOSS_ONLY != "1" + +.rules:omnibus-build-ce: + rules: + - if: $SKIP_OMNIBUS_TRIGGER == "true" + when: never + - if: $FOSS_ONLY == "1" .rules:update-cache: rules: @@ -117,7 +123,7 @@ .rules:test:ee-only: rules: - - if: $FOSS_ONLY == "true" + - if: $FOSS_ONLY == "1" when: never .rules:test:update: diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml index d935fecba01..2956eef6a9e 100644 --- a/.gitlab/ci/qa.gitlab-ci.yml +++ b/.gitlab/ci/qa.gitlab-ci.yml @@ -55,7 +55,7 @@ qa:update-qa-cache: e2e:package-and-test-ee: extends: - .production # this makes sure GITLAB_ALLOW_SEPARATE_CI_DATABASE is passed to the child pipeline - - .qa:rules:package-and-test + - .qa:rules:package-and-test-ee stage: qa needs: - build-assets-image @@ -70,6 +70,7 @@ e2e:package-and-test-ee: RUN_WITH_BUNDLE: "true" # instructs pipeline to install and run gitlab-qa gem via bundler QA_PATH: qa # sets the optional path for bundler to run from QA_RUN_TYPE: e2e-package-and-test + PIPELINE_NAME: E2E Omnibus GitLab EE inherit: variables: - CHROME_VERSION @@ -89,6 +90,22 @@ e2e:package-and-test-ee: - artifact: package-and-test-pipeline.yml job: e2e-test-pipeline-generate +e2e:package-and-test-ce: + extends: + - e2e:package-and-test-ee + - .qa:rules:package-and-test-ce + needs: + - build-assets-image as-if-foss + - build-qa-image as-if-foss + - e2e-test-pipeline-generate + variables: + FOSS_ONLY: "1" + QA_RUN_TYPE: e2e-package-and-test-ce + ALLURE_JOB_NAME: e2e-package-and-test-ce + RELEASE: ${REGISTRY_HOST}/${REGISTRY_GROUP}/build/omnibus-gitlab-mirror/gitlab-ce:${CI_COMMIT_SHA} + GITLAB_QA_IMAGE: ${CI_REGISTRY_IMAGE}/gitlab-ce-qa:${CI_COMMIT_SHA} + PIPELINE_NAME: E2E Omnibus GitLab CE + e2e:test-on-gdk: extends: - .qa:rules:e2e:test-on-gdk diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index 89445fb9315..d5480999d87 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -74,12 +74,6 @@ rspec migration pg13: - .rails:rules:ee-and-foss-migration - .rspec-migration-parallel -rspec migration pg13 predictive: - extends: - - rspec migration pg13 - - .predictive-rspec-tests - - .rails:rules:ee-and-foss-migration:predictive - rspec background_migration pg13: extends: - .rspec-base-pg13 @@ -87,12 +81,6 @@ rspec background_migration pg13: - .rails:rules:ee-and-foss-background-migration - .rspec-background-migration-parallel -rspec background_migration pg13 predictive: - extends: - - rspec background_migration pg13 - - .predictive-rspec-tests - - .rails:rules:ee-and-foss-background-migration:predictive - rspec migration pg13 single-db: extends: - rspec migration pg13 @@ -135,12 +123,6 @@ rspec unit pg13: - .rails:rules:ee-and-foss-unit - .rspec-unit-parallel -rspec unit pg13 predictive: - extends: - - rspec unit pg13 - - .predictive-rspec-tests - - .rails:rules:ee-and-foss-unit:predictive - rspec unit pg13 single-db: extends: - rspec unit pg13 @@ -165,12 +147,6 @@ rspec integration pg13: - .rails:rules:ee-and-foss-integration - .rspec-integration-parallel -rspec integration pg13 predictive: - extends: - - rspec integration pg13 - - .predictive-rspec-tests - - .rails:rules:ee-and-foss-integration:predictive - rspec integration pg13 single-db: extends: - rspec integration pg13 @@ -197,12 +173,6 @@ rspec system pg13: variables: DEBUG_GITLAB_TRANSACTION_STACK: "true" -rspec system pg13 predictive: - extends: - - rspec system pg13 - - .predictive-rspec-tests - - .rails:rules:ee-and-foss-system:predictive - rspec system pg13 single-db: extends: - rspec system pg13 @@ -305,24 +275,12 @@ rspec:coverage: - rspec unit pg13 - rspec integration pg13 - rspec system pg13 - # FOSS/EE predictive jobs - - rspec migration pg13 predictive - - rspec background_migration pg13 predictive - - rspec unit pg13 predictive - - rspec integration pg13 predictive - - rspec system pg13 predictive # EE jobs - rspec-ee migration pg13 - rspec-ee background_migration pg13 - rspec-ee unit pg13 - rspec-ee integration pg13 - rspec-ee system pg13 - # EE predictive jobs - - rspec-ee migration pg13 predictive - - rspec-ee background_migration pg13 predictive - - rspec-ee unit pg13 predictive - - rspec-ee integration pg13 predictive - - rspec-ee system pg13 predictive # Memory jobs - memory-on-boot script: @@ -402,6 +360,56 @@ rspec:flaky-tests-report: ################################################## # EE: default refs (MRs, default branch, schedules) jobs # +rspec-predictive:pipeline-generate: + extends: + - .rails:rules:rspec-predictive + stage: prepare + needs: ["detect-tests", "retrieve-tests-metadata"] + script: + - scripts/generate_rspec_pipeline.rb -t "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}" -k "${KNAPSACK_RSPEC_SUITE_REPORT_PATH}" -f "${RSPEC_MATCHING_TESTS_FOSS_PATH}" -o "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}.yml" + - scripts/generate_rspec_pipeline.rb -t "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}" -k "${KNAPSACK_RSPEC_SUITE_REPORT_PATH}" -f "${RSPEC_MATCHING_TESTS_EE_PATH}" -o "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}-ee.yml" -p "ee/" + - echo "Content of ${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}.yml:" + - cat "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}.yml" + - echo "\n================================================\n" + - echo "Content of ${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}-ee.yml:" + - cat "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}-ee.yml" + artifacts: + expire_in: 1 day + paths: + - "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}.yml" + - "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}-ee.yml" + +rspec:predictive:trigger: + extends: + - .rails:rules:rspec-predictive + stage: test + needs: + - job: "setup-test-env" + artifacts: false + - job: "retrieve-tests-metadata" + artifacts: false + - job: "compile-test-assets" + artifacts: false + - job: "rspec-predictive:pipeline-generate" + artifacts: true + variables: + PARENT_PIPELINE_ID: $CI_PIPELINE_ID + trigger: + strategy: depend + forward: + yaml_variables: true + pipeline_variables: true + include: + - artifact: "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}.yml" + job: rspec-predictive:pipeline-generate + +rspec-ee:predictive:trigger: + extends: rspec:predictive:trigger + trigger: + include: + - artifact: "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}-ee.yml" + job: rspec-predictive:pipeline-generate + rspec migration pg13-as-if-foss: extends: - .rspec-base-pg13-as-if-foss @@ -409,12 +417,6 @@ rspec migration pg13-as-if-foss: - .rails:rules:as-if-foss-migration - .rspec-migration-parallel -rspec migration pg13-as-if-foss predictive: - extends: - - rspec migration pg13-as-if-foss - - .predictive-rspec-tests - - .rails:rules:as-if-foss-migration:predictive - rspec background_migration pg13-as-if-foss: extends: - .rspec-base-pg13-as-if-foss @@ -422,12 +424,6 @@ rspec background_migration pg13-as-if-foss: - .rails:rules:as-if-foss-background-migration - .rspec-background-migration-parallel -rspec background_migration pg13-as-if-foss predictive: - extends: - - rspec background_migration pg13-as-if-foss - - .predictive-rspec-tests - - .rails:rules:as-if-foss-background-migration:predictive - rspec migration pg13-as-if-foss single-db: extends: - rspec migration pg13-as-if-foss @@ -458,12 +454,6 @@ rspec unit pg13-as-if-foss: - .rails:rules:as-if-foss-unit - .rspec-unit-parallel -rspec unit pg13-as-if-foss predictive: - extends: - - rspec unit pg13-as-if-foss - - .predictive-rspec-tests - - .rails:rules:as-if-foss-unit:predictive - rspec unit pg13-as-if-foss single-db: extends: - rspec unit pg13-as-if-foss @@ -482,12 +472,6 @@ rspec integration pg13-as-if-foss: - .rails:rules:as-if-foss-integration - .rspec-integration-parallel -rspec integration pg13-as-if-foss predictive: - extends: - - rspec integration pg13-as-if-foss - - .predictive-rspec-tests - - .rails:rules:as-if-foss-integration:predictive - rspec integration pg13-as-if-foss single-db: extends: - rspec integration pg13-as-if-foss @@ -506,12 +490,6 @@ rspec system pg13-as-if-foss: - .rails:rules:as-if-foss-system - .rspec-system-parallel -rspec system pg13-as-if-foss predictive: - extends: - - rspec system pg13-as-if-foss - - .predictive-rspec-tests - - .rails:rules:as-if-foss-system:predictive - rspec system pg13-as-if-foss single-db: extends: - rspec system pg13-as-if-foss @@ -531,12 +509,6 @@ rspec-ee migration pg13: - .rails:rules:ee-only-migration - .rspec-ee-migration-parallel -rspec-ee migration pg13 predictive: - extends: - - rspec-ee migration pg13 - - .predictive-rspec-tests - - .rails:rules:ee-only-migration:predictive - rspec-ee background_migration pg13: extends: - .rspec-ee-base-pg13 @@ -544,12 +516,6 @@ rspec-ee background_migration pg13: - .rails:rules:ee-only-background-migration - .rspec-ee-background-migration-parallel -rspec-ee background_migration pg13 predictive: - extends: - - rspec-ee background_migration pg13 - - .predictive-rspec-tests - - .rails:rules:ee-only-background-migration:predictive - rspec-ee migration pg13 single-db: extends: - rspec-ee migration pg13 @@ -597,12 +563,6 @@ rspec-ee unit pg13 es8: - .rspec-ee-base-pg13-es8 - .rspec-ee-unit-parallel -rspec-ee unit pg13 predictive: - extends: - - rspec-ee unit pg13 - - .predictive-rspec-tests - - .rails:rules:ee-only-unit:predictive - rspec-ee unit pg13 single-db: extends: - rspec-ee unit pg13 @@ -626,12 +586,6 @@ rspec-ee integration pg13 es8: - .rspec-ee-base-pg13-es8 - .rspec-ee-integration-parallel -rspec-ee integration pg13 predictive: - extends: - - rspec-ee integration pg13 - - .predictive-rspec-tests - - .rails:rules:ee-only-integration:predictive - rspec-ee integration pg13 single-db: extends: - rspec-ee integration pg13 @@ -655,12 +609,6 @@ rspec-ee system pg13 es8: - .rspec-ee-base-pg13-es8 - .rspec-ee-system-parallel -rspec-ee system pg13 predictive: - extends: - - rspec-ee system pg13 - - .predictive-rspec-tests - - .rails:rules:ee-only-system:predictive - rspec-ee system pg13 single-db: extends: - rspec-ee system pg13 diff --git a/.gitlab/ci/rails/rspec-foss-impact.gitlab-ci.yml.erb b/.gitlab/ci/rails/rspec-foss-impact.gitlab-ci.yml.erb index 38d964af62a..e7a1ee6022f 100644 --- a/.gitlab/ci/rails/rspec-foss-impact.gitlab-ci.yml.erb +++ b/.gitlab/ci/rails/rspec-foss-impact.gitlab-ci.yml.erb @@ -1,4 +1,4 @@ -# RSpec FOSS impact pipeline loaded dynamically by script: scripts/generate-rspec-foss-impact-pipeline +# RSpec FOSS impact pipeline loaded dynamically by script: scripts/generate_rspec_pipeline.rb include: - local: .gitlab/ci/rails/shared.gitlab-ci.yml diff --git a/.gitlab/ci/rails/rspec-predictive.gitlab-ci.yml.erb b/.gitlab/ci/rails/rspec-predictive.gitlab-ci.yml.erb new file mode 100644 index 00000000000..fcd8754c76a --- /dev/null +++ b/.gitlab/ci/rails/rspec-predictive.gitlab-ci.yml.erb @@ -0,0 +1,153 @@ +# RSpec preditive pipeline loaded dynamically by script: scripts/generate_rspec_pipeline.rb + +include: + - local: .gitlab/ci/rails/shared.gitlab-ci.yml + +default: + image: $DEFAULT_CI_IMAGE + tags: + - gitlab-org + # Default job timeout set to 90m https://gitlab.com/gitlab-com/gl-infra/infrastructure/-/issues/10520 + timeout: 90m + interruptible: true + +stages: + - test + +dont-interrupt-me: + extends: .rules:dont-interrupt + stage: .pre + interruptible: false + script: + - echo "This jobs makes sure this pipeline won't be interrupted! See https://docs.gitlab.com/ee/ci/yaml/#interruptible." + +.base-predictive: + needs: + - pipeline: $PARENT_PIPELINE_ID + job: detect-tests + - pipeline: $PARENT_PIPELINE_ID + job: setup-test-env + - pipeline: $PARENT_PIPELINE_ID + job: retrieve-tests-metadata + - pipeline: $PARENT_PIPELINE_ID + job: compile-test-assets + rules: + - when: always + variables: + RSPEC_TESTS_MAPPING_ENABLED: "true" + +<% if test_suite_prefix.nil? %> +.base-rspec-predictive: + extends: + - .rspec-base-pg12 + - .base-predictive + variables: + # We're using the FOSS one here because we want to exclude EE-only ones + # For EE-only ones, we have EE-only jobs. + RSPEC_TESTS_FILTER_FILE: "${RSPEC_MATCHING_TESTS_FOSS_PATH}" + +<% if rspec_files_per_test_level.dig(:migration, :files).size > 0 %> +rspec migration predictive: + extends: + - .base-rspec-predictive + - .rspec-base-migration +<% if rspec_files_per_test_level.dig(:migration, :parallelization) > 1 %> + parallel: <%= rspec_files_per_test_level.dig(:migration, :parallelization) %> +<% end %> +<% end %> + +<% if rspec_files_per_test_level.dig(:background_migration, :files).size > 0 %> +rspec background_migration predictive: + extends: + - .base-rspec-predictive + - .rspec-base-migration +<% if rspec_files_per_test_level.dig(:background_migration, :parallelization) > 1 %> + parallel: <%= rspec_files_per_test_level.dig(:background_migration, :parallelization) %> +<% end %> +<% end %> + +<% if rspec_files_per_test_level.dig(:unit, :files).size > 0 %> +rspec unit predictive: + extends: + - .base-rspec-predictive +<% if rspec_files_per_test_level.dig(:unit, :parallelization) > 1 %> + parallel: <%= rspec_files_per_test_level.dig(:unit, :parallelization) %> +<% end %> +<% end %> + +<% if rspec_files_per_test_level.dig(:integration, :files).size > 0 %> +rspec integration predictive: + extends: + - .base-rspec-predictive +<% if rspec_files_per_test_level.dig(:integration, :parallelization) > 1 %> + parallel: <%= rspec_files_per_test_level.dig(:integration, :parallelization) %> +<% end %> +<% end %> + +<% if rspec_files_per_test_level.dig(:system, :files).size > 0 %> +rspec system predictive: + extends: + - .base-rspec-predictive +<% if rspec_files_per_test_level.dig(:system, :parallelization) > 1 %> + parallel: <%= rspec_files_per_test_level.dig(:system, :parallelization) %> +<% end %> +<% end %> + +<% end %> + +<% if test_suite_prefix == 'ee/' %> +.base-rspec-ee-predictive: + extends: + - .rspec-ee-base-pg12 + - .base-predictive + variables: + RSPEC_TESTS_FILTER_FILE: "${RSPEC_MATCHING_TESTS_EE_PATH}" + +<% if rspec_files_per_test_level.dig(:migration, :files).size > 0 %> +rspec-ee migration predictive: + extends: + - .base-rspec-ee-predictive + - .rspec-base-migration +<% if rspec_files_per_test_level.dig(:migration, :parallelization) > 1 %> + parallel: <%= rspec_files_per_test_level.dig(:migration, :parallelization) %> +<% end %> +<% end %> + +<% if rspec_files_per_test_level.dig(:background_migration, :files).size > 0 %> +rspec-ee background_migration predictive: + extends: + - .base-rspec-ee-predictive + - .rspec-base-migration +<% if rspec_files_per_test_level.dig(:background_migration, :parallelization) > 1 %> + parallel: <%= rspec_files_per_test_level.dig(:background_migration, :parallelization) %> +<% end %> +<% end %> + +<% if rspec_files_per_test_level.dig(:unit, :files).size > 0 %> +rspec-ee unit predictive: + extends: + - .base-rspec-ee-predictive +<% if rspec_files_per_test_level.dig(:unit, :parallelization) > 1 %> + parallel: <%= rspec_files_per_test_level.dig(:unit, :parallelization) %> +<% end %> +<% end %> + +<% if rspec_files_per_test_level.dig(:integration, :files).size > 0 %> +rspec-ee integration predictive: + extends: + - .base-rspec-ee-predictive +<% if rspec_files_per_test_level.dig(:integration, :parallelization) > 1 %> + parallel: <%= rspec_files_per_test_level.dig(:integration, :parallelization) %> +<% end %> +<% end %> + +<% if rspec_files_per_test_level.dig(:system, :files).size > 0 %> +rspec-ee system predictive: + extends: + - .base-rspec-ee-predictive +<% if rspec_files_per_test_level.dig(:system, :parallelization) > 1 %> + parallel: <%= rspec_files_per_test_level.dig(:system, :parallelization) %> +<% end %> +<% end %> + +<% end %> diff --git a/.gitlab/ci/rails/shared.gitlab-ci.yml b/.gitlab/ci/rails/shared.gitlab-ci.yml index 62e8547fa5a..adcfcd2010f 100644 --- a/.gitlab/ci/rails/shared.gitlab-ci.yml +++ b/.gitlab/ci/rails/shared.gitlab-ci.yml @@ -28,10 +28,6 @@ include: - run_timed_command "scripts/gitaly-test-spawn" # Do not use 'bundle exec' here - echo -e "\e[0Ksection_end:`date +%s`:gitaly-test-spawn\r\e[0K" -.predictive-rspec-tests: - variables: - RSPEC_TESTS_MAPPING_ENABLED: "true" - .single-db: variables: DECOMPOSED_DB: "false" @@ -61,7 +57,6 @@ include: RUBY_GC_MALLOC_LIMIT_MAX: 134217728 RECORD_DEPRECATIONS: "true" GEO_SECONDARY_PROXY: 0 - RSPEC_TESTS_FILTER_FILE: "${RSPEC_MATCHING_TESTS_PATH}" SUCCESSFULLY_RETRIED_TEST_EXIT_CODE: 137 needs: - job: "setup-test-env" diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index c61819d0a4c..ab5c56214be 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -593,7 +593,6 @@ ################## # Conditions set # ################## - .strict-ee-only-rules: rules: - <<: *if-not-ee @@ -610,15 +609,6 @@ - <<: *if-merge-request-labels-pipeline-expedite when: never -.rails:rules:predictive-default-rules: - rules: - - <<: *if-merge-request-approved - when: never - - <<: *if-automated-merge-request - when: never - - <<: *if-security-merge-request - when: never - .rails:rules:run-search-tests: rules: - !reference [".rails:rules:default-branch-schedule-nightly--code-backstage-ee-only", rules] @@ -639,6 +629,40 @@ - <<: *if-merge-request-not-approved when: never +.rails:rules:system-default-rules: + rules: + - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns + - <<: *if-merge-request + changes: *workhorse-patterns + - <<: *if-automated-merge-request + changes: *code-backstage-patterns + - <<: *if-security-merge-request + changes: *code-backstage-patterns + - <<: *if-merge-request-not-approved + when: never + +.rails:rules:previous-failed-tests-default-rules: + rules: + - <<: *if-security-merge-request + when: never + - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *code-backstage-patterns + +########################### +# Conditions set for JiHu # +########################### +.rails:rules:predictive-default-rules: + rules: + - <<: *if-merge-request-approved + when: never + - <<: *if-automated-merge-request + when: never + - <<: *if-security-merge-request + when: never + .rails:rules:as-if-foss-migration-unit-integration:predictive-default-rules: rules: - <<: *if-merge-request @@ -654,43 +678,115 @@ when: never - !reference [".rails:rules:as-if-foss-migration-unit-integration:predictive-default-rules", rules] -.rails:rules:system-default-rules: +.rails:rules:system:predictive-default-rules: rules: - <<: *if-merge-request-labels-run-all-rspec + when: never - <<: *if-merge-request changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *workhorse-patterns - - <<: *if-automated-merge-request - changes: *code-backstage-patterns - - <<: *if-security-merge-request - changes: *code-backstage-patterns - - <<: *if-merge-request-not-approved when: never + - <<: *if-merge-request + changes: *ci-patterns + when: never + - <<: *if-merge-request + changes: *code-backstage-patterns -.rails:rules:system:predictive-default-rules: +.rails:rules:ee-and-foss-migration:predictive: rules: - - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-fork-merge-request + changes: *db-patterns + - !reference [".rails:rules:predictive-default-rules", rules] + - !reference [".rails:rules:unit-integration:predictive-default-rules", rules] + # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well. + # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840. + - <<: *if-merge-request + changes: *db-patterns when: never + +.rails:rules:ee-and-foss-background-migration:predictive: + rules: + - !reference [".rails:rules:ee-and-foss-migration:predictive", rules] - <<: *if-merge-request - changes: *core-backend-patterns + changes: *backend-patterns + +.rails:rules:ee-and-foss-unit:predictive: + rules: + - <<: *if-fork-merge-request + changes: *backend-patterns + - !reference [".rails:rules:predictive-default-rules", rules] + - !reference [".rails:rules:unit-integration:predictive-default-rules", rules] + - <<: *if-merge-request + changes: *backend-patterns + - <<: *if-merge-request + changes: *backstage-patterns + +.rails:rules:ee-and-foss-integration:predictive: + rules: + - <<: *if-fork-merge-request + changes: *backend-patterns + - !reference [".rails:rules:predictive-default-rules", rules] + - !reference [".rails:rules:unit-integration:predictive-default-rules", rules] + - <<: *if-merge-request + changes: *backend-patterns + +.rails:rules:ee-and-foss-system:predictive: + rules: + - <<: *if-fork-merge-request + changes: *code-backstage-patterns + - !reference [".rails:rules:predictive-default-rules", rules] + - !reference [".rails:rules:system:predictive-default-rules", rules] + +.rails:rules:ee-only-migration:predictive: + rules: + - <<: *if-not-ee when: never + - !reference [".rails:rules:predictive-default-rules", rules] + - !reference [".rails:rules:unit-integration:predictive-default-rules", rules] + # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well. + # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840. - <<: *if-merge-request - changes: *workhorse-patterns + changes: *db-patterns when: never + +.rails:rules:ee-only-background-migration:predictive: + rules: + - !reference [".rails:rules:ee-only-migration:predictive", rules] - <<: *if-merge-request - changes: *ci-patterns + changes: *backend-patterns + +.rails:rules:ee-only-unit:predictive: + rules: + - <<: *if-not-ee when: never + - <<: *if-fork-merge-request + changes: *backend-patterns + - !reference [".rails:rules:predictive-default-rules", rules] + - !reference [".rails:rules:unit-integration:predictive-default-rules", rules] - <<: *if-merge-request - changes: *code-backstage-patterns + changes: *backend-patterns -.rails:rules:previous-failed-tests-default-rules: +.rails:rules:ee-only-integration:predictive: rules: - - <<: *if-security-merge-request + - <<: *if-not-ee when: never - - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-fork-merge-request + changes: *backend-patterns + - !reference [".rails:rules:predictive-default-rules", rules] + - !reference [".rails:rules:unit-integration:predictive-default-rules", rules] - <<: *if-merge-request + changes: *backend-patterns + +.rails:rules:ee-only-system:predictive: + rules: + - <<: *if-not-ee + when: never + - <<: *if-fork-merge-request changes: *code-backstage-patterns + - !reference [".rails:rules:predictive-default-rules", rules] + - !reference [".rails:rules:system:predictive-default-rules", rules] ################ # Shared rules # @@ -773,6 +869,16 @@ - <<: *if-default-refs changes: *code-qa-patterns +.build-images:rules:build-assets-image-as-if-foss: + rules: + - <<: *if-not-canonical-namespace + when: never + - <<: *if-not-ee + when: never + - <<: *if-merge-request-labels-pipeline-expedite + when: never + - !reference [".build-images:rules:build-assets-image", "rules"] + ################# # Caching rules # ################# @@ -941,6 +1047,16 @@ - <<: *if-default-refs changes: *workhorse-patterns +.frontend:rules:compile-production-assets-as-if-foss: + rules: + - <<: *if-not-canonical-namespace + when: never + - <<: *if-not-ee + when: never + - <<: *if-merge-request-labels-pipeline-expedite + when: never + - !reference [.frontend:rules:compile-production-assets, rules] + .frontend:rules:compile-test-assets: rules: - <<: *if-merge-request-labels-run-all-rspec @@ -1233,7 +1349,7 @@ when: manual allow_failure: true -.qa:rules:package-and-test: +.qa:rules:package-and-test-ee: rules: - !reference [".qa:rules:package-and-test-mrs", rules] - <<: *if-dot-com-gitlab-org-schedule @@ -1246,11 +1362,23 @@ QA_SAVE_TEST_METRICS: "true" QA_EXPORT_TEST_METRICS: "false" # on main runs, metrics are exported to separate bucket via rake task for better consistency +.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 + - <<: *if-dot-com-gitlab-org-and-security-merge-request + when: manual + allow_failure: true + .qa:rules:e2e:test-on-gdk: rules: - if: '$QA_RUN_TESTS_ON_GDK !~ /true|yes|1/i' when: never - - !reference [".qa:rules:package-and-test", rules] + - !reference [".qa:rules:package-and-test-ee", rules] ############### # Rails rules # @@ -1335,17 +1463,18 @@ - <<: *if-default-refs changes: *db-patterns -.rails:rules:ee-and-foss-migration:predictive: +.rails:rules:rspec-predictive: rules: - - <<: *if-fork-merge-request - changes: *db-patterns - - !reference [".rails:rules:predictive-default-rules", rules] - - !reference [".rails:rules:unit-integration:predictive-default-rules", rules] - # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well. - # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840. - - <<: *if-merge-request - changes: *db-patterns + - <<: *if-merge-request-approved + when: never + - <<: *if-automated-merge-request + when: never + - <<: *if-security-merge-request when: never + - <<: *if-merge-request-labels-run-all-rspec + when: never + - <<: *if-merge-request + changes: *code-backstage-patterns .rails:rules:ee-and-foss-background-migration: rules: @@ -1353,12 +1482,6 @@ - <<: *if-default-refs changes: *backend-patterns -.rails:rules:ee-and-foss-background-migration:predictive: - rules: - - !reference [".rails:rules:ee-and-foss-migration:predictive", rules] - - <<: *if-merge-request - changes: *backend-patterns - .rails:rules:ee-and-foss-mr-with-migration: rules: - <<: *if-merge-request @@ -1383,17 +1506,6 @@ - <<: *if-default-refs changes: *backstage-patterns -.rails:rules:ee-and-foss-unit:predictive: - rules: - - <<: *if-fork-merge-request - changes: *backend-patterns - - !reference [".rails:rules:predictive-default-rules", rules] - - !reference [".rails:rules:unit-integration:predictive-default-rules", rules] - - <<: *if-merge-request - changes: *backend-patterns - - <<: *if-merge-request - changes: *backstage-patterns - .rails:rules:ee-and-foss-integration: rules: - <<: *if-fork-merge-request @@ -1402,15 +1514,6 @@ - <<: *if-default-refs changes: *backend-patterns -.rails:rules:ee-and-foss-integration:predictive: - rules: - - <<: *if-fork-merge-request - changes: *backend-patterns - - !reference [".rails:rules:predictive-default-rules", rules] - - !reference [".rails:rules:unit-integration:predictive-default-rules", rules] - - <<: *if-merge-request - changes: *backend-patterns - .rails:rules:ee-and-foss-system: rules: - <<: *if-fork-merge-request @@ -1419,13 +1522,6 @@ - <<: *if-default-refs changes: *code-backstage-patterns -.rails:rules:ee-and-foss-system:predictive: - rules: - - <<: *if-fork-merge-request - changes: *code-backstage-patterns - - !reference [".rails:rules:predictive-default-rules", rules] - - !reference [".rails:rules:system:predictive-default-rules", rules] - .rails:rules:ee-and-foss-fast_spec_helper: rules: - <<: *if-merge-request-labels-run-all-rspec @@ -1460,30 +1556,12 @@ - <<: *if-default-refs changes: *db-patterns -.rails:rules:ee-only-migration:predictive: - rules: - - <<: *if-not-ee - when: never - - !reference [".rails:rules:predictive-default-rules", rules] - - !reference [".rails:rules:unit-integration:predictive-default-rules", rules] - # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well. - # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840. - - <<: *if-merge-request - changes: *db-patterns - when: never - .rails:rules:ee-only-background-migration: rules: - !reference [".rails:rules:ee-only-migration", rules] - <<: *if-default-refs changes: *backend-patterns -.rails:rules:ee-only-background-migration:predictive: - rules: - - !reference [".rails:rules:ee-only-migration:predictive", rules] - - <<: *if-merge-request - changes: *backend-patterns - .rails:rules:ee-only-unit: rules: - <<: *if-not-ee @@ -1494,17 +1572,6 @@ - <<: *if-default-refs changes: *backend-patterns -.rails:rules:ee-only-unit:predictive: - rules: - - <<: *if-not-ee - when: never - - <<: *if-fork-merge-request - changes: *backend-patterns - - !reference [".rails:rules:predictive-default-rules", rules] - - !reference [".rails:rules:unit-integration:predictive-default-rules", rules] - - <<: *if-merge-request - changes: *backend-patterns - .rails:rules:ee-only-integration: rules: - <<: *if-not-ee @@ -1515,17 +1582,6 @@ - <<: *if-default-refs changes: *backend-patterns -.rails:rules:ee-only-integration:predictive: - rules: - - <<: *if-not-ee - when: never - - <<: *if-fork-merge-request - changes: *backend-patterns - - !reference [".rails:rules:predictive-default-rules", rules] - - !reference [".rails:rules:unit-integration:predictive-default-rules", rules] - - <<: *if-merge-request - changes: *backend-patterns - .rails:rules:ee-only-system: rules: - <<: *if-not-ee @@ -1536,15 +1592,6 @@ - <<: *if-default-refs changes: *code-backstage-patterns -.rails:rules:ee-only-system:predictive: - rules: - - <<: *if-not-ee - when: never - - <<: *if-fork-merge-request - changes: *code-backstage-patterns - - !reference [".rails:rules:predictive-default-rules", rules] - - !reference [".rails:rules:system:predictive-default-rules", rules] - .rails:rules:as-if-foss-migration: rules: - <<: *if-not-ee @@ -1563,30 +1610,12 @@ - <<: *if-merge-request-not-approved when: never -.rails:rules:as-if-foss-migration:predictive: - rules: - - <<: *if-not-ee - when: never - - !reference [".rails:rules:predictive-default-rules", rules] - - !reference [".rails:rules:as-if-foss-migration-unit-integration:predictive-default-rules", rules] - # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well. - # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840. - - <<: *if-merge-request-labels-as-if-foss - changes: *db-patterns - when: never - .rails:rules:as-if-foss-background-migration: rules: - !reference [".rails:rules:as-if-foss-migration", rules] - <<: *if-merge-request-labels-as-if-foss changes: *backend-patterns -.rails:rules:as-if-foss-background-migration:predictive: - rules: - - !reference [".rails:rules:as-if-foss-migration:predictive", rules] - - <<: *if-merge-request-labels-as-if-foss - changes: *backend-patterns - .rails:rules:as-if-foss-unit: rules: - <<: *if-not-ee @@ -1597,17 +1626,6 @@ - <<: *if-merge-request-labels-as-if-foss changes: *backend-patterns -.rails:rules:as-if-foss-unit:predictive: - rules: - - <<: *if-not-ee - when: never - - <<: *if-fork-merge-request - when: never - - !reference [".rails:rules:predictive-default-rules", rules] - - !reference [".rails:rules:as-if-foss-migration-unit-integration:predictive-default-rules", rules] - - <<: *if-merge-request-labels-as-if-foss - changes: *backend-patterns - .rails:rules:as-if-foss-integration: rules: - <<: *if-not-ee @@ -1618,17 +1636,6 @@ - <<: *if-merge-request-labels-as-if-foss changes: *backend-patterns -.rails:rules:as-if-foss-integration:predictive: - rules: - - <<: *if-not-ee - when: never - - <<: *if-fork-merge-request - when: never - - !reference [".rails:rules:predictive-default-rules", rules] - - !reference [".rails:rules:as-if-foss-migration-unit-integration:predictive-default-rules", rules] - - <<: *if-merge-request-labels-as-if-foss - changes: *backend-patterns - .rails:rules:as-if-foss-system: rules: - <<: *if-not-ee @@ -1639,25 +1646,6 @@ - <<: *if-merge-request-labels-as-if-foss changes: *code-backstage-patterns -.rails:rules:as-if-foss-system:predictive: - rules: - - <<: *if-not-ee - when: never - - <<: *if-fork-merge-request - when: never - - !reference [".rails:rules:predictive-default-rules", rules] - - <<: *if-merge-request - changes: *core-backend-patterns - when: never - - <<: *if-merge-request - changes: *workhorse-patterns - when: never - - <<: *if-merge-request - changes: *ci-patterns - when: never - - <<: *if-merge-request-labels-as-if-foss - changes: *code-backstage-patterns - .rails:rules:ee-and-foss-db-library-code: rules: - <<: *if-default-refs @@ -1749,6 +1737,10 @@ when: never - <<: *if-merge-request-labels-skip-undercoverage when: never + # We cannot get the coverage data from child pipeline so we only run undercoverage on full pipelines for now + # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113410#note_1335422806 + - <<: *if-merge-request-not-approved + when: never - <<: *if-merge-request-labels-run-all-rspec - <<: *if-merge-request changes: *backend-patterns diff --git a/.gitlab/ci/setup.gitlab-ci.yml b/.gitlab/ci/setup.gitlab-ci.yml index 089d5a20ceb..0b5860b3ddb 100644 --- a/.gitlab/ci/setup.gitlab-ci.yml +++ b/.gitlab/ci/setup.gitlab-ci.yml @@ -118,17 +118,12 @@ detect-tests: - | if [ -n "$CI_MERGE_REQUEST_IID" ]; then mkdir -p $(dirname "$RSPEC_CHANGED_FILES_PATH") - tooling/bin/find_changes ${RSPEC_CHANGED_FILES_PATH}; - tooling/bin/find_tests ${RSPEC_CHANGED_FILES_PATH} ${RSPEC_MATCHING_TESTS_PATH}; - tooling/bin/partial_to_views_mappings ${RSPEC_CHANGED_FILES_PATH} ${RSPEC_VIEWS_INCLUDING_PARTIALS_PATH}; - tooling/bin/find_tests ${RSPEC_VIEWS_INCLUDING_PARTIALS_PATH} ${RSPEC_MATCHING_TESTS_PATH}; - tooling/bin/js_to_system_specs_mappings ${RSPEC_CHANGED_FILES_PATH} ${RSPEC_MATCHING_TESTS_PATH}; - tooling/bin/graphql_base_type_mappings ${RSPEC_CHANGED_FILES_PATH} ${RSPEC_MATCHING_TESTS_PATH}; - tooling/bin/view_to_system_specs_mappings ${RSPEC_CHANGED_FILES_PATH} ${RSPEC_MATCHING_TESTS_PATH}; - tooling/bin/find_changes ${RSPEC_CHANGED_FILES_PATH} ${RSPEC_MATCHING_TESTS_PATH} ${FRONTEND_FIXTURES_MAPPING_PATH}; + + tooling/bin/predictive_tests + filter_rspec_matched_foss_tests ${RSPEC_MATCHING_TESTS_PATH} ${RSPEC_MATCHING_TESTS_FOSS_PATH}; filter_rspec_matched_ee_tests ${RSPEC_MATCHING_TESTS_PATH} ${RSPEC_MATCHING_TESTS_EE_PATH}; - tooling/bin/view_to_js_mappings ${RSPEC_CHANGED_FILES_PATH} ${RSPEC_MATCHING_JS_FILES_PATH}; + echoinfo "Changed files: $(cat $RSPEC_CHANGED_FILES_PATH)"; echoinfo "Related FOSS RSpec tests: $(cat $RSPEC_MATCHING_TESTS_FOSS_PATH)"; echoinfo "Related EE RSpec tests: $(cat $RSPEC_MATCHING_TESTS_EE_PATH)"; |