From cd8afa2cbf14672277f9336f7ea31622f05abf9d Mon Sep 17 00:00:00 2001
From: Lin Jen-Shin <jen-shin@gitlab.com>
Date: Thu, 25 Jan 2024 17:23:55 +0000
Subject: [PATCH] Revert "Merge branch '412717-run-foss-jobs-in-foss' into
 'master'"

This reverts merge request !141897
---
 .gitlab/ci/as-if-foss.gitlab-ci.yml           |   8 +-
 .gitlab/ci/frontend.gitlab-ci.yml             |  23 +
 .gitlab/ci/preflight.gitlab-ci.yml            |   6 +
 .gitlab/ci/qa.gitlab-ci.yml                   |   6 +
 .gitlab/ci/rails.gitlab-ci.yml                | 180 ++++++-
 .gitlab/ci/rules.gitlab-ci.yml                | 438 +++++-------------
 .gitlab/ci/static-analysis.gitlab-ci.yml      |  20 +
 doc/development/ee_features.md                |   2 +-
 doc/development/pipelines/index.md            |  45 +-
 scripts/rspec_helpers.sh                      |   4 +-
 scripts/setup/generate-as-if-foss-env.rb      |  12 +-
 spec/dot_gitlab_ci/rules_spec.rb              |  35 --
 .../setup/generate_as_if_foss_env_spec.rb     |  14 +-
 spec/simplecov_env.rb                         |   6 +-
 14 files changed, 368 insertions(+), 431 deletions(-)

diff --git a/.gitlab/ci/as-if-foss.gitlab-ci.yml b/.gitlab/ci/as-if-foss.gitlab-ci.yml
index 5bcf1ff696c0c..fc8db3ba97480 100644
--- a/.gitlab/ci/as-if-foss.gitlab-ci.yml
+++ b/.gitlab/ci/as-if-foss.gitlab-ci.yml
@@ -1,7 +1,7 @@
 .as-if-foss-variables:
   variables:
     AS_IF_FOSS_BRANCH: "as-if-foss/${CI_COMMIT_REF_NAME}"
-    FOSS_REPOSITORY: "https://dummy:${AS_IF_FOSS_TOKEN}@gitlab.com/${CI_PROJECT_NAMESPACE}/gitlab-foss.git"
+    FOSS_REPOSITORY: "https://dummy:${AS_IF_FOSS_TOKEN}@gitlab.com/gitlab-org/gitlab-foss.git"
 
 prepare-as-if-foss-branch:
   extends:
@@ -66,10 +66,6 @@ start-as-if-foss:
     RUBY_VERSION: $RUBY_VERSION
     ENABLE_RSPEC: $ENABLE_RSPEC
     ENABLE_RSPEC_FAST_SPEC_HELPER: $ENABLE_RSPEC_FAST_SPEC_HELPER
-    ENABLE_RSPEC_PRAEFECT: $ENABLE_RSPEC_PRAEFECT
-    ENABLE_RSPEC_SINGLE_DB: $ENABLE_RSPEC_SINGLE_DB
-    ENABLE_RSPEC_SINGLE_DB_CI_CONNECTION: $ENABLE_RSPEC_SINGLE_DB_CI_CONNECTION
-    ENABLE_RSPEC_SINGLE_REDIS: $ENABLE_RSPEC_SINGLE_REDIS
     ENABLE_RSPEC_UNIT: $ENABLE_RSPEC_UNIT
     ENABLE_RSPEC_INTEGRATION: $ENABLE_RSPEC_INTEGRATION
     ENABLE_RSPEC_SYSTEM: $ENABLE_RSPEC_SYSTEM
@@ -90,7 +86,7 @@ start-as-if-foss:
     ENABLE_QA_SELECTORS: $ENABLE_QA_SELECTORS
     ENABLE_STATIC_ANALYSIS: $ENABLE_STATIC_ANALYSIS
   trigger:
-    project: ${CI_PROJECT_NAMESPACE}/gitlab-foss
+    project: gitlab-org/gitlab-foss
     branch: as-if-foss/${CI_COMMIT_REF_NAME}
     strategy: depend
 
diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml
index 22a6b3d4842bf..9d78fb102f94c 100644
--- a/.gitlab/ci/frontend.gitlab-ci.yml
+++ b/.gitlab/ci/frontend.gitlab-ci.yml
@@ -226,6 +226,12 @@ graphql-schema-dump:
       - tmp/tests/graphql/gitlab_schema.graphql
       - tmp/tests/graphql/gitlab_schema.json
 
+graphql-schema-dump as-if-foss:
+  extends:
+    - graphql-schema-dump
+    - .frontend:rules:default-frontend-jobs-as-if-foss
+    - .as-if-foss
+
 .frontend-test-base:
   extends:
     - .default-retry
@@ -273,6 +279,14 @@ jest predictive:
   script:
     - if [[ -s "$RSPEC_CHANGED_FILES_PATH" ]] || [[ -s "$RSPEC_MATCHING_JS_FILES_PATH" ]]; then run_timed_command "yarn jest:ci:predictive"; fi
 
+jest as-if-foss:
+  extends:
+    - .jest-base
+    - .frontend:rules:jest:as-if-foss
+    - .as-if-foss
+  needs: ["rspec-all frontend_fixture as-if-foss"]
+  parallel: 10
+
 jest predictive as-if-foss:
   extends:
     - .jest-base
@@ -420,3 +434,12 @@ compile-storybook:
     when: always
     paths:
       - storybook/public
+
+compile-storybook as-if-foss:
+  extends:
+    - .compile-storybook-base
+    - .as-if-foss
+    - .frontend:rules:default-frontend-jobs-as-if-foss
+  needs:
+    - job: "graphql-schema-dump as-if-foss"
+    - job: "rspec-all frontend_fixture as-if-foss"
diff --git a/.gitlab/ci/preflight.gitlab-ci.yml b/.gitlab/ci/preflight.gitlab-ci.yml
index 729815fd338a3..426d36b24f4a6 100644
--- a/.gitlab/ci/preflight.gitlab-ci.yml
+++ b/.gitlab/ci/preflight.gitlab-ci.yml
@@ -73,3 +73,9 @@ qa:selectors:
     - .qa:rules:selectors
   script:
     - bundle exec bin/qa Test::Sanity::Selectors
+
+qa:selectors-as-if-foss:
+  extends:
+    - qa:selectors
+    - .qa:rules:selectors-as-if-foss
+    - .as-if-foss
diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml
index 7d0910f7ba596..391e25956eb1d 100644
--- a/.gitlab/ci/qa.gitlab-ci.yml
+++ b/.gitlab/ci/qa.gitlab-ci.yml
@@ -48,6 +48,12 @@ qa:internal:
   script:
     - bundle exec rspec -O .rspec_internal
 
+qa:internal-as-if-foss:
+  extends:
+    - qa:internal
+    - .qa:rules:internal-as-if-foss
+    - .as-if-foss
+
 cache-qa-gems:
   extends:
     - .qa-job-base
diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml
index 09ce8f8d0f9db..e46e3d5b4625a 100644
--- a/.gitlab/ci/rails.gitlab-ci.yml
+++ b/.gitlab/ci/rails.gitlab-ci.yml
@@ -358,26 +358,6 @@ rspec:artifact-collector unit:
     - job: rspec unit clickhouse  # 1 job
       optional: true
 
-rspec:artifact-collector as-if-foss:
-  extends:
-    - .artifact-collector
-    - .as-if-foss:rules:start-as-if-foss
-  needs:
-    # We need to wait for `start-as-if-foss` because cross project needs
-    # will not wait, and it'll simply look at the latest pipeline regardless
-    # status. This means we need to wait for the whole FOSS pipeline before
-    # trying to fetch the artifacts from there, ensuring they're available.
-    - job: start-as-if-foss
-    - project: gitlab-org/gitlab-foss
-      ref: as-if-foss/${CI_COMMIT_REF_NAME}
-      job: rspec:artifact-collector unit
-    - project: gitlab-org/gitlab-foss
-      ref: as-if-foss/${CI_COMMIT_REF_NAME}
-      job: rspec:artifact-collector system
-    - project: gitlab-org/gitlab-foss
-      ref: as-if-foss/${CI_COMMIT_REF_NAME}
-      job: rspec:artifact-collector remainder
-
 rspec:artifact-collector system:
   extends:
     - .artifact-collector
@@ -400,6 +380,35 @@ rspec:artifact-collector remainder:
     - !reference ['.rails:rules:ee-and-foss-migration', rules]
     - !reference ['.rails:rules:ee-and-foss-background-migration', rules]
 
+rspec:artifact-collector as-if-foss unit:
+  extends:
+    - .artifact-collector
+    - .rails:rules:as-if-foss-unit
+  needs:
+    - rspec unit pg14-as-if-foss  # 32 jobs
+
+rspec:artifact-collector as-if-foss system:
+  extends:
+    - .artifact-collector
+    - .rails:rules:as-if-foss-system
+  needs:
+    - rspec system pg14-as-if-foss  # 32 jobs
+
+rspec:artifact-collector as-if-foss remainder:
+  extends:
+    - .artifact-collector
+  needs:
+    - job: rspec integration pg14-as-if-foss  # 16 jobs
+      optional: true
+    - job: rspec migration pg14-as-if-foss  # 15 jobs
+      optional: true
+    - job: rspec background_migration pg14-as-if-foss  # 5 jobs
+      optional: true
+  rules:
+    - !reference ['.rails:rules:as-if-foss-integration', rules]
+    - !reference ['.rails:rules:as-if-foss-migration', rules]
+    - !reference ['.rails:rules:as-if-foss-background-migration', rules]
+
 rspec:artifact-collector unit single-redis:
   extends:
     - .artifact-collector
@@ -485,7 +494,11 @@ rspec:coverage:
     - job: rspec:artifact-collector remainder single-redis
       optional: true
     # as-if-foss jobs
-    - job: rspec:artifact-collector as-if-foss
+    - job: rspec:artifact-collector as-if-foss unit
+      optional: true
+    - job: rspec:artifact-collector as-if-foss system
+      optional: true
+    - job: rspec:artifact-collector as-if-foss remainder
       optional: true
     # EE jobs
     - job: rspec:artifact-collector ee single-redis
@@ -643,6 +656,131 @@ rspec-ee:predictive:trigger:
       - artifact: "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}-ee.yml"
         job: rspec-predictive:pipeline-generate
 
+rspec migration pg14-as-if-foss:
+  extends:
+    - .rspec-base-pg14-as-if-foss
+    - .rspec-base-migration
+    - .rspec-migration-parallel
+    - .rails:rules:as-if-foss-migration
+
+rspec background_migration pg14-as-if-foss:
+  extends:
+    - .rspec-base-pg14-as-if-foss
+    - .rspec-base-migration
+    - .rspec-background-migration-parallel
+    - .rails:rules:as-if-foss-background-migration
+
+rspec migration pg14-as-if-foss single-db:
+  extends:
+    - rspec migration pg14-as-if-foss
+    - .single-db-rspec
+    - .rspec-migration-parallel
+    - .rails:rules:single-db-as-if-foss
+
+rspec background_migration pg14-as-if-foss single-db:
+  extends:
+    - rspec background_migration pg14-as-if-foss
+    - .single-db-rspec
+    - .rails:rules:single-db-as-if-foss
+
+rspec migration pg14-as-if-foss single-db-ci-connection:
+  extends:
+    - rspec migration pg14-as-if-foss
+    - .single-db-ci-connection-rspec
+    - .rspec-migration-parallel
+    - .rails:rules:single-db-ci-connection-as-if-foss
+
+rspec background_migration pg14-as-if-foss single-db-ci-connection:
+  extends:
+    - rspec background_migration pg14-as-if-foss
+    - .single-db-ci-connection-rspec
+    - .rails:rules:single-db-ci-connection-as-if-foss
+
+rspec migration pg14-as-if-foss clusterwide-db:
+  extends:
+    - rspec migration pg14-as-if-foss
+    - .clusterwide-db
+    - .rspec-migration-parallel
+    - .rails:rules:clusterwide-db
+
+rspec background_migration pg14-as-if-foss clusterwide-db:
+  extends:
+    - rspec background_migration pg14-as-if-foss
+    - .clusterwide-db
+    - .rails:rules:clusterwide-db
+
+rspec unit pg14-as-if-foss:
+  extends:
+    - .rspec-base-pg14-as-if-foss
+    - .rails:rules:as-if-foss-unit
+    - .rspec-unit-parallel
+
+rspec unit pg14-as-if-foss single-db:
+  extends:
+    - rspec unit pg14-as-if-foss
+    - .single-db-rspec
+    - .rails:rules:single-db-as-if-foss
+
+rspec unit pg14-as-if-foss single-db-ci-connection:
+  extends:
+    - rspec unit pg14-as-if-foss
+    - .single-db-ci-connection-rspec
+    - .rails:rules:single-db-ci-connection-as-if-foss
+
+rspec unit pg14-as-if-foss clusterwide-db:
+  extends:
+    - rspec unit pg14-as-if-foss
+    - .clusterwide-db
+    - .rails:rules:clusterwide-db
+
+rspec integration pg14-as-if-foss:
+  extends:
+    - .rspec-base-pg14-as-if-foss
+    - .rails:rules:as-if-foss-integration
+    - .rspec-integration-parallel
+
+rspec integration pg14-as-if-foss single-db:
+  extends:
+    - rspec integration pg14-as-if-foss
+    - .single-db-rspec
+    - .rails:rules:single-db-as-if-foss
+
+rspec integration pg14-as-if-foss single-db-ci-connection:
+  extends:
+    - rspec integration pg14-as-if-foss
+    - .single-db-ci-connection-rspec
+    - .rails:rules:single-db-ci-connection-as-if-foss
+
+rspec integration pg14-as-if-foss clusterwide-db:
+  extends:
+    - rspec integration pg14-as-if-foss
+    - .clusterwide-db
+    - .rails:rules:clusterwide-db
+
+rspec system pg14-as-if-foss:
+  extends:
+    - .rspec-base-pg14-as-if-foss
+    - .rails:rules:as-if-foss-system
+    - .rspec-system-parallel
+
+rspec system pg14-as-if-foss single-db:
+  extends:
+    - rspec system pg14-as-if-foss
+    - .single-db-rspec
+    - .rails:rules:single-db-as-if-foss
+
+rspec system pg14-as-if-foss single-db-ci-connection:
+  extends:
+    - rspec system pg14-as-if-foss
+    - .single-db-ci-connection-rspec
+    - .rails:rules:single-db-ci-connection-as-if-foss
+
+rspec system pg14-as-if-foss clusterwide-db:
+  extends:
+    - rspec system pg14-as-if-foss
+    - .clusterwide-db
+    - .rails:rules:clusterwide-db
+
 .rspec-ee-base-gitlab-duo:
   extends:
     - .rspec-ee-base-pg14
diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml
index 675194f914912..fb9a768816606 100644
--- a/.gitlab/ci/rules.gitlab-ci.yml
+++ b/.gitlab/ci/rules.gitlab-ci.yml
@@ -68,6 +68,9 @@
 .if-merge-request-labels-as-if-foss: &if-merge-request-labels-as-if-foss
   if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-as-if-foss/'
 
+.if-merge-request-labels-as-if-foss-cross-project: &if-merge-request-labels-as-if-foss-cross-project
+  if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-as-if-foss-cross-project/'
+
 .if-merge-request-labels-as-if-jh: &if-merge-request-labels-as-if-jh
   if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-as-if-jh/'
 
@@ -1349,6 +1352,22 @@
     - <<: *if-merge-request
       changes: *code-backstage-patterns
 
+.frontend:rules:jest:as-if-foss:
+  rules:
+    - !reference [".strict-ee-only-rules", rules]
+    - <<: *if-merge-request-labels-as-if-foss
+    - <<: *if-merge-request-labels-pipeline-expedite
+      when: never
+    - <<: *if-merge-request-labels-run-all-jest
+    - <<: *if-merge-request
+      changes: *frontend-dependency-patterns
+    - <<: *if-security-merge-request
+      changes: *code-backstage-patterns
+    - <<: *if-merge-request-not-approved
+      when: never
+    - <<: *if-merge-request
+      changes: *frontend-patterns-for-as-if-foss
+
 .frontend:rules:jest:predictive:as-if-foss:
   rules:
     - !reference [".strict-ee-only-rules", rules]
@@ -1365,6 +1384,15 @@
     - <<: *if-merge-request
       changes: *frontend-patterns-for-as-if-foss
 
+.frontend:rules:eslint-as-if-foss:
+  rules:
+    - !reference [".strict-ee-only-rules", rules]
+    - <<: *if-merge-request-labels-as-if-foss
+    - <<: *if-merge-request-labels-pipeline-expedite
+      when: never
+    - <<: *if-merge-request
+      changes: *frontend-patterns-for-as-if-foss
+
 .frontend:rules:coverage-frontend:
   rules:
     - <<: *if-not-ee
@@ -1476,6 +1504,20 @@
     - <<: *if-default-refs
       changes: *code-qa-patterns
 
+.qa:rules:selectors-as-if-foss:
+  rules:
+    - !reference [".strict-ee-only-rules", rules]
+    - <<: *if-merge-request
+      changes: *frontend-qa-patterns
+    - <<: *if-merge-request-labels-as-if-foss
+    - <<: *if-merge-request-labels-run-all-rspec
+
+.qa:rules:internal-as-if-foss:
+  rules:
+    - !reference [".strict-ee-only-rules", rules]
+    - <<: *if-default-refs
+      changes: *qa-patterns
+
 .qa:rules:determine-e2e-tests:
   rules:
     - <<: *if-not-ee
