Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-04-11 21:08:31 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-04-11 21:08:31 +0300
commit1a2f754734eb189e371e25e685413808f69a7f2c (patch)
tree2c97884971f36d9026600897b74364d2e212a109 /.gitlab
parentf1ce71c88c407709987dd4a7b40bdb7596b6baa2 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to '.gitlab')
-rw-r--r--.gitlab/ci/build-images.gitlab-ci.yml7
-rw-r--r--.gitlab/ci/frontend.gitlab-ci.yml6
-rw-r--r--.gitlab/ci/package-and-test/main.gitlab-ci.yml30
-rw-r--r--.gitlab/ci/package-and-test/rules.gitlab-ci.yml10
-rw-r--r--.gitlab/ci/qa.gitlab-ci.yml19
-rw-r--r--.gitlab/ci/rails.gitlab-ci.yml152
-rw-r--r--.gitlab/ci/rails/rspec-foss-impact.gitlab-ci.yml.erb2
-rw-r--r--.gitlab/ci/rails/rspec-predictive.gitlab-ci.yml.erb153
-rw-r--r--.gitlab/ci/rails/shared.gitlab-ci.yml5
-rw-r--r--.gitlab/ci/rules.gitlab-ci.yml346
-rw-r--r--.gitlab/ci/setup.gitlab-ci.yml13
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)";