diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d93c9cc5543065d9250b649f66f60e2821f0c07e..2e85c59ad14a5ac2d19b95272678da99ab856950 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,12 @@
 image: lofareosc/prefactor3-cwl:latest
 
+workflow:
+  rules:
+    # don't create a pipeline if its a commit pipeline, on a branch and that branch has open merge requests.
+    - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
+      when: never
+    - when: always
+
 variables:
   TEST_HBA_DATASET_NAME: "test_data.tar.gz"
   CALIBRATOR_HBA_RESULTS_NAME: "results_calibrator.tar.gz"
@@ -88,6 +95,8 @@ build-doc:
     # Only add job for commits to master or on merge request events
     - if: '$CI_COMMIT_BRANCH == "master" && $CI_PIPELINE_SOURCE != "schedule"'
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+    - changes:
+        - docs/*
 
 deploy-doc:
   stage: deploy
@@ -101,3 +110,9 @@ deploy-doc:
     - ssh-keyscan -H dop810 > ~/.ssh/known_hosts
   script:
     - scp -r docs/build/html/* citt@dop810:prefactor
+  rules:
+    # Only run on master
+    - if: '$CI_COMMIT_BRANCH != "master"'
+      when: never
+    - changes:
+        - docs/*