diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 13069e55fd2c1e027566bf8b3054884ab72e4ffc..99ab56058052641cad8098f628df4679b7b9eb79 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -16,6 +16,17 @@
 
 # === Configure pipeline ===
 image: python:latest
+
+doxygen:
+  stage: build
+  tags:
+    - documentation
+  before_script:
+    - apt-get install doxygen
+  script:
+    - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@git.rwth-aachen.de/unicado/libraries
+    - doxygen libraries/aircraftGeometry2/doc/Doxyfile
+
 pages:
   stage: deploy
   tags:
@@ -23,7 +34,6 @@ pages:
   before_script:
     - pip install mkdocs-material mkdocs-glightbox
   script:
-    - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@git.rwth-aachen.de/unicado/libraries
     - mkdir $CI_PROJECT_DIR/docs/aircraft-xml
     - python $CI_PROJECT_DIR/scripts/document_aircraft_xml.py --title General --level 1 $CI_PROJECT_DIR/scripts/CSR-02.xml > $CI_PROJECT_DIR/docs/aircraft-xml/general.md
     - python $CI_PROJECT_DIR/scripts/document_aircraft_xml.py --title MassesAndLoadings --level 3 $CI_PROJECT_DIR/scripts/CSR-02.xml > $CI_PROJECT_DIR/docs/aircraft-xml/masses.md
@@ -40,6 +50,8 @@ pages:
     - python $CI_PROJECT_DIR/scripts/document_aircraft_xml.py --title Requirements --level 3 $CI_PROJECT_DIR/scripts/CSR-02.xml > $CI_PROJECT_DIR/docs/aircraft-xml/requirements.md
     - python $CI_PROJECT_DIR/scripts/document_aircraft_xml.py --title DesignSpecification --level 4 $CI_PROJECT_DIR/scripts/CSR-02.xml > $CI_PROJECT_DIR/docs/aircraft-xml/specification.md
     - mkdocs build --site-dir public
+  needs:
+    - doxygen
   artifacts:
     paths:
       - public