@@ -1908,7 +1950,6 @@
     - <<: *if-merge-request-labels-run-single-db
     - <<: *if-merge-request-labels-pipeline-expedite
       when: never
-    - if: '$ENABLE_RSPEC_SINGLE_REDIS == "true"'
     - <<: *if-merge-request
       changes: *redis-patterns
     - <<: *if-default-branch-schedule-nightly
@@ -1924,7 +1965,6 @@
     - <<: *if-merge-request-labels-run-single-db
     - <<: *if-merge-request-labels-pipeline-expedite
       when: never
-    - if: '$ENABLE_RSPEC_SINGLE_DB == "true"'
     - <<: *if-merge-request
       changes: *db-patterns
     - <<: *if-merge-request
@@ -1937,6 +1977,11 @@
       when: never
     - !reference [".rails:rules:single-db", "rules"]
 
+.rails:rules:single-db-as-if-foss:
+  rules:
+    - !reference [".strict-ee-only-rules", rules]
+    - !reference [".rails:rules:single-db", "rules"]
+
 .rails:rules:db:check-migrations-single-db:
   rules:
     - <<: *if-merge-request-labels-run-single-db
@@ -1952,7 +1997,6 @@
     - <<: *if-merge-request-labels-run-single-db
     - <<: *if-merge-request-labels-pipeline-expedite
       when: never
-    - if: '$ENABLE_RSPEC_SINGLE_DB_CI_CONNECTION == "true"'
     - <<: *if-merge-request
       changes: *db-patterns
     - <<: *if-merge-request
@@ -1965,6 +2009,11 @@
       when: never
     - !reference [".rails:rules:single-db-ci-connection", "rules"]
 
+.rails:rules:single-db-ci-connection-as-if-foss:
+  rules:
+    - !reference [".strict-ee-only-rules", rules]
+    - !reference [".rails:rules:single-db-ci-connection", "rules"]
+
 .rails:rules:db:check-migrations-single-db-ci-connection:
   rules:
     - <<: *if-merge-request-labels-run-single-db
@@ -1998,8 +2047,6 @@
 
 .rails:rules:praefect-with-db:
   rules:
-    - if: '$ENABLE_RSPEC_PRAEFECT == "true"'
-      allow_failure: true
     - if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-praefect-with-db/'
       allow_failure: true
 
@@ -2217,6 +2264,64 @@
       when: manual
       allow_failure: true
 
+.rails:rules:as-if-foss-migration:
+  rules:
+    - !reference [".strict-ee-only-rules", rules]
+    - <<: *if-merge-request-labels-pipeline-expedite
+      when: never
+    - <<: *if-merge-request-labels-run-all-rspec
+    - <<: *if-merge-request
+      changes: *core-backend-patterns
+    # 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
+    - <<: *if-automated-merge-request
+      changes: *db-patterns
+    - <<: *if-security-merge-request
+      changes: *db-patterns
+    - <<: *if-merge-request-not-approved
+      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-unit:
+  rules:
+    - !reference [".strict-ee-only-rules", rules]
+    - <<: *if-fork-merge-request
+      when: never
+    - <<: *if-merge-request-labels-pipeline-expedite
+      when: never
+    - !reference [".rails:rules:ee-and-foss-default-rules", rules]
+    - <<: *if-merge-request-labels-as-if-foss
+      changes: *backend-patterns
+
+.rails:rules:as-if-foss-integration:
+  rules:
+    - !reference [".strict-ee-only-rules", rules]
+    - <<: *if-fork-merge-request
+      when: never
+    - <<: *if-merge-request-labels-pipeline-expedite
+      when: never
+    - !reference [".rails:rules:ee-and-foss-default-rules", rules]
+    - <<: *if-merge-request-labels-as-if-foss
+      changes: *backend-patterns
+
+.rails:rules:as-if-foss-system:
+  rules:
+    - !reference [".strict-ee-only-rules", rules]
+    - <<: *if-fork-merge-request
+      when: never
+    - <<: *if-merge-request-labels-pipeline-expedite
+      when: never
+    - !reference [".rails:rules:system-default-rules", rules]
+    - <<: *if-merge-request-labels-as-if-foss
+      changes: *code-backstage-patterns
+
 .rails:rules:ee-and-foss-db-library-code:
   rules:
     - <<: *if-merge-request-labels-pipeline-expedite
@@ -2415,6 +2520,18 @@
     - <<: *if-default-refs
       changes: *code-backstage-qa-patterns
 
+.static-analysis:rules:static-analysis-as-if-foss:
+  rules:
+    - !reference [".strict-ee-only-rules", rules]
+    - <<: *if-merge-request-labels-as-if-foss
+      changes: *code-backstage-qa-patterns
+    - <<: *if-security-merge-request
+      changes: *code-backstage-qa-patterns
+    - <<: *if-merge-request
+      changes: [".gitlab/ci/static-analysis.gitlab-ci.yml"]
+    - <<: *if-merge-request
+      changes: *static-analysis-patterns
+
 .static-analysis:rules:trigger-depsaster:
   rules:
     - if: $ENABLE_DEPSASTER != 'true'
@@ -2893,333 +3010,28 @@
 ####################
 # as-if-foss rules #
 ####################
-
-# This is a very big rules set because it's the union of all as-if-foss jobs.
-# We want to start this for any FOSS jobs we want to run. For example:
-# (This is not an exhaustive list and can be outdated!)
-# .build-images:rules:build-qa-image-merge-requests
-# .build-images:rules:build-assets-image
-# .frontend:rules:compile-production-assets
-# .frontend:rules:default-frontend-jobs-as-if-foss
-# .rails:rules:single-db
-# .rails:rules:single-db-ci-connection
-# .rails:rules:single-redis
-# .rails:rules:ee-and-foss-default-rules
-# .rails:rules:system-default-rules
 .as-if-foss:rules:start-as-if-foss:
   rules:
     - if: '$AS_IF_FOSS_TOKEN == null'
       when: never
     - !reference [".strict-ee-only-rules", rules]
