diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ea91a7ef4d00e329f97d2e9666c12ef111c12dd9..f2335f8018a9d67f0c42a1bc1ee25167a518c07a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -77,3 +77,16 @@ test_clang_format:
     - meson setup build-clang-format
     - ninja -C build-clang-format clang-format-check
   needs: []
+
+test_clang_tidy:
+  stage: test
+  script:
+    # Hack needed for meson < 1.6.0 which only looks for unversioned clang-tidy
+    - mkdir -p ~/.local/bin && ln -s /usr/bin/clang-tidy-16 ~/.local/bin/clang-tidy
+    - export PATH="$HOME/.local/bin:$PATH"
+    - meson setup build-clang-tidy
+    # Generate Flex and Bison files
+    - meson compile -C build-clang-tidy
+    - ninja -C build-clang-tidy clang-tidy
+  needs: []
+  when: manual