diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 286e825730b0cbd9f1f3072b64d73841dd168d06..c3781842d61a165e61041f4d0d0fba92e855fffb 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -79,14 +79,16 @@ staging_deploy:
     url: https://development-chat.holi.social
   variables:
     ENVIRONMENT_ID: staging
-  only:
-    - main
+  rules:
+    - if: $CI_COMMIT_BRANCH == "main"
+      when: on_success
 
 staging_smoketest:
   extends: .smoketest
   needs: ['staging_deploy']
-  only:
-    - main
+  rules:
+    - if: $CI_COMMIT_BRANCH == "main"
+      when: on_success
 
 production_deploy:
   extends: .deploy
@@ -97,11 +99,13 @@ production_deploy:
     url: https://chat.holi.social
   variables:
     ENVIRONMENT_ID: production
-  only:
-    - production
+  rules:
+    - if: $CI_COMMIT_BRANCH == "production"
+      when: on_success
 
 production_smoketest:
   extends: .smoketest
   needs: ['production_deploy']
-  only:
-    - production
+  rules:
+    - if: $CI_COMMIT_BRANCH == "production"
+      when: on_success