# HG changeset patch
# User Balasankar 'Balu' C <balasankar@gitlab.com>
# Date 1730219851 0
#      Tue Oct 29 16:37:31 2024 +0000
# Node ID 8ba0bf61165687e23a8ba7c102b5e26673972b46
# Parent  985dc471b8541874ed45a6ec48eb324d8e47ccbc
Use multi-project pipelines for RAT triggers

Signed-off-by: Balasankar 'Balu' C <balasankar@gitlab.com>

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -21,6 +21,7 @@
 include:
   - local: '/gitlab-ci-config/workflow-rules.yml'
   - local: '/gitlab-ci-config/variables.yml'
+  - local: '/gitlab-ci-config/rat.yml'
   - local: '/gitlab-ci-config/dev-gitlab-org.yml'
   - local: '/gitlab-ci-config/gitlab-com.yml'
     rules:
diff --git a/gitlab-ci-config/dev-gitlab-org.yml b/gitlab-ci-config/dev-gitlab-org.yml
--- a/gitlab-ci-config/dev-gitlab-org.yml
+++ b/gitlab-ci-config/dev-gitlab-org.yml
@@ -1057,19 +1057,6 @@
     - if: '$PIPELINE_TYPE =~ /_(RC|TAG)_BUILD_PIPELINE$/'
       when: manual
 
-RAT-Tag:
-  stage: qa
-  image: "dev.gitlab.org:5005/cookbooks/gitlab-omnibus-builder/ubuntu_22.04:${BUILDER_IMAGE_REVISION}"
-  script:
-    - bundle exec rake qa:rat:tag
-  cache: !reference [.tag-cache]
-  needs:
-    - Ubuntu-22.04
-  allow_failure: true
-  rules:
-    - !reference [.default_rules, rules]
-    - if: '$PIPELINE_TYPE =~ /^EE_(RC|TAG)_BUILD_PIPELINE$/'
-
 Raspberry-Pi-2-Buster:
   extends: .rpi_tag_template
   image: "${BUILDER_IMAGE_REGISTRY}/rpi_10:${BUILDER_IMAGE_REVISION}"
diff --git a/gitlab-ci-config/gitlab-com.yml b/gitlab-ci-config/gitlab-com.yml
--- a/gitlab-ci-config/gitlab-com.yml
+++ b/gitlab-ci-config/gitlab-com.yml
@@ -542,54 +542,6 @@
     - job: Docker-branch
       artifacts: false
 
-RAT:
-  stage: qa
-  variables:
-    PACKAGE_URL: ${RAT_PACKAGE_URL}
-    REFERENCE_ARCHITECTURE: ${RAT_REFERENCE_ARCHITECTURE}
-    QA_IMAGE: ${QA_IMAGE}
-  trigger:
-    project: 'gitlab-org/distribution/reference-architecture-tester'
-    branch: 'master'
-    strategy: depend
-    forward:
-      pipeline_variables: false
-      yaml_variables: true
-  rules:
-    - if: '$PIPELINE_TYPE == "TRIGGERED_EE_PIPELINE"'
-      when: manual
-      allow_failure: true
-    - if: '$PIPELINE_TYPE == "EE_NIGHTLY_BUILD_PIPELINE"'
-      allow_failure: true
-      variables:
-        NIGHTLY: 'true'
-  needs:
-    - job: Ubuntu-22.04-branch
-      artifacts: false
-    - job: generate-facts
-      artifacts: true
-
-RAT:FIPS:
-  extends: RAT
-  variables:
-    PACKAGE_URL: ${RAT_FIPS_PACKAGE_URL}
-    REFERENCE_ARCHITECTURE: ${RAT_FIPS_REFERENCE_ARCHITECTURE}
-  needs:
-    - job: Ubuntu-20.04-fips-branch
-      artifacts: false
-    - job: generate-facts
-      artifacts: true
-
-RAT:ref_arch_envs:
-  extends: RAT
-  parallel:
-    matrix:
-      - REFERENCE_ARCHITECTURE: [1k, 2k, 3k, 10k]
-  rules:
-    - if: '$PIPELINE_TYPE == "TRIGGERED_EE_PIPELINE"'
-      when: manual
-      allow_failure: true
-
 GET:Geo:
   stage: qa
   variables:
