diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8e5e7f7ce1818504cc2c85fb01ca82b8679d3e61..ee0543a0784b52dbd6a69c539fb9742ad84ec53b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -18,6 +18,7 @@ stages:
   - cleanup    # See Note [Cleanup on Windows]
   - packaging  # Source distribution, etc.
   - hackage    # head.hackage testing
+  - deploy     # push documentation
 
 .only-default: &only-default
   only:
@@ -718,3 +719,23 @@ nightly-hackage:
   only:
     variables:
       - $NIGHTLY
+
+pages:
+  stage: deploy
+  dependencies:
+    - doc-tarball
+  image: ghcci/x86_64-linux-deb9:0.2
+  tags:
+    - x86_64-linux
+  script:
+    - mkdir -p public/doc
+    - tar -xf haddock.html.tar.xz -C public/doc
+    - tar -xf libraries.html.tar.xz -C public/doc
+    - tar -xf users_guide.html.tar.xz -C public/doc
+    - cp -f index.html public/doc
+  only:
+    - master
+  artifacts:
+    paths:
+      - public
+