-    - <<: *if-merge-request-labels-as-if-foss
-    - <<: *if-merge-request-labels-run-all-rspec
-    - <<: *if-merge-request-labels-run-all-jest
-    - <<: *if-merge-request-labels-run-clusterwide-db
-    - <<: *if-merge-request-labels-run-single-db
-    - <<: *if-merge-request-labels-run-review-app
-    - <<: *if-merge-request-labels-run-all-e2e
-    - <<: *if-merge-request-labels-pipeline-expedite
-      when: never
-    - <<: *if-merge-request-not-approved
-      when: never
-    - <<: *if-merge-request-labels-frontend-and-feature-flag
-    - <<: *if-merge-request
-      changes: *nodejs-patterns
-    - <<: *if-merge-request
-      changes: *frontend-qa-patterns
-    - <<: *if-merge-request
-      changes: *frontend-patterns-for-as-if-foss
-    - <<: *if-merge-request
-      changes: *frontend-dependency-patterns
-    - <<: *if-merge-request
-      changes: *dependency-patterns
-    - <<: *if-merge-request
-      changes: *core-backend-patterns
-    - <<: *if-merge-request
-      changes: *ci-qa-patterns
-    - <<: *if-merge-request
-      changes: *static-analysis-patterns
-    - <<: *if-merge-request
-      changes: *db-patterns
-    - <<: *if-merge-request
-      changes: *decomposed-db-models-patterns
-    - <<: *if-merge-request
-      changes: *redis-patterns
-    - <<: *if-merge-request
-      changes: *feature-flag-development-config-patterns
-    - <<: *if-merge-request-targeting-stable-branch
-      changes: *setup-test-env-patterns
-    - <<: *if-automated-merge-request
-      changes: *db-patterns
-    - <<: *if-automated-merge-request
-      changes: *backend-patterns
-    - <<: *if-automated-merge-request
-      changes: *code-backstage-patterns
-    - <<: *if-security-merge-request
-      changes: *backend-patterns
-    - <<: *if-security-merge-request
-      changes: *code-backstage-qa-patterns
-    - <<: *if-security-merge-request
-      changes: *db-patterns
-    - <<: *if-ruby-branch
-    - <<: *if-auto-deploy-branches
-    - <<: *if-default-refs
-      changes: *ci-build-images-patterns
-    - <<: *if-default-refs
-      changes: *code-qa-patterns
-    - <<: *if-default-refs
-      changes: *code-backstage-qa-patterns
-    - <<: *if-default-refs
-      changes: *workhorse-patterns
-    - <<: *if-default-branch-schedule-nightly
-    - <<: *if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-e2e
-      changes: *feature-flag-development-config-patterns
+    - <<: *if-merge-request-labels-as-if-foss-cross-project
 
 .as-if-foss:rules:start-as-if-foss:allow-failure:manual:
   rules:
     - if: '$AS_IF_FOSS_TOKEN == null'
       when: never
     - !reference [".strict-ee-only-rules", rules]
-    # Copy everything from .as-if-foss:rules:start-as-if-foss
-    # and add `allow_failure: true` and `when: manual` to all
-    - <<: *if-merge-request-labels-as-if-foss
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request-labels-run-all-rspec
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request-labels-run-all-jest
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request-labels-run-clusterwide-db
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request-labels-run-single-db
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request-labels-run-review-app
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request-labels-run-all-e2e
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request-labels-pipeline-expedite
-      when: never
-    - <<: *if-merge-request-not-approved
-      when: never
-    - <<: *if-merge-request-labels-frontend-and-feature-flag
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request
-      changes: *nodejs-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request
-      changes: *frontend-qa-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request
-      changes: *frontend-patterns-for-as-if-foss
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request
-      changes: *frontend-dependency-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request
-      changes: *dependency-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request
-      changes: *core-backend-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request
-      changes: *ci-qa-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request
-      changes: *static-analysis-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request
-      changes: *db-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request
-      changes: *decomposed-db-models-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request
-      changes: *redis-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request
-      changes: *feature-flag-development-config-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-merge-request-targeting-stable-branch
-      changes: *setup-test-env-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-automated-merge-request
-      changes: *db-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-automated-merge-request
-      changes: *backend-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-automated-merge-request
-      changes: *code-backstage-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-security-merge-request
-      changes: *backend-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-security-merge-request
-      changes: *code-backstage-qa-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-security-merge-request
-      changes: *db-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-ruby-branch
-      allow_failure: true
-      when: manual
-    - <<: *if-auto-deploy-branches
-      allow_failure: true
-      when: manual
-    - <<: *if-default-refs
-      changes: *ci-build-images-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-default-refs
-      changes: *code-qa-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-default-refs
-      changes: *code-backstage-qa-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-default-refs
-      changes: *workhorse-patterns
-      allow_failure: true
-      when: manual
-    - <<: *if-default-branch-schedule-nightly
-      allow_failure: true
+    - <<: *if-merge-request-labels-as-if-foss-cross-project
       when: manual
-    - <<: *if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-e2e
-      changes: *feature-flag-development-config-patterns
       allow_failure: true
-      when: manual
 
 .as-if-foss:rules:start-as-if-foss:allow-failure:
   rules:
     - if: '$AS_IF_FOSS_TOKEN == null'
       when: never
     - !reference [".strict-ee-only-rules", rules]
