diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d351ef6918d7909914bbec8cab0aab9c4d81ab90..b9827b8422372e19d5a3faf22d29edf564cf9259 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,36 +4,29 @@ stages:
   - "Documentation"
   - deploy
 
+.nox-base:
+  image: i10git.cs.fau.de:5005/pycodegen/pycodegen/nox
+  tags:
+    - docker
+
 linter:
+  extends: .nox-base
   stage: "Code Quality"
   needs: []
-  except:
-    variables:
-      - $ENABLE_NIGHTLY_BUILDS
-  image: i10git.cs.fau.de:5005/pycodegen/pycodegen/nox
   script:
     - nox --session lint
-  tags:
-    - docker
 
 typechecker:
+  extends: .nox-base
   stage: "Code Quality"
   needs: []
-  except:
-    variables:
-      - $ENABLE_NIGHTLY_BUILDS
-  image: i10git.cs.fau.de:5005/pycodegen/pycodegen/nox
   script:
     - nox --session typecheck
-  tags:
-    - docker
 
 testsuite:
+  extends: .nox-base
   stage: "Tests"
-  image: i10git.cs.fau.de:5005/pycodegen/pycodegen/nox
   needs: []
-  tags:
-    - docker
   script:
     - nox --session testsuite
   coverage: '/TOTAL.*\s+(\d+%)$/'
@@ -48,19 +41,17 @@ testsuite:
         path: coverage.xml
 
 build-documentation:
+  extends: .nox-base
   stage: "Documentation"
-  image: i10git.cs.fau.de:5005/pycodegen/pycodegen/nox
   needs: []
   script:
     - nox --session docs
-  tags:
-    - docker
   artifacts:
     paths:
       - docs/build/html
 
 pages:
-  image: i10git.cs.fau.de:5005/pycodegen/pycodegen/full
+  image: alpine:latest
   stage: deploy
   script:
     - ls -l