diff --git a/gitlab-ci-config/rat.yml b/gitlab-ci-config/rat.yml
new file mode 100644
--- /dev/null
+++ b/gitlab-ci-config/rat.yml
@@ -0,0 +1,64 @@
+RAT:
+  stage: qa
+  variables:
+    PACKAGE_URL: ${RAT_PACKAGE_URL}
+    REFERENCE_ARCHITECTURE: ${RAT_REFERENCE_ARCHITECTURE}
+    QA_IMAGE: ${QA_IMAGE}
+  trigger:
+    project: ${RAT_PROJECT_PATH}
+    branch: 'master'
+    strategy: depend
+    forward:
+      pipeline_variables: false
+      yaml_variables: true
+  rules:
+    - if: '$PIPELINE_TYPE == "TRIGGERED_EE_PIPELINE"'
+      when: manual
+      allow_failure: true
+    - if: '$PIPELINE_TYPE == "EE_NIGHTLY_BUILD_PIPELINE"'
+      allow_failure: true
+      variables:
+        NIGHTLY: 'true'
+    - if: '$PIPELINE_TYPE =~ /^EE_(RC|TAG)_BUILD_PIPELINE$/'
+      allow_failure: true
+      variables:
+        PRE_RELEASE: 'true'
+        PACKAGE_VERSION: ${RAT_PACKAGE_VERSION}
+  needs:
+    - job: Ubuntu-22.04-branch
+      artifacts: false
+      optional: true
+    - job: Ubuntu-22.04
+      artifacts: false
+      optional: true
+    - job: generate-facts
+      artifacts: true
+
+RAT:FIPS:
+  extends: RAT
+  variables:
+    PACKAGE_URL: ${RAT_FIPS_PACKAGE_URL}
+    REFERENCE_ARCHITECTURE: ${RAT_FIPS_REFERENCE_ARCHITECTURE}
+  rules:
+    - if: '$PIPELINE_TYPE == "TRIGGERED_EE_PIPELINE"'
+      when: manual
+      allow_failure: true
+    - if: '$PIPELINE_TYPE == "EE_NIGHTLY_BUILD_PIPELINE"'
+      allow_failure: true
+      variables:
+        NIGHTLY: 'true'
+  needs:
+    - job: Ubuntu-20.04-fips-branch
+      artifacts: false
+    - job: generate-facts
+      artifacts: true
+
+RAT:ref_arch_envs:
+  extends: RAT
+  parallel:
+    matrix:
+      - REFERENCE_ARCHITECTURE: [1k, 2k, 3k, 10k]
+  rules:
+    - if: '$PIPELINE_TYPE == "TRIGGERED_EE_PIPELINE"'
+      when: manual
+      allow_failure: true
diff --git a/gitlab-ci-config/variables.yml b/gitlab-ci-config/variables.yml
--- a/gitlab-ci-config/variables.yml
+++ b/gitlab-ci-config/variables.yml
@@ -43,3 +43,4 @@
   OPENSSL_VERSION: '1.1.1'
   FF_TIMESTAMPS: true
   OPENSSL_GEM_VERSION: '~> 3.2.0'
+  RAT_PROJECT_PATH: 'gitlab-org/distribution/reference-architecture-tester'
diff --git a/lib/gitlab/build/facts.rb b/lib/gitlab/build/facts.rb
--- a/lib/gitlab/build/facts.rb
+++ b/lib/gitlab/build/facts.rb
@@ -94,6 +94,7 @@
           RAT_FIPS_REFERENCE_ARCHITECTURE=#{Gitlab::Util.get_env('RAT_FIPS_REFERENCE_ARCHITECTURE') || 'omnibus-gitlab-mrs-fips-ubuntu'}
           RAT_PACKAGE_URL=#{Build::Info::CI.package_download_url(fips: false)}
           RAT_FIPS_PACKAGE_URL=#{Build::Info::CI.package_download_url(job_name: 'Ubuntu-20.04', fips: true)}
+          RAT_PACKAGE_VERSION=#{Build::Info::Package.name_version}
         ]
       end
 
diff --git a/lib/gitlab/build/rat.rb b/lib/gitlab/build/rat.rb
deleted file mode 100644
--- a/lib/gitlab/build/rat.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-require_relative 'rat/nightly'
-require_relative 'rat/tag'
diff --git a/lib/gitlab/build/rat/nightly.rb b/lib/gitlab/build/rat/nightly.rb
deleted file mode 100644
--- a/lib/gitlab/build/rat/nightly.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-require 'cgi'
-
-require_relative '../../util'
-require_relative '../info/package'
-require_relative '../trigger'
-
-module Build
-  class RAT
-    class NightlyPipeline
-      extend Trigger
-
-      PROJECT_PATH = 'gitlab-org/distribution/reference-architecture-tester'.freeze
-
-      def self.get_project_path
-        PROJECT_PATH
-      end
-
-      def self.get_params(image: nil)
-        {
-          'ref' => 'master',
-          'token' => Gitlab::Util.get_env('RAT_TRIGGER_TOKEN'),
-          'variables[REFERENCE_ARCHITECTURE]' => Gitlab::Util.get_env('RAT_REFERENCE_ARCHITECTURE') || 'omnibus-gitlab-mrs',
-          'variables[NIGHTLY]' => "true",
-          'variables[PACKAGE_VERSION]' => Build::Info::Package.name_version,
-          'variables[QA_IMAGE]' => Gitlab::Util.get_env('QA_IMAGE') || image || 'gitlab/gitlab-ee-qa:nightly'
-        }
-      end
-
-      def self.get_access_token
-        # Default to "Multi-pipeline (from 'dev/gitlab/omnibus-gitlab' 'RAT-*' jobs)" at https://gitlab.com/gitlab-org/distribution/reference-architecture-tester/-/settings/access_tokens
-        Gitlab::Util.get_env('RAT_PROJECT_ACCESS_TOKEN')
-      end
-    end
-  end
-end
diff --git a/lib/gitlab/build/rat/tag.rb b/lib/gitlab/build/rat/tag.rb
deleted file mode 100644
--- a/lib/gitlab/build/rat/tag.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-require 'cgi'
-
-require_relative '../../util'
-require_relative '../info/package'
-require_relative '../trigger'
-
-module Build
-  class RAT
-    class TagPipeline
-      extend Trigger
-
-      PROJECT_PATH = 'gitlab-org/distribution/reference-architecture-tester'.freeze
-
-      def self.get_project_path
-        PROJECT_PATH
-      end
-
-      def self.get_params(image: nil)
-        {
-          'ref' => 'master',
-          'token' => Gitlab::Util.get_env('RAT_TRIGGER_TOKEN'),
-          'variables[REFERENCE_ARCHITECTURE]' => 'omnibus-gitlab-mrs',
-          'variables[PRE_RELEASE]' => "true",
-          'variables[PACKAGE_VERSION]' => Build::Info::Package.name_version,
-          'variables[QA_IMAGE]' => Gitlab::Util.get_env('QA_IMAGE') || image || "dev.gitlab.org:5005/gitlab/gitlab-ee/gitlab-ee-qa:#{version.partition(/\.\d+$/).first}"
-        }
-      end
-
-      def self.version
-        Gitlab::Util.get_env('CI_COMMIT_TAG').tr('+', '-')
-      end
-
-      def self.get_access_token
-        # Default to "Multi-pipeline (from 'dev/gitlab/omnibus-gitlab' 'RAT-*' jobs)" at https://gitlab.com/gitlab-org/distribution/reference-architecture-tester/-/settings/access_tokens
-        Gitlab::Util.get_env('RAT_PROJECT_ACCESS_TOKEN')
-      end
-    end
-  end
-end
diff --git a/lib/gitlab/tasks/qa.rake b/lib/gitlab/tasks/qa.rake
--- a/lib/gitlab/tasks/qa.rake
+++ b/lib/gitlab/tasks/qa.rake
@@ -7,7 +7,6 @@
 require_relative '../build/info/git'
 require_relative '../build/qa'
 require_relative '../build/qa_image'
-require_relative '../build/rat'
 require_relative '../docker_operations'
 require_relative '../util'
 
@@ -111,20 +110,4 @@
       end
     end
   end
-
-  namespace :rat do
-    desc "Trigger a RAT pipeline using nightly package"
-    task :nightly do
-      Gitlab::Util.section('qa:rat:validate') do
-        Build::RAT::NightlyPipeline.invoke!.wait!(timeout: 3600 * 4)
-      end
-    end
-
-    desc "Trigger a RAT pipeline using tag package"
-    task :tag do
-      Gitlab::Util.section('qa:rat:validate') do
-        Build::RAT::TagPipeline.invoke!.wait!(timeout: 3600 * 4)
-      end
-    end
-  end
 end
diff --git a/spec/lib/gitlab/build/facts_spec.rb b/spec/lib/gitlab/build/facts_spec.rb
--- a/spec/lib/gitlab/build/facts_spec.rb
+++ b/spec/lib/gitlab/build/facts_spec.rb
@@ -242,6 +242,7 @@
       allow(described_class).to receive(:generate_knapsack_report?).and_return('true')
       allow(Build::GitlabImage).to receive(:gitlab_registry_image_address).and_return('registry.gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/gitlab-ee:14.6.2-rfbranch.450066356.c97110ad-0')
       allow(Build::Info::Git).to receive(:latest_stable_tag).and_return("14.6.2+rfbranch.450066356")
+      allow(Build::Info::Package).to receive(:name_version).and_return("gitlab-ee=14.6.2+rfbranch.450066356-0")
 
       stub_env_var('QA_IMAGE', 'gitlab/gitlab-ee-qa:nightly')
       stub_env_var('QA_TESTS', '')
@@ -262,6 +263,7 @@
         RAT_FIPS_REFERENCE_ARCHITECTURE=omnibus-gitlab-mrs-fips-ubuntu
         RAT_PACKAGE_URL=https://example.com/gitlab.deb
         RAT_FIPS_PACKAGE_URL=https://example.com/gitlab-fips.deb
+        RAT_PACKAGE_VERSION=gitlab-ee=14.6.2+rfbranch.450066356-0
       ]
 
       expect(described_class.qa_trigger_vars).to eq(result)