diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d5f1930dd315020d8379462db0d01cebd1749407..ae045fb4a57c6df6b67a3a3cd12087a505cb435c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -75,7 +75,12 @@ spack:setup:
   script:
     - ci/setup_spack.sh
   needs:
-    - job: "spack:checkout: [$environment, $slurm_options, $stack]"
+    - job: spack:checkout
+      parallel:
+        matrix:
+          - environment: $environment
+          - slurm_options: $slurm_options
+          - stack: $stack
   artifacts:
     paths:
       - ${stack}/environment
@@ -99,7 +104,12 @@ spack:install_compilers:
     reports:
       junit: spack-install-*.xml
   needs:
-    - job: "spack:setup: [$environment, $slurm_options, $stack]"
+    - job: spack:setup
+      parallel:
+        matrix:
+          - environment: $environment
+          - slurm_options: $slurm_options
+          - stack: $stack
   timeout: 5h
 
 spack:concretize:
@@ -112,7 +122,13 @@ spack:concretize:
     - ${STACK_LOCATION}/spack/bin/spack -e ${SPACK_SYSTEM_CONFIG_PATH} config blame
     - ${STACK_LOCATION}/spack/bin/spack -e ${SPACK_SYSTEM_CONFIG_PATH} concretize
   needs:
-    - job: "spack:install_compilers: [$environment, $slurm_options, $stack]"
+    - job: spack:install_compilers
+      parallel:
+        matrix:
+          - environment: $environment
+          - slurm_options: $slurm_options
+          - stack: $stack
+
   artifacts:
     paths:
       - ${stack}/environment
@@ -140,7 +156,12 @@ spack:install:
         echo "{}" > spack-install.xml
       fi
   needs:
-    - job: "spack:concretize: [$environment, $slurm_options, $stack]"
+    - job: spack:concretize
+      parallel:
+        matrix:
+          - environment: $environment
+          - slurm_options: $slurm_options
+          - stack: $stack
   artifacts:
     paths:
       - ${stack}/environment
@@ -157,5 +178,10 @@ spack:mksquashfs:
     - "mksquashfs ${CI_PROJECT_DIR} stack-${stack}-${environment}-${CI_COMMIT_REF_SLUG}.sqfs"
     - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file stack-${stack}-${environment}-${CI_COMMIT_REF_SLUG}.sqfs "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/stack/${stack}/stack-${stack}-${environment}-${CI_COMMIT_REF_SLUG}.sqfs"'
   needs:
-    - job: "spack:install: [$environment, $slurm_options, $stack]"
+    - job: spack:install
+      parallel:
+        matrix:
+          - environment: $environment
+          - slurm_options: $slurm_options
+          - stack: $stack
   timeout: 10h