diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6c38ff23becc9f0e64f16968834f8f8866f8aedb..4722538ad69abb31f7e01a133b8b9cf34d9d78c2 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,11 +1,24 @@
 pages:
   stage: deploy
   image: python:latest
-  script:
-    - pip install mkdocs-material
-    - mkdocs build --site-dir public
+  variables:
+    PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
+    PAGES_BRANCH: develop
+    HTTPS_REMOTE: https://gitlab-ci-token:${ACCESS_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git
+  before_script:
+    - pip install mkdocs-material mike
+    - git config user.name $GITLAB_USER_NAME
+    - git config user.email $GITLAB_USER_EMAIL
+    - git fetch origin $PAGES_BRANCH && git -b checkout $PAGES_BRANCH origin/$PAGES_BRANCH || git checkout $PAGES_BRANCH || echo "Pages branch not deployed yet."
+    - git checkout $CI_COMMIT_SHA
+  script: 
+    - mike deploy --rebase --prefix public -r $HTTPS_REMOTE -p -b $PAGES_BRANCH -u $CI_COMMIT_TAG latest
+    - mike set-default --rebase --prefix public -r $HTTPS_REMOTE -p -b $PAGES_BRANCH latest
+    - git checkout $PAGES_BRANCH -- public/
   artifacts:
     paths:
-      - public
+      - public/
+  only:
+    - tags
   rules:
-    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
+    - if: '$CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'