From 2eac3c06cb2207f7a3ff97c333ec59e7c1ac859f Mon Sep 17 00:00:00 2001
From: Lin Jen-Shin <jen-shin@gitlab.com>
Date: Wed, 10 Jul 2024 00:53:03 +0800
Subject: [PATCH] Unify dependent jobs for e2e:package-and-test-ce

We only need to run those as-if-foss jobs solely for
e2e:package-and-test-ce because we already run those other jobs in the
actual as-if-foss pipeline if that's not needed for E2E tests.
---
 .gitlab/ci/build-images.gitlab-ci.yml |  4 +--
 .gitlab/ci/frontend.gitlab-ci.yml     |  2 +-
 .gitlab/ci/qa.gitlab-ci.yml           |  4 +--
 .gitlab/ci/rules.gitlab-ci.yml        | 42 ++++++++++++++-------------
 .gitlab/ci/setup.gitlab-ci.yml        | 14 +++++++--
 5 files changed, 39 insertions(+), 27 deletions(-)

diff --git a/.gitlab/ci/build-images.gitlab-ci.yml b/.gitlab/ci/build-images.gitlab-ci.yml
index 1621d474d39f..5525f5ed1c3c 100644
--- a/.gitlab/ci/build-images.gitlab-ci.yml
+++ b/.gitlab/ci/build-images.gitlab-ci.yml
@@ -27,7 +27,7 @@ build-qa-image as-if-foss:
   extends:
     - build-qa-image
     - .as-if-foss
-    - .build-images:rules:build-qa-image-as-if-foss
+    - .qa:rules:package-and-test-ce:follow-up
 
 follow-up:build-qa-image:
   extends:
@@ -87,7 +87,7 @@ build-assets-image as-if-foss:
   extends:
     - build-assets-image
     - .as-if-foss
-    - .build-images:rules:build-assets-image-as-if-foss
+    - .qa:rules:package-and-test-ce:follow-up
   needs: ["compile-production-assets as-if-foss"]
 
 follow-up:build-assets-image:
diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml
index 23a3e13743a3..5d42dd82522e 100644
--- a/.gitlab/ci/frontend.gitlab-ci.yml
+++ b/.gitlab/ci/frontend.gitlab-ci.yml
@@ -64,7 +64,7 @@ compile-production-assets as-if-foss:
   extends:
     - compile-production-assets
     - .as-if-foss
-    - .frontend:rules:compile-production-assets-as-if-foss
+    - .qa:rules:package-and-test-ce:follow-up
 
 follow-up:compile-production-assets:
   extends:
diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml
index 2dea48c8c3e3..bb11ece96ae2 100644
--- a/.gitlab/ci/qa.gitlab-ci.yml
+++ b/.gitlab/ci/qa.gitlab-ci.yml
@@ -192,11 +192,11 @@ e2e:post-run-e2e-message:
 e2e:package-and-test-ce:
   extends:
     - e2e:package-and-test-ee
-    - .qa:rules:package-and-test-ce
+    - .qa:rules:package-and-test-ce:follow-up
   needs:
     - build-assets-image as-if-foss
     - build-qa-image as-if-foss
-    - e2e-test-pipeline-generate
+    - e2e-test-pipeline-generate as-if-foss
   variables:
     FOSS_ONLY: "1"
     RELEASE: "${REGISTRY_HOST}/${REGISTRY_GROUP}/build/omnibus-gitlab-mirror/gitlab-ce:${RELEASE_IMAGE_TAG}"
diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml
index ddea2cf48ca9..14c6651bf6d4 100644
--- a/.gitlab/ci/rules.gitlab-ci.yml
+++ b/.gitlab/ci/rules.gitlab-ci.yml
@@ -956,18 +956,6 @@
     - !reference [".releases:rules:canonical-dot-com-gitlab-stable-branch-only-setup-test-env", rules]
     - !reference [".releases:rules:canonical-dot-com-security-gitlab-stable-branch-only-setup-test-env", rules]
 
-.build-images:rules:build-qa-image-as-if-foss:
-  rules:
-    - <<: *if-not-canonical-namespace
-      when: never
-    - <<: *if-merge-request-labels-pipeline-expedite
-      when: never
-    - !reference [".strict-ee-only-rules", rules]
-    - <<: *if-default-branch-schedule-nightly
-      variables:
-        ARCH: amd64,arm64
-    - !reference [".build-images:rules:build-qa-image-merge-requests", rules]
-
 # When new minor release tag is pushed, re-tag gdk image with pattern ignored by registry cleanup
 .build-images:rules:retag-gdk-image:
   rules:
@@ -1267,13 +1255,6 @@
     - if: '$ENABLE_COMPILE_PRODUCTION_ASSETS == "true"'
     - !reference [".frontend:rules:assets-shared", rules]
 
-.frontend:rules:compile-production-assets-as-if-foss:
-  rules:
-    - <<: *if-not-canonical-namespace
-      when: never
-    - !reference [".strict-ee-only-rules", rules]
-    - !reference [.frontend:rules:compile-production-assets, rules]
-
 .frontend:rules:compile-test-assets:
   rules:
     - if: '$ENABLE_COMPILE_TEST_ASSETS == "true"'
@@ -1715,7 +1696,8 @@
     - !reference [".qa:rules:package-and-test-common", rules]
     - !reference [".qa:rules:e2e-schedule-blocking", rules]
 
-.qa:rules:package-and-test-ce:
+# Note: If any changes are made to this rule, the following should also be updated - .qa:rules:package-and-test-ce:follow-up
+.qa:rules:package-and-test-ce:start:
   rules:
     - !reference [".qa:rules:package-and-test-never-run", rules]
     - <<: *if-security-merge-request
@@ -1730,6 +1712,26 @@
     - <<: *if-default-branch-schedule-nightly
       allow_failure: true
       variables:
+        ARCH: amd64,arm64
+        CREATE_TEST_FAILURE_ISSUES: "true"
+        PROCESS_TEST_RESULTS: "true"
+        QA_SAVE_TEST_METRICS: "true"
+        QA_EXPORT_TEST_METRICS: "false"
+
+.qa:rules:package-and-test-ce:follow-up:
+  rules:
+    - !reference [".qa:rules:package-and-test-never-run", rules]
+    - <<: *if-security-merge-request
+      changes: *qa-patterns
+      allow_failure: true
+    - !reference [".prevent-tier-2-and-below", rules]
+    - <<: *if-security-merge-request
+      changes: *code-patterns
+      allow_failure: true
+    - <<: *if-default-branch-schedule-nightly
+      allow_failure: true
+      variables:
+        ARCH: amd64,arm64
         CREATE_TEST_FAILURE_ISSUES: "true"
         PROCESS_TEST_RESULTS: "true"
         QA_SAVE_TEST_METRICS: "true"
diff --git a/.gitlab/ci/setup.gitlab-ci.yml b/.gitlab/ci/setup.gitlab-ci.yml
index 0ebe3c586193..e3282f0bb2e5 100644
--- a/.gitlab/ci/setup.gitlab-ci.yml
+++ b/.gitlab/ci/setup.gitlab-ci.yml
@@ -214,9 +214,19 @@ e2e-test-pipeline-generate:
 # This is the manual start of the chain of E2E jobs
 # After playing this, it'll follow up with:
 # follow-up:compile-production-assets -> follow-up:build-assets-image --\
-#                                    \-> follow-up:e2e:package-and-test-ee
-# follow-up:build-qa-image --------------------------------------------------------------------------/
+#                                                                       \-> follow-up:e2e:package-and-test-ee
+# follow-up:build-qa-image ---------------------------------------------/
 manual:e2e-test-pipeline-generate:
   extends:
     - e2e-test-pipeline-generate
     - .qa:rules:manual-e2e
+
+# This is the start of the chain of E2E jobs for CE
+# After playing this, it'll follow up with:
+# compile-production-assets as-if-foss -> build-assets-image as-if-foss --\
+#                                                                         \-> e2e:package-and-test-ce
+# build-qa-image as-if-foss ----------------------------------------------/
+e2e-test-pipeline-generate as-if-foss:
+  extends:
+    - e2e-test-pipeline-generate
+    - .qa:rules:package-and-test-ce:start
-- 
GitLab