diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d28ec90a942b67aff7ea3cdc22e0579804cbfb5a..27ca871e567f00a6bbf2468bc156331a9fbdad9b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -18,8 +18,7 @@ stages:
 
 # Theodolite Docs
 
-build-docs:
-  stage: build
+.docs:
   image: ruby:2.7
   tags:
     - exec-docker
@@ -31,6 +30,10 @@ build-docs:
     - gem install bundler
     - bundle config set --local path 'vendor'
     - bundle install
+
+build-docs:
+  stage: build
+  extends: .docs
   script: bundle exec jekyll build
   artifacts:
     paths:
@@ -38,19 +41,9 @@ build-docs:
 
 test-docs-links:
   stage: test
+  extends: .docs
   needs:
     - build-docs
-  image: ruby:2.7
-  tags:
-    - exec-docker
-  cache:
-    paths:
-      - docs/vendor
-  before_script:
-    - cd docs
-    - gem install bundler
-    - bundle config set --local path 'vendor'
-    - bundle install
   script: bundle exec htmlproofer --assume-extension --allow_hash_href --url-ignore "/favicon.ico" ./_site