-    # Copy everything from .as-if-foss:rules:start-as-if-foss
-    # and add `allow_failure: true` to all
-    - <<: *if-merge-request-labels-as-if-foss
-      allow_failure: true
-    - <<: *if-merge-request-labels-run-all-rspec
-      allow_failure: true
-    - <<: *if-merge-request-labels-run-all-jest
-      allow_failure: true
-    - <<: *if-merge-request-labels-run-clusterwide-db
-      allow_failure: true
-    - <<: *if-merge-request-labels-run-single-db
-      allow_failure: true
-    - <<: *if-merge-request-labels-run-review-app
-      allow_failure: true
-    - <<: *if-merge-request-labels-run-all-e2e
-      allow_failure: true
-    - <<: *if-merge-request-labels-pipeline-expedite
-      when: never
-    - <<: *if-merge-request-not-approved
-      when: never
-    - <<: *if-merge-request-labels-frontend-and-feature-flag
-      allow_failure: true
-    - <<: *if-merge-request
-      changes: *nodejs-patterns
-      allow_failure: true
-    - <<: *if-merge-request
-      changes: *frontend-qa-patterns
-      allow_failure: true
-    - <<: *if-merge-request
-      changes: *frontend-patterns-for-as-if-foss
-      allow_failure: true
-    - <<: *if-merge-request
-      changes: *frontend-dependency-patterns
-      allow_failure: true
-    - <<: *if-merge-request
-      changes: *dependency-patterns
-      allow_failure: true
-    - <<: *if-merge-request
-      changes: *core-backend-patterns
-      allow_failure: true
-    - <<: *if-merge-request
-      changes: *ci-qa-patterns
-      allow_failure: true
-    - <<: *if-merge-request
-      changes: *static-analysis-patterns
-      allow_failure: true
-    - <<: *if-merge-request
-      changes: *db-patterns
-      allow_failure: true
-    - <<: *if-merge-request
-      changes: *decomposed-db-models-patterns
-      allow_failure: true
-    - <<: *if-merge-request
-      changes: *redis-patterns
-      allow_failure: true
-    - <<: *if-merge-request
-      changes: *feature-flag-development-config-patterns
-      allow_failure: true
-    - <<: *if-merge-request-targeting-stable-branch
-      changes: *setup-test-env-patterns
-      allow_failure: true
-    - <<: *if-automated-merge-request
-      changes: *db-patterns
-      allow_failure: true
-    - <<: *if-automated-merge-request
-      changes: *backend-patterns
-      allow_failure: true
-    - <<: *if-automated-merge-request
-      changes: *code-backstage-patterns
-      allow_failure: true
-    - <<: *if-security-merge-request
-      changes: *backend-patterns
-      allow_failure: true
-    - <<: *if-security-merge-request
-      changes: *code-backstage-qa-patterns
-      allow_failure: true
-    - <<: *if-security-merge-request
-      changes: *db-patterns
-      allow_failure: true
-    - <<: *if-ruby-branch
-      allow_failure: true
-    - <<: *if-auto-deploy-branches
-      allow_failure: true
-    - <<: *if-default-refs
-      changes: *ci-build-images-patterns
-      allow_failure: true
-    - <<: *if-default-refs
-      changes: *code-qa-patterns
-      allow_failure: true
-    - <<: *if-default-refs
-      changes: *code-backstage-qa-patterns
-      allow_failure: true
-    - <<: *if-default-refs
-      changes: *workhorse-patterns
-      allow_failure: true
-    - <<: *if-default-branch-schedule-nightly
-      allow_failure: true
-    - <<: *if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-e2e
-      changes: *feature-flag-development-config-patterns
+    - <<: *if-merge-request-labels-as-if-foss-cross-project
       allow_failure: true
 
 ##################
diff --git a/.gitlab/ci/static-analysis.gitlab-ci.yml b/.gitlab/ci/static-analysis.gitlab-ci.yml
index cce0beaa5cdeb..997dfde4271cc 100644
--- a/.gitlab/ci/static-analysis.gitlab-ci.yml
+++ b/.gitlab/ci/static-analysis.gitlab-ci.yml
@@ -34,6 +34,12 @@ static-analysis:
     - yarn_install_script
     - fail_on_warnings scripts/static-analysis
 
+static-analysis as-if-foss:
+  extends:
+    - static-analysis
+    - .static-analysis:rules:static-analysis-as-if-foss
+    - .as-if-foss
+
 static-verification-with-database:
   extends:
     - .static-analysis-base
@@ -63,6 +69,13 @@ generate-apollo-graphql-schema:
     paths:
       - "${GRAPHQL_SCHEMA_APOLLO_FILE}"
 
+generate-apollo-graphql-schema as-if-foss:
+  extends:
+    - generate-apollo-graphql-schema
+    - .frontend:rules:eslint-as-if-foss
+    - .as-if-foss
+  needs: ['graphql-schema-dump as-if-foss']
+
 eslint:
   extends:
     - .static-analysis-base
@@ -75,6 +88,13 @@ eslint:
     - yarn_install_script
     - run_timed_command "yarn run lint:eslint:all"
 
+eslint as-if-foss:
+  extends:
+    - eslint
+    - .frontend:rules:eslint-as-if-foss
+    - .as-if-foss
+  needs: ['generate-apollo-graphql-schema as-if-foss']
+
 haml-lint:
   extends:
     - .static-analysis-base
diff --git a/doc/development/ee_features.md b/doc/development/ee_features.md
index 8f7da8d46e657..fd00b8b86cb23 100644
--- a/doc/development/ee_features.md
+++ b/doc/development/ee_features.md
@@ -296,7 +296,7 @@ FOSS context as well.
 
 To run pipelines in both contexts, add the `~"pipeline:run-as-if-foss"` label to the merge request.
 
