From defec0264e650d2aa4b39b0d1ddc7427dea8d1e7 Mon Sep 17 00:00:00 2001
From: Jay McCure <jmccure@gitlab.com>
Date: Fri, 4 Oct 2024 19:07:24 +0000
Subject: [PATCH] E2E test: run gdk tests with gitaly transactions for Gitaly
 version changes

---
 .gitlab/ci/test-on-gdk/main.gitlab-ci.yml | 15 ++++++++++++++-
 qa/gdk/entrypoint                         | 10 +++++++++-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/.gitlab/ci/test-on-gdk/main.gitlab-ci.yml b/.gitlab/ci/test-on-gdk/main.gitlab-ci.yml
index b182643850812..efaac224a939a 100644
--- a/.gitlab/ci/test-on-gdk/main.gitlab-ci.yml
+++ b/.gitlab/ci/test-on-gdk/main.gitlab-ci.yml
@@ -48,6 +48,11 @@ include:
         - ".gitlab/ci/test-on-gdk/**"
         - "lib/gitlab/database/load_balancing/**/*"
 
+.rules:test:gdk-gitaly-version-change:
+  rules:
+    changes:
+      - "GITALY_SERVER_VERSION"
+
 .with-parallel:
   parallel: 15
 
@@ -83,7 +88,7 @@ include:
     GITLAB_QA_ADMIN_ACCESS_TOKEN: $QA_ADMIN_ACCESS_TOKEN
     FF_NETWORK_PER_BUILD: "true"
     RSPEC_LAST_RUN_RESULTS_FILE: "$CI_PROJECT_DIR/qa/tmp/examples.txt"
-    COVERBAND_ENABLED: "$COVERBAND_ENABLED" # explicitly define variable so it is passed in to gdk service container
+    COVERBAND_ENABLED: "$COVERBAND_ENABLED"  # explicitly define variable so it is passed in to gdk service container
   before_script:
     - echo "SUITE_RAN=true" > "$QA_SUITE_STATUS_ENV_FILE"
     - echo -e "\e[0Ksection_start:`date +%s`:install_gems[collapsed=true]\r\e[0KInstall gems"
@@ -157,6 +162,14 @@ gdk-qa-blocking-selective:
     QA_SCENARIO: Test::Instance::Blocking
     QA_RUN_TYPE: gdk-qa-blocking
 
+gdk-qa-blocking-gitaly-transactions:
+  extends: gdk-qa-blocking
+  variables:
+    QA_GITALY_TRANSACTIONS_ENABLED: "true"
+  rules:
+    - !reference [.rules:test:never-schedule-pipeline, rules]
+    - !reference [.rules:test:gdk-gitaly-version-change, rules]
+
 # ------------------------------------------
 # Non Blocking tests
 # ------------------------------------------
diff --git a/qa/gdk/entrypoint b/qa/gdk/entrypoint
index aefd5875e663c..1de341976bc14 100755
--- a/qa/gdk/entrypoint
+++ b/qa/gdk/entrypoint
@@ -11,10 +11,16 @@ if [[ "${WITH_LOAD_BALANCER}" == "true" ]]; then
   gdk reconfigure
 fi
 
-gdk start
+if [[ "${QA_GITALY_TRANSACTIONS_ENABLED}" == "true" ]]; then
+  gdk config set gitaly.transactions.enabled true
+  gdk config set praefect.enabled false
+  gdk reconfigure
+fi
 
 # Split logs in to multiple files when running in CI
 if [ -z "$CI" ]; then
+  gdk start
+
   exec "$@" | tee -a ${HOME}/gitlab-development-kit/gitlab/log/gdk-container.log
 else
   logs=("gitaly" "gitlab-workhorse" "postgresql" "rails-background-jobs" "redis" "sshd" "vite" "rails-web" "webpack")
@@ -27,5 +33,7 @@ else
     tail -f $logfile &>${CI_BUILDS_DIR}/$(basename $logfile) &
   done
 
+  gdk start
+
   exec "$@"
 fi
-- 
GitLab