diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3677b5adaa12d73ae12d070ce5984e38cc4b3ba7_LmdpdGxhYi1jaS55bWw=..24e3a0d6a7fc72b48b520a0d2895a6a728f0f963_LmdpdGxhYi1jaS55bWw= 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -83,7 +83,7 @@
 
 before_script:
   - export CE_ONLY=(Raspberry)
-  - export EE_ONLY=(SLES HA-Validate)
+  - export EE_ONLY=(SLES HA-Validate RAT)
   - for job in "${CE_ONLY[@]}"; do
       if [[ "${CI_JOB_NAME}" =~ ${job} ]]; then
         if ./support/is_gitlab_ee.sh; then
diff --git a/doc/development/ci-variables.md b/doc/development/ci-variables.md
index 3677b5adaa12d73ae12d070ce5984e38cc4b3ba7_ZG9jL2RldmVsb3BtZW50L2NpLXZhcmlhYmxlcy5tZA==..24e3a0d6a7fc72b48b520a0d2895a6a728f0f963_ZG9jL2RldmVsb3BtZW50L2NpLXZhcmlhYmxlcy5tZA== 100644
--- a/doc/development/ci-variables.md
+++ b/doc/development/ci-variables.md
@@ -49,6 +49,7 @@
 | Environment Variable                            | Description |
 | ---------------------------------------------   | ----------- |
 | HA_VALIDATE_TOKEN                               | Trigger token for the HA Validate pipeline. |
+| RAT_TRIGGER_TOKEN                               | Trigger token for the RAT pipeline. |
 | GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN | Trigger token for building a test package. |
 | CVEIGNORE                                       | See document on [dependencies being reported as vulnerable](broken_master.md). |
 | CI_SLACK_WEBHOOK_URL                            | Webhook URL for Slack failure notifications. |
diff --git a/doc/development/pipelines.md b/doc/development/pipelines.md
index 3677b5adaa12d73ae12d070ce5984e38cc4b3ba7_ZG9jL2RldmVsb3BtZW50L3BpcGVsaW5lcy5tZA==..24e3a0d6a7fc72b48b520a0d2895a6a728f0f963_ZG9jL2RldmVsb3BtZW50L3BpcGVsaW5lcy5tZA== 100644
--- a/doc/development/pipelines.md
+++ b/doc/development/pipelines.md
@@ -275,6 +275,17 @@
 
 This job is run only on [QA mirror](https://gitlab.com/gitlab-org/build/omnibus-gitlab-mirror) on triggered pipelines.
 
+#### `Trigger:RAT`
+
+This manual job triggers a pipeline in the
+[RAT](https://gitlab.com/gitlab-org/distribution/reference-architecture-tester)
+project passing the URL to the package built by `Trigger:package` job, which
+will spin up a PostgreSQL HA instance with that package using
+[GET](https://gitlab.com/gitlab-org/quality/gitlab-environment-toolkit), and run
+QA against that instance.
+
+This job is run only on [QA mirror](https://gitlab.com/gitlab-org/build/omnibus-gitlab-mirror) on triggered EE pipelines.
+
 #### `<OS_NAME>-branch`
 
 These jobs build packages for the specified OS, and pushes the resultant package
@@ -420,6 +431,28 @@
 
 This job is run only on [Release mirror](https://dev.gitlab.org/gitlab/omnibus-gitlab) on tag pipelines.
 
+### `RAT-Nightly`
+
+This job triggers a pipeline in the
+[RAT](https://gitlab.com/gitlab-org/distribution/reference-architecture-tester)
+project passing the URL to the nightly Ubuntu 20.04 package built in this pipeline,
+which will spin up a PostgreSQL HA instance with that package using
+[GET](https://gitlab.com/gitlab-org/quality/gitlab-environment-toolkit), and run
+QA against that instance.
+
+This job is run only on [Release mirror](https://dev.gitlab.org/gitlab/omnibus-gitlab) on nightly pipelines.
+
+### `RAT-Tag`
+
+This job triggers a pipeline in the
+[RAT](https://gitlab.com/gitlab-org/distribution/reference-architecture-tester)
+project passing the URL to the Ubuntu 20.04 package built in this pipeline,
+which will spin up a PostgreSQL HA instance with that package using
+[GET](https://gitlab.com/gitlab-org/quality/gitlab-environment-toolkit), and run
+QA against that instance.
+
+This job is run only on [Release mirror](https://dev.gitlab.org/gitlab/omnibus-gitlab) on EE tag pipelines.
+
 ### `license-upload`
 
 This job compiles the license information of all the dependencies from the
diff --git a/gitlab-ci-config/dev-gitlab-org.yml b/gitlab-ci-config/dev-gitlab-org.yml
index 3677b5adaa12d73ae12d070ce5984e38cc4b3ba7_Z2l0bGFiLWNpLWNvbmZpZy9kZXYtZ2l0bGFiLW9yZy55bWw=..24e3a0d6a7fc72b48b520a0d2895a6a728f0f963_Z2l0bGFiLWNpLWNvbmZpZy9kZXYtZ2l0bGFiLW9yZy55bWw= 100644
--- a/gitlab-ci-config/dev-gitlab-org.yml
+++ b/gitlab-ci-config/dev-gitlab-org.yml
@@ -606,6 +606,17 @@
   cache: *branch-cache
   dependencies: []
 
+RAT-Nightly:
+  stage: slow_jobs
+  image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_16.04:${BUILDER_IMAGE_REVISION}"
+  script:
+    - '[[ -n "${NIGHTLY}" ]] || exit 0'
+    - bundle exec rake qa:rat:nightly
+  <<: *dev-ee-nightly-only
+  cache: *branch-cache
+  dependencies: []
+  allow_failure: true
+
 ############################
 #     Release pipeline     #
 ############################
@@ -1011,6 +1022,16 @@
   dependencies: []
   allow_failure: true
 
+RAT-Tag:
+  stage: slow_jobs
+  image: "dev.gitlab.org:5005/cookbooks/gitlab-omnibus-builder/ubuntu_16.04:${BUILDER_IMAGE_REVISION}"
+  script:
+    - bundle exec rake qa:rat:tag
+  <<: *dev-ee-tag-only
+  cache: *tag-cache
+  dependencies: []
+  allow_failure: true
+
 Raspberry-Pi-2-Buster:
   image: "${BUILDER_IMAGE_REGISTRY}/rpi_10:${BUILDER_IMAGE_REVISION}"
   <<: *rpi_tag_build
diff --git a/lib/gitlab/build/rat.rb b/lib/gitlab/build/rat.rb
index 3677b5adaa12d73ae12d070ce5984e38cc4b3ba7_bGliL2dpdGxhYi9idWlsZC9yYXQucmI=..24e3a0d6a7fc72b48b520a0d2895a6a728f0f963_bGliL2dpdGxhYi9idWlsZC9yYXQucmI= 100644
--- a/lib/gitlab/build/rat.rb
+++ b/lib/gitlab/build/rat.rb
@@ -1,1 +1,3 @@
 require_relative 'rat/trigger'
+require_relative 'rat/nightly'
+require_relative 'rat/tag'
diff --git a/lib/gitlab/build/rat/nightly.rb b/lib/gitlab/build/rat/nightly.rb
new file mode 100644
index 0000000000000000000000000000000000000000..24e3a0d6a7fc72b48b520a0d2895a6a728f0f963_bGliL2dpdGxhYi9idWlsZC9yYXQvbmlnaHRseS5yYg==
--- /dev/null
+++ b/lib/gitlab/build/rat/nightly.rb
@@ -0,0 +1,36 @@
+require_relative '../trigger'
+require_relative '../info'
+require_relative "../../util"
+require 'cgi'
+
+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.omnibus_gitlab_path
+        CGI.escape(Build::Info::OMNIBUS_PROJECT_MIRROR_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[PACKAGE_URL]' => Gitlab::Util.get_env('PACKAGE_URL') || Build::Info.package_download_url,
+          'variables[QA_IMAGE]' => Gitlab::Util.get_env('QA_IMAGE') || image || 'gitlab/gitlab-ee-qa:nightly'
+        }
+      end
+
+      def self.get_access_token
+        Gitlab::Util.get_env('GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN')
+      end
+    end
+  end
+end
diff --git a/lib/gitlab/build/rat/tag.rb b/lib/gitlab/build/rat/tag.rb
new file mode 100644
index 0000000000000000000000000000000000000000..24e3a0d6a7fc72b48b520a0d2895a6a728f0f963_bGliL2dpdGxhYi9idWlsZC9yYXQvdGFnLnJi
--- /dev/null
+++ b/lib/gitlab/build/rat/tag.rb
@@ -0,0 +1,40 @@
+require_relative '../trigger'
+require_relative '../info'
+require_relative "../../util"
+require 'cgi'
+
+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.omnibus_gitlab_path
+        CGI.escape(Build::Info::OMNIBUS_PROJECT_MIRROR_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[PACKAGE_URL]' => Gitlab::Util.get_env('PACKAGE_URL') || Build::Info.package_download_url,
+          'variables[QA_IMAGE]' => Gitlab::Util.get_env('QA_IMAGE') || image || "dev.gitlab.org:5005/gitlab/omnibus-gitlab/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
+        Gitlab::Util.get_env('GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN')
+      end
+    end
+  end
+end
diff --git a/lib/gitlab/tasks/qa.rake b/lib/gitlab/tasks/qa.rake
index 3677b5adaa12d73ae12d070ce5984e38cc4b3ba7_bGliL2dpdGxhYi90YXNrcy9xYS5yYWtl..24e3a0d6a7fc72b48b520a0d2895a6a728f0f963_bGliL2dpdGxhYi90YXNrcy9xYS5yYWtl 100644
--- a/lib/gitlab/tasks/qa.rake
+++ b/lib/gitlab/tasks/qa.rake
@@ -121,5 +121,19 @@
         Build::RAT::TriggerPipeline.invoke!.wait!(timeout: 3600 * 4)
       end
     end
+
+    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