diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7d827e9dc8d3715a7666ad8c60e8b947e0760801
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,33 @@
+stages:
+  - build
+  - deploy
+
+build-website:
+  image: node:22
+  stage: build
+  # Explicitly set the prefix for the build
+  variables:
+    WEBSITE_PREFIX: '/pipeline-creation-assistant'
+  tags:
+    - grid5000-docker
+  script:
+    - npm install
+    - npm run build
+    # Output build is actually in 'out'
+    - mv out public
+  artifacts:
+    paths:
+      - public
+
+pages:
+  needs: ['build-website']
+  image: node:22
+  tags:
+    - grid5000-docker
+  artifacts:
+    paths:
+      - public
+  rules:
+    # This ensures that only pushes to the default branch will trigger
+    # a pages deploy
+    - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH