diff --git a/.ci/gitlab-ci.yaml b/.ci/gitlab-ci.yaml
index 4fa2e5ae08de9a5246a19c7c8e1bcb10806cc660..19cda5bc18224275fea81c8e9419f400904059ba 100644
--- a/.ci/gitlab-ci.yaml
+++ b/.ci/gitlab-ci.yaml
@@ -7,6 +7,11 @@ variables:
 stages:
   - test
   - doc
+  - deploy
+
+cache:
+  paths:
+    - site*
 
 pre-commit:
   stage: test
@@ -32,7 +37,7 @@ pre-commit:
     - pre-commit install -t pre-commit
     - pre-commit run --all --verbose
 
-pages:
+build:
   stage: doc
   image: ${container_registry}/${image_name}:${image_version}
   before_script:
@@ -42,7 +47,16 @@ pages:
     - pip3 install --upgrade mkdocs
   script:
     - mkdocs build -s -f ./mkdocs.yaml
+
+pages:
+  stage: deploy
+  image: ${container_registry}/${image_name}:${image_version}
+  dependencies:
+    - pages
+  script:
     - mv site public
+  only:
+    - main
   artifacts:
     paths:
       - public