-See the [As-if-FOSS jobs and cross project downstream pipeline](pipelines/index.md#as-if-foss-jobs-and-cross-project-downstream-pipeline) pipelines documentation for more information.
+See the [As-if-FOSS jobs](pipelines/index.md#as-if-foss-jobs) pipelines documentation for more information.
 
 ## Separation of EE code in the backend
 
diff --git a/doc/development/pipelines/index.md b/doc/development/pipelines/index.md
index 4597d4e23dd9d..ad4cef407487a 100644
--- a/doc/development/pipelines/index.md
+++ b/doc/development/pipelines/index.md
@@ -286,47 +286,36 @@ If you want to force a Review App to be deployed regardless of your changes, you
 
 Consult the [Review Apps](../testing_guide/review_apps.md) dedicated page for more information.
 
-### As-if-FOSS jobs and cross project downstream pipeline
+### As-if-FOSS jobs
 
-To ensure the relevant changes are working properly in the FOSS project,
-under some conditions we also run:
+The `* as-if-foss` jobs run the GitLab test suite "as if FOSS", meaning as if the jobs would run in the context
+of `gitlab-org/gitlab-foss`. These jobs are only created in the following cases:
 
-- `* as-if-foss` jobs in the same pipeline
-- Cross project downstream FOSS pipeline
+- when the `pipeline:run-as-if-foss` label is set on the merge request
+- when the merge request is created in the `gitlab-org/security/gitlab` project
+- when any CI configuration file is changed (for example, `.gitlab-ci.yml` or `.gitlab/ci/**/*`)
 
-The `* as-if-foss` jobs run the GitLab test suite "as if FOSS", meaning as if
-the jobs would run in the context of `gitlab-org/gitlab-foss`. On the other
-hand, cross project downstream FOSS pipeline actually runs inside the FOSS
-project, which should be even closer to an actual FOSS environment.
+The `* as-if-foss` jobs are run in addition to the regular EE-context jobs. They have the `FOSS_ONLY='1'` variable
+set and get the `ee/` folder removed before the tests start running.
 
-We run them in the following cases:
+The intent is to ensure that a change doesn't introduce a failure after `gitlab-org/gitlab` is synced to `gitlab-org/gitlab-foss`.
 
-- when the `pipeline:run-as-if-foss` label is set on the merge request
-- when the merge request is created in the `gitlab-org/security/gitlab` project
-- when CI configuration file is changed (for example, `.gitlab-ci.yml` or `.gitlab/ci/**/*`)
+#### As-if-FOSS cross project downstream pipeline
 
-The `* as-if-foss` jobs are run in addition to the regular EE-context jobs.
-They have the `FOSS_ONLY='1'` variable set and get the `ee/` folder removed
-before the tests start running.
+As an alternative to the `* as-if-foss` jobs, we can also run a cross project
+FOSS pipeline exactly in the `gitlab-org/gitlab-foss` project. We trigger it
+in the following cases:
 
-Cross project downstream FOSS pipeline simulates merging the merge request
-into the default branch in the FOSS project instead, which removes a list of
-files. The list can be found in
-[`.gitlab/ci/as-if-foss.gitlab-ci.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/215d1e27d74cbebaa787d35bf7dcabc5c34ebf86/.gitlab/ci/as-if-foss.gitlab-ci.yml#L22-30)
-and in
-[`merge-train/bin/merge-train`](https://gitlab.com/gitlab-org/merge-train/-/blob/041d942ae1b5615703b7a786982340b61620e7c5/bin/merge-train#L228-239).
+- when the `pipeline:run-as-if-foss-cross-project` label is set on the merge request
 
-The intent is to ensure that a change doesn't introduce a failure after
-`gitlab-org/gitlab` is synced to `gitlab-org/gitlab-foss`.
+This is still working-in-progress to replace the `* as-if-foss` jobs. The
+goal is to simplify pipeline rules and make it more clear about the intention.
 
-#### Tokens set in the project variables
+##### Tokens set in the project variables
 
 - `AS_IF_FOSS_TOKEN`: This is a [GitLab FOSS](https://gitlab.com/gitlab-org/gitlab-foss)
   project token with `developer` role and `write_repository` permission,
   to push generated `as-if-foss/*` branch.
-  - Note that the same name for the security project should use another token
-    from the security FOSS project, so that we never push security changes to
-    a public project.
 
 ### As-if-JH cross project downstream pipeline
 
diff --git a/scripts/rspec_helpers.sh b/scripts/rspec_helpers.sh
index f42e7bbcfb74b..b0dc3bf292517 100644
--- a/scripts/rspec_helpers.sh
+++ b/scripts/rspec_helpers.sh
@@ -232,8 +232,7 @@ function rspec_parallelized_job() {
   read -ra job_name <<< "${CI_JOB_NAME}"
   local test_tool="${job_name[0]}"
   local test_level="${job_name[1]}"
-  # e.g. 'rspec unit pg13 1/24 278964' would become 'rspec_unit_pg13_1_24_278964'
-  local report_name=$(echo "${CI_JOB_NAME} ${CI_PROJECT_ID}" | sed -E 's|[/ ]|_|g')
+  local report_name=$(echo "${CI_JOB_NAME}" | sed -E 's|[/ ]|_|g') # e.g. 'rspec unit pg13 1/24' would become 'rspec_unit_pg13_1_24'
   local rspec_opts="${1:-}"
   local rspec_tests_mapping_enabled="${RSPEC_TESTS_MAPPING_ENABLED:-}"
   local spec_folder_prefixes=""
@@ -312,6 +311,7 @@ function retry_failed_rspec_examples() {
 
   # Keep track of the tests that are retried, later consolidated in a single file by the `rspec:flaky-tests-report` job
   local failed_examples=$(grep " failed" ${RSPEC_LAST_RUN_RESULTS_FILE})
+  local report_name=$(echo "${CI_JOB_NAME}" | sed -E 's|[/ ]|_|g') # e.g. 'rspec unit pg13 1/24' would become 'rspec_unit_pg13_1_24'
   echoinfo "RSPEC_RETRIED_TESTS_REPORT_PATH: ${RSPEC_RETRIED_TESTS_REPORT_PATH:-}"
 
   echo "${CI_JOB_URL}" > "${RSPEC_RETRIED_TESTS_REPORT_PATH:-}"
diff --git a/scripts/setup/generate-as-if-foss-env.rb b/scripts/setup/generate-as-if-foss-env.rb
index 35fc4dfe4498b..21f1822503cd5 100755
--- a/scripts/setup/generate-as-if-foss-env.rb
+++ b/scripts/setup/generate-as-if-foss-env.rb
@@ -23,9 +23,7 @@ class GenerateAsIfFossEnv
   ]).freeze
 
   def initialize
-    @client = Gitlab.client(
-      endpoint: ENV['CI_API_V4_URL'],
-      private_token: ENV['PROJECT_TOKEN_FOR_CI_SCRIPTS_API_USAGE'] || '')
+    @client = Gitlab.client(endpoint: ENV['CI_API_V4_URL'], private_token: '')
     @rspec_jobs = Set.new
     @other_jobs = Set.new
   end
@@ -66,13 +64,9 @@ def each_job
   end
 
   def detect_rspec(job)
-    rspec_type = job.name[%r{^rspec(?:-all)? ([\w\-]+)}, 1]
+    rspec_type = job.name[/^rspec(?:-all)? ([\w\-]+)/, 1]
 
-    return unless rspec_type
-
-    rspec_kind = job.name[%r{pg\d+ ([\w\-]+)(?: \d+/\d+)?$}, 1]
-    rspec_jobs << rspec_type
-    rspec_jobs << rspec_kind if rspec_kind
+    rspec_jobs << rspec_type if rspec_type
   end
 
   def detect_other_jobs(job)
diff --git a/spec/dot_gitlab_ci/rules_spec.rb b/spec/dot_gitlab_ci/rules_spec.rb
index af30621ac8331..b22cc6ac54930 100644
--- a/spec/dot_gitlab_ci/rules_spec.rb
+++ b/spec/dot_gitlab_ci/rules_spec.rb
@@ -23,39 +23,4 @@
       end
     end
   end
-
-  describe 'start-as-if-foss' do
-    let(:base_rules) { config.dig('.as-if-foss:rules:start-as-if-foss', 'rules') }
-
-    context 'with .as-if-foss:rules:start-as-if-foss:allow-failure:manual' do
-      let(:derived_rules) { config.dig('.as-if-foss:rules:start-as-if-foss:allow-failure:manual', 'rules') }
-
-      it 'has the same rules as the base and also allow-failure and manual' do
-        base_rules.zip(derived_rules).each do |(base, derived)|
-          # !references should be the same. Stop rules should be the same.
-          if base.is_a?(Array) || base['when'] == 'never'
-            expect(base).to eq(derived)
-          else
-            expect(derived).to eq(
-              base.merge('allow_failure' => true, 'when' => 'manual'))
-          end
-        end
-      end
-    end
-
-    context 'with .as-if-foss:rules:start-as-if-foss:allow-failure' do
-      let(:derived_rules) { config.dig('.as-if-foss:rules:start-as-if-foss:allow-failure', 'rules') }
-
-      it 'has the same rules as the base and also allow-failure' do
-        base_rules.zip(derived_rules).each do |(base, derived)|
-          # !references should be the same. Stop rules should be the same.
-          if base.is_a?(Array) || base['when'] == 'never'
-            expect(base).to eq(derived)
-          else
-            expect(derived).to eq(base.merge('allow_failure' => true))
-          end
-        end
-      end
-    end
-  end
 end
diff --git a/spec/scripts/setup/generate_as_if_foss_env_spec.rb b/spec/scripts/setup/generate_as_if_foss_env_spec.rb
index 2b94ce5bb0c9e..e437ce24e7906 100644
--- a/spec/scripts/setup/generate_as_if_foss_env_spec.rb
+++ b/spec/scripts/setup/generate_as_if_foss_env_spec.rb
@@ -21,11 +21,7 @@
     let(:jobs) do
       [
         'rspec fast_spec_helper',
-        'rspec unit pg14 praefect 1/5',
-        'rspec unit pg14 single-db 2/5',
-        'rspec unit pg14 single-db-ci-connection 3/5',
-        'rspec unit pg14 single-redis 4/5',
-        'rspec unit pg14 5/5',
+        'rspec unit pg14',
         'rspec integration pg14',
         'rspec system pg14',
         'rspec migration pg14',
@@ -68,10 +64,6 @@
         ENABLE_RSPEC: 'true',
         ENABLE_RSPEC_FAST_SPEC_HELPER: 'true',
         ENABLE_RSPEC_UNIT: 'true',
-        ENABLE_RSPEC_PRAEFECT: 'true',
-        ENABLE_RSPEC_SINGLE_DB: 'true',
-        ENABLE_RSPEC_SINGLE_DB_CI_CONNECTION: 'true',
-        ENABLE_RSPEC_SINGLE_REDIS: 'true',
         ENABLE_RSPEC_INTEGRATION: 'true',
         ENABLE_RSPEC_SYSTEM: 'true',
         ENABLE_RSPEC_MIGRATION: 'true',
@@ -104,10 +96,6 @@
         ENABLE_RSPEC=true
         ENABLE_RSPEC_FAST_SPEC_HELPER=true
         ENABLE_RSPEC_UNIT=true
-        ENABLE_RSPEC_PRAEFECT=true
-        ENABLE_RSPEC_SINGLE_DB=true
-        ENABLE_RSPEC_SINGLE_DB_CI_CONNECTION=true
-        ENABLE_RSPEC_SINGLE_REDIS=true
         ENABLE_RSPEC_INTEGRATION=true
         ENABLE_RSPEC_SYSTEM=true
         ENABLE_RSPEC_MIGRATION=true
diff --git a/spec/simplecov_env.rb b/spec/simplecov_env.rb
index fbf4401ac2fec..d48acc77afb31 100644
--- a/spec/simplecov_env.rb
+++ b/spec/simplecov_env.rb
@@ -21,9 +21,9 @@ def start!
   def configure_job
     SimpleCov.configure do
       if ENV['CI_JOB_NAME']
-        coverage_name = Gitlab::Utils.slugify("#{ENV['CI_JOB_NAME']}-#{ENV['CI_PROJECT_ID']}")
-        coverage_dir "coverage/#{coverage_name}"
-        command_name coverage_name
+        job_name = Gitlab::Utils.slugify(ENV['CI_JOB_NAME'])
+        coverage_dir "coverage/#{job_name}"
+        command_name job_name
       end
 
       if ENV['CI']
-- 
GitLab