diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 19822fd6eb510fdf37f619f92f497c4aebfe74a0..fa07726491cc804ba144dd1588a65235301f6ed6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,3 +1,8 @@
+workflow:
+  rules:
+    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
+
 stages:
   - check
   - test
@@ -25,7 +30,8 @@ default:
 
 checks:
   stage: check
-  only: [merge_requests]
+  rules:
+    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
   allow_failure: true
   script:
     - export PATH=/home/gitlab-runner/.local/bin:$PATH
@@ -42,7 +48,6 @@ checks:
 
 pytest:
   stage: test
-  only: [merge_requests]
   script:
     - export LANG=C  # Hopefully detect anything relying on locale
     - python3 -m pip install ".[test]" --index-url https://git.xfel.eu/api/v4/groups/501/-/packages/pypi/simple
@@ -59,7 +64,6 @@ pytest:
 
 cython-editable-install-test:
   stage: test
-  only: [merge_requests]
   script:
     - python3 -m pip install -e ".[test]" --index-url https://git.xfel.eu/api/v4/groups/501/-/packages/pypi/simple
     - python3 -m pytest --color yes --verbose ./tests/test_cythonalgs.py
@@ -72,7 +76,8 @@ automated_test:
     PYENV_VERSION: "3.11"
     CAL_CAL_TOOLS_CALCAT: "{base-api-url='http://exflcalproxy:8080/api', use-oauth2=false}"
   stage: automated_test
-  only: [merge_requests]
+  rules:
+    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
   when: manual
   allow_failure: false
   tags: