diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 63ee4818eca1648c48f55ed08d4ad6fa7e167801..fa2beb338cfe5eaa6e2e88aaf6b54f875e822558 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -10,8 +10,34 @@ variables:
   JUWELS_ACCOUNT: "cstma"
 
 
+prepare_JUWELS:
+  stage: benchmark
+  rules:
+    - if: $CI_COMMIT_MESSAGE !~ /.*\[CI-no-benchmarks\]/
+  tags:
+    - jacamar
+    - juwels
+    - login
+    - shell
+  script:
+    - mkdir -p benchmarks
+    # load the latest Python module (currently 3.11)
+    - module --force purge
+    - module load Stages/2024
+    - module load GCC
+    - module load OpenMPI
+    - module load FFTW
+    - module load mpi4py
+    - module load SciPy-Stack
+    - module load CuPy
+    - pip install -e .
+    - pip install pytest-benchmark coverage
+
+
 test_JUWELS:
   stage: benchmark
+  needs:
+    - prepare_JUWELS
   rules:
     - if: $CI_COMMIT_MESSAGE !~ /.*\[CI-no-benchmarks\]/
   tags:
@@ -39,8 +65,6 @@ test_JUWELS:
     - module load mpi4py
     - module load SciPy-Stack
     - module load CuPy
-    - pip install -e .
-    - pip install pytest-benchmark coverage
   script:
     # - touch benchmarks/output.json
     - echo $SYSTEMNAME