diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8bf81eb1e85c21d680b95106e1b11bbae6843324..647bbc74ba8ee106cfb0ea0dff84c0b7ff005f60 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -174,8 +174,6 @@ stages:
 
         if [ "$OS" = "ubuntu24" ]; then
             pip3 install --break-system-packages pyyaml
-        elif [ "$OS" = "ubuntu22" ]; then
-            pip3 install pyyaml
         fi
 
         python3 $WORKAREA/key4hep-spack/scripts/fetch_nightly_versions.py --path $WORKAREA/key4hep-spack/environments/key4hep-common/packages.yaml --extra-path $WORKAREA/key4hep-spack/environments/key4hep-common-${BUILD_TYPE}/packages.yaml "$NIGHTLY_DATE" --only-merge
@@ -270,8 +268,6 @@ stages:
         pwd
         if [ "$OS" = "ubuntu24" ]; then
             pip3 install --break-system-packages pyyaml
-        elif [ "$OS" = "ubuntu22" ]; then
-            pip3 install pyyaml
         fi
         python3 $WORKAREA/key4hep-spack/scripts/fetch_nightly_versions.py --path $WORKAREA/key4hep-spack/environments/key4hep-common/packages.yaml --extra-path $WORKAREA/key4hep-spack/environments/key4hep-common-${BUILD_TYPE}/packages.yaml "$NIGHTLY_DATE"
         spack env activate .
@@ -300,7 +296,8 @@ stages:
 
         if [ ${COMPILER} = "gcc14" ] && [ "$OS" = "alma9" ]; then
             # Change compiler: [] to compiler: [gcc@14.2.0]
-            sed -i 's/compiler: \[\]/compiler: [gcc@14.2.0]/' ../key4hep-common/packages.yaml
+            spack compiler find
+            spack compiler rm gcc@11 -a
         fi
         
         echo "========="
@@ -357,7 +354,7 @@ stages:
         dotenv: build.env
 
 .copy-cvmfs:
-    image: gitlab-registry.cern.ch/key4hep/k4-deploy/ubuntu22
+    image: gitlab-registry.cern.ch/key4hep/k4-deploy/ubuntu24
     stage: deployment
     tags:
         - $OS-$COMPILER
@@ -441,10 +438,6 @@ prepare-spack-alma9-gcc14:
   variables:
     OS: alma9
     COMPILER: gcc14
-prepare-spack-ubuntu22:
-  extends: .clone-spack
-  variables:
-    OS: ubuntu22
 
 # Gitlab CI doesn't support parallel jobs with different needs each so we need
 # to duplicate the job if we want to have opt and dbg separated
@@ -463,13 +456,6 @@ build-nightly-opt-alma9-gcc14:
         COMPILER: gcc14
     needs:
       - prepare-spack-alma9-gcc14
-build-nightly-opt-ubuntu22:
-    extends: .build-nightly
-    variables:
-        BUILD_TYPE: "opt"
-        OS: ubuntu22
-    needs:
-      - prepare-spack-ubuntu22
 
 build-nightly-dbg-ubuntu24:
     extends: .build-nightly
@@ -486,13 +472,6 @@ build-nightly-dbg-alma9-gcc14:
         COMPILER: gcc14
     needs:
       - build-nightly-opt-alma9-gcc14
-build-nightly-dbg-ubuntu22:
-    extends: .build-nightly
-    variables:
-        BUILD_TYPE: "dbg"
-        OS: ubuntu22
-    needs:
-      - build-nightly-opt-ubuntu22
 
 deploy-nightly-ubuntu24:
     needs:
@@ -507,12 +486,6 @@ deploy-nightly-alma9-gcc14:
     variables:
         OS: alma9
         COMPILER: gcc14
-deploy-nightly-ubuntu22:
-    needs:
-        - build-nightly-dbg-ubuntu22
-    extends: .copy-cvmfs-nightly
-    variables:
-        OS: ubuntu22
 
 build-release-opt-alma9-gcc14:
     extends: .build-release
@@ -522,13 +495,6 @@ build-release-opt-alma9-gcc14:
         COMPILER: gcc14
     needs:
       - prepare-spack-alma9-gcc14
-build-release-opt-ubuntu22:
-    extends: .build-release
-    variables:
-        BUILD_TYPE: "opt"
-        OS: ubuntu22
-    needs:
-      - prepare-spack-ubuntu22
 
 build-release-dbg-alma9-gcc14:
     extends: .build-release
@@ -538,13 +504,6 @@ build-release-dbg-alma9-gcc14:
         COMPILER: gcc14
     needs:
       - build-release-opt-alma9-gcc14
-build-release-dbg-ubuntu22:
-    extends: .build-release
-    variables:
-        BUILD_TYPE: "dbg"
-        OS: ubuntu22
-    needs:
-      - build-release-opt-ubuntu22
 
 deploy-release-alma9-gcc14:
     needs:
@@ -553,12 +512,6 @@ deploy-release-alma9-gcc14:
     variables:
         OS: alma9
         COMPILER: gcc14
-deploy-release-ubuntu22:
-    needs:
-        - build-release-dbg-ubuntu22
-    extends: .copy-cvmfs-release
-    variables:
-        OS: ubuntu22
 
 ################################
 ####### TEST STAGE #############
@@ -609,20 +562,6 @@ deploy-release-ubuntu22:
 #     variables:
 #         OS: ubuntu24
 
-# test-release-ubuntu:
-#     <<: *test-build-template
-#     image: gitlab-registry.cern.ch/key4hep/k4-deploy/ubuntu22
-#     tags:
-#         - ubuntu
-#     needs:
-#         - build-release-ubuntu
-#     rules:
-#       - if: '($OS == "ubuntu" || $OS == "all") && $JOBTYPE == "Release"'
-#         changes:
-#             - never
-#     variables:
-#         OS: ubuntu
-
 ################################
 ####### DEPLOY STAGE ###########
 ################################
@@ -652,16 +591,9 @@ deploy-release-ubuntu22:
 #     needs:
 #         - deploy-nightly-alma9
 
-# test-build-workflow-ubuntu:
-#     <<: *test-build-workflow-template
-#     image: gitlab-registry.cern.ch/key4hep/k4-deploy/ubuntu22
-#     tags:
-#         - ubuntu
-#     needs:
-#         - deploy-nightly-ubuntu
 
 .push-ubuntu:
-    image: gitlab-registry.cern.ch/key4hep/k4-deploy/ubuntu22
+    image: gitlab-registry.cern.ch/key4hep/k4-deploy/ubuntu24
     stage: deployment
     needs: 
         - build-nightly-ubuntu
@@ -683,7 +615,7 @@ deploy-release-ubuntu22:
 # It's still possible to revert the changes using `cvmfs_server tag rollback`
 # in case something bad happens
 delete-old-nightlies:
-    image: gitlab-registry.cern.ch/key4hep/k4-deploy/ubuntu22
+    image: gitlab-registry.cern.ch/key4hep/k4-deploy/ubuntu24
     stage: deployment
     tags:
       - alma9-system
@@ -727,7 +659,7 @@ delete-old-nightlies:
 
 
 update-scripts:
-    image: gitlab-registry.cern.ch/key4hep/k4-deploy/ubuntu22
+    image: gitlab-registry.cern.ch/key4hep/k4-deploy/ubuntu24
     stage: deployment
     tags:
       - alma9-gcc14