diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index cd1a331b63f9e8d703c59e7afeae2a9ea8e3792c..f2e03bc8dbbcb4bb30e0aae736a81de0bb409ac5 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -86,8 +86,7 @@ workflow:
     # For the scheduled pipelines, we set specific variables.
     - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule"'
       variables:
-        <<: *default-ruby-variables
-        <<: *default-branch-pipeline-failure-variables
+        <<: [*default-ruby-variables, *default-branch-pipeline-failure-variables]
         CRYSTALBALL: "true"
         PIPELINE_NAME: 'Scheduled Ruby $RUBY_VERSION $CI_COMMIT_BRANCH branch pipeline'
     # Run pipelines for ruby3_1 branch
@@ -99,15 +98,13 @@ workflow:
     # when pipeline is triggered by a project access token.
     - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $GITLAB_USER_LOGIN =~ /project_\d+_bot\d*/'
       variables:
-        <<: *default-ruby-variables
-        <<: *default-branch-pipeline-failure-variables
+        <<: [*default-ruby-variables, *default-branch-pipeline-failure-variables]
         GITLAB_DEPENDENCY_PROXY_ADDRESS: ""
         PIPELINE_NAME: 'Ruby $RUBY_VERSION $CI_COMMIT_BRANCH branch pipeline (triggered by a project token)'
     # For `$CI_DEFAULT_BRANCH` branch, create a pipeline (this includes on schedules, pushes, merges, etc.).
     - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
       variables:
-        <<: *default-ruby-variables
-        <<: *default-branch-pipeline-failure-variables
+        <<: [*default-ruby-variables, *default-branch-pipeline-failure-variables]
         PIPELINE_NAME: 'Ruby $RUBY_VERSION $CI_COMMIT_BRANCH branch pipeline'
     # For tags, create a pipeline.
     - if: '$CI_COMMIT_TAG'
diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml
index 046e403397a46db3cdca4f96729d8dc3c9dcbf65..2d5a910a8fcd27608faf35e8e57d92b99ce7d678 100644
--- a/.gitlab/ci/rules.gitlab-ci.yml
+++ b/.gitlab/ci/rules.gitlab-ci.yml
@@ -1614,14 +1614,12 @@
 
 .qa:rules:package-and-test-schedule:
   rules:
-    - <<: *if-dot-com-gitlab-org-schedule
+    - <<: [*if-dot-com-gitlab-org-schedule, *qa-e2e-test-schedule-variables]
       allow_failure: true
-      <<: *qa-e2e-test-schedule-variables
 
 .qa:rules:e2e-schedule-blocking:
   rules:
-    - <<: *if-dot-com-gitlab-org-schedule
-      <<: *qa-e2e-test-schedule-variables
+    - <<: [*if-dot-com-gitlab-org-schedule, *qa-e2e-test-schedule-variables]
 
 # Note: If any changes are made to this rule, the following should also be updated:
 # 1) .qa:rules:manual-omnibus-and-follow-up-e2e