diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0e483000b3fa053221222c5289808fcc899575fe..0f33731ba4ad19ddcdc97dd55323d4ff565e17aa 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -102,6 +102,7 @@ full-deploy-production:
   stage: deploy
   environment: Production
   rules:
+     - if: ($CI_COMMIT_TAG =~ /stable/ && $MANUAL_FULL_DEPLOY_PRODUCTION == "true")
   <<: *ssh_setup
   script:
     - echo "Starting the full production deployment of airflows."
@@ -160,8 +161,7 @@ cleanup-successful-full-deployment:
   stage: cleanup
   when: on_success
   rules:
-     - if: $MANUAL_FULL_DEPLOY_PRODUCTION == "true"
-       when: tags
+     - if: ($CI_COMMIT_TAG =~ /stable/ && $MANUAL_FULL_DEPLOY_PRODUCTION == "true")
   script:
     - echo "This is the cleanup for the full-redeployment of the testing or production servers"
     - echo "if this job is reached, all earlier jobs were successful, and any lingering old instances need to be removed"
@@ -175,8 +175,7 @@ cleanup-failed-full-deployment:
   stage: cleanup
   when: on_failure
   rules:
-     - if: $MANUAL_FULL_DEPLOY_PRODUCTION == "true"
-       when: tags
+     - if: ($CI_COMMIT_TAG =~ /stable/ && $MANUAL_FULL_DEPLOY_PRODUCTION == "true")
   <<: *ssh_setup
   script:
     - echo "This is the cleanup for the full-redeployment of the testing or production servers"