diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f29f384e54d185007eb561b705b87887443e8136..88d1bd9ab6d3737e0d0b3dfb98810e8661c62253 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -32,7 +32,7 @@ variables:
   NIGHTLY_TAG: "nightly"
 
   ## Additional options for docker build (e.g. --no-cache)
-  BUILD_OPTIONS: "--no-cache"
+  BUILD_OPTIONS: ""
 
   ## Version to be set by external trigger
   VERSION: ""
@@ -257,7 +257,8 @@ base:
   needs:
     - version
   script:
-    - docker buildx build --push ${BUILD_OPTIONS}
+    - while !
+      docker buildx build --push ${BUILD_OPTIONS}
                    --tag ${CI_REGISTRY}/${CI_PROJECT_PATH}/${BUILD_IMAGE}:${INTERNAL_TAG}
                    ${EXPORT_TAG:+
                      ${CI_PUSH:+--tag ${CI_REGISTRY}/${CI_PROJECT_PATH}/${BUILD_IMAGE}:${EXPORT_TAG}}
@@ -271,6 +272,13 @@ base:
                    --provenance false
                    containers/debian
                    2>&1 | tee build.log
+      ; do
+        if grep "unknown blob" build.log ; then
+          BUILD_OPTIONS="--no-cache ${BUILD_OPTIONS}" ;
+        else
+          exit 1 ;
+        fi
+      done
 
 
 jug_dev:
@@ -316,7 +324,8 @@ jug_dev:
       source eic-spack.sh ;
       export SPACK_VERSION ;
       cat mirrors.yaml.in | envsubst > mirrors.yaml
-    - docker buildx build --push ${BUILD_OPTIONS}
+    - while !
+      docker buildx build --push ${BUILD_OPTIONS}
                    --tag ${CI_REGISTRY}/${CI_PROJECT_PATH}/${BUILD_IMAGE}${ENV}:${INTERNAL_TAG}-${BUILD_TYPE}
                    ${EXPORT_TAG:+
                      ${CI_PUSH:+--tag ${CI_REGISTRY}/${CI_PROJECT_PATH}/${BUILD_IMAGE}${ENV}:${EXPORT_TAG}-${BUILD_TYPE}}
@@ -385,7 +394,13 @@ jug_dev:
                    --provenance false
                    containers/jug
                    2>&1 | tee build.log
-
+      ; do
+        if grep "unknown blob" build.log ; then
+          BUILD_OPTIONS="--no-cache ${BUILD_OPTIONS}" ;
+        else
+          exit 1 ;
+        fi
+      done
 
 jug_xl:default:
   parallel:
@@ -412,7 +427,8 @@ jug_xl:default:
           - dev
   script:
     - apk add git
-    - docker buildx build --push ${BUILD_OPTIONS}
+    - while ! 
+      docker buildx build --push ${BUILD_OPTIONS}
                    --tag ${CI_REGISTRY}/${CI_PROJECT_PATH}/${BUILD_IMAGE}:${INTERNAL_TAG}-default
                    ${EXPORT_TAG:+
                      ${CI_PUSH:+--tag ${CI_REGISTRY}/${CI_PROJECT_PATH}/${BUILD_IMAGE}:${EXPORT_TAG}}
@@ -433,7 +449,13 @@ jug_xl:default:
                    --provenance false
                    containers/jug
                    2>&1 | tee build.log
-
+      ; do
+        if grep "unknown blob" build.log ; then
+          BUILD_OPTIONS="--no-cache ${BUILD_OPTIONS}" ;
+        else
+          exit 1 ;
+        fi
+      done
 
 jug_xl:nightly:
   parallel:
@@ -471,7 +493,8 @@ jug_xl:nightly:
         PUSH_NIGHTLY_WITH_DATE="1"
       fi
     - apk add git
-    - docker buildx build --push ${BUILD_OPTIONS}
+    - while !
+      docker buildx build --push ${BUILD_OPTIONS}
                    --tag ${CI_REGISTRY}/${CI_PROJECT_PATH}/${BUILD_IMAGE}:${INTERNAL_TAG}-nightly
                    ${EXPORT_TAG:+
                      ${CI_PUSH:+--tag ${CI_REGISTRY}/${CI_PROJECT_PATH}/${BUILD_IMAGE}:${EXPORT_TAG}-nightly}
@@ -511,7 +534,13 @@ jug_xl:nightly:
                    --provenance false
                    containers/jug
                    2>&1 | tee build.log
-
+      ; do
+        if grep "unknown blob" build.log ; then
+          BUILD_OPTIONS="--no-cache ${BUILD_OPTIONS}" ;
+        else
+          exit 1 ;
+        fi
+      done
 
 .singularity:
   image: