diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 04d7f78eb38a5e26eeba7dfad4c1834359fac315..cec1760ee2ee535b6fc87705bd5d61d0832ba298 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -13,6 +13,10 @@ variables:
     GIT_SUBMODULE_STRATEGY: recursive
     GIT_DEPTH: 0
 
+.default_rules:
+  rules:
+    - if: $IS_NEW_VERSION_REQUIRED
+
 check_current_version:
   before_script:
     - apk add html-xml-utils curl jq
@@ -20,10 +24,15 @@ check_current_version:
   script: 
     - echo https://$HOSTING_HOST
     - 'export CSITE_VERSION=$(curl -s https://${HOSTING_HOST} | hxnormalize -xe | hxselect -c "script#__config" | hxuncdata | jq -r .version)'
-    - echo "Found site version $CSITE_VERSION"
-    - '[[ "$CSITE_VERSION" != "$CI_COMMIT_SHORT_SHA" ]]'
+    - 'export IS_NEW_VERSION_REQUIRED=$([[ "$CSITE_VERSION" == "$CI_COMMIT_SHORT_SHA" ]] && echo "false" || echo "true")'
+    - echo "Found site version $CSITE_VERSION therefore NEW VERSION IS REQUIRED $IS_NEW_VERSION_REQUIRED"
+    - echo "CURRENT_SITE_VERSION=$CSITE_VERSION" >> version.env
+    - echo "IS_NEW_VERSION_REQUIRED=$IS_NEW_VERSION_REQUIRED" >> version.env
   rules:
     - if: $CI_PIPELINE_SOURCE == "schedule"
+  artifacts:
+    reports:
+      dotenv: version.env
 
 docs:
   stage: test
@@ -31,6 +40,8 @@ docs:
   allow_failure: true
   script:
     - mdl -r ~MD013,~MD010,~MD014,~MD024,~MD026,~MD029,~MD033,~MD036,~MD037,~MD046 *.md main/ topics/ # BUGS
+  rules:
+    - !reference [.default_rules, rules]
 
 # pylint:
 #   stage: test
@@ -55,6 +66,8 @@ capitalize:
   allow_failure: true
   script:
     - find mkdocs.yml topics/ main/ \( -name '*.md' -o -name '*.yml' \) -print0 | xargs -0 -n1 scripts/titlemd.py --test
+  rules:
+    - !reference [.default_rules, rules]
 
 ext_links:
   stage: after_test
@@ -65,6 +78,8 @@ ext_links:
     - rm *.json
   script:
     - find topics/ main/ -name '*.md' -exec grep --color -l http {} + | xargs awesome_bot -t 10 --allow-dupe --allow-redirect
+  rules:
+    - !reference [.default_rules, rules]
 
 404s:
   stage: after_test
@@ -80,6 +95,7 @@ ext_links:
   - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
     when: never
   - if: $CI_COMMIT_BRANCH
+  - !reference [.default_rules, rules]
 
 # mkdocs:
 #   stage: build
@@ -148,6 +164,7 @@ docker-build:
     - if: $CI_COMMIT_BRANCH
       exists:
         - Dockerfile
+    - !reference [.default_rules, rules]
 
 .mkdocs-build: &mkdocs-build
   stage: build
@@ -167,8 +184,9 @@ mkdocs:
       name: "${CI_REGISTRY_IMAGE}:latest"
       entrypoint: ["/bin/sh", "-c"]
   <<: *mkdocs-build
-  only:
-    - master
+  rules:
+    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+    - !reference [.default_rules, rules]
 
 mkdocs-dev:
   image:
@@ -198,9 +216,10 @@ deploy production:
       url: https://${HOSTING_HOST}
   script:
     - rsync -a -e "ssh -o StrictHostKeyChecking=no" --delete --exclude=/review site/ ${HOSTING_USERNAME}@${HOSTING_HOST}:~/public_html
-  only:
-    - master
   <<: *prepare_deploy
+  rules:
+    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+    - !reference [.default_rules, rules]
 
 deploy dev:
   needs: ["mkdocs-dev"]