diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3b99f6f6c26f21be523a1ab6fe8fea3e6fdb82af..cfd49da599906f1f5f7b6a959a2c21bf9906e491 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -32,8 +32,9 @@ before_script:
   tags:
     - dind
   script:
-    - docker pull $CI_REGISTRY_IMAGE/$IMAGE_NAME:$DEBIAN_RELEASE || true
-    - docker build --cache-from $CI_REGISTRY_IMAGE/$IMAGE_NAME:$DEBIAN_RELEASE --build-arg DEBIAN_RELEASE=$DEBIAN_RELEASE --tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:$DEBIAN_RELEASE-$CI_COMMIT_SHA --tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:$DEBIAN_RELEASE $IMAGE_NAME
+    - export CACHE_FLAG=$([ -n $NOCACHE ] && echo "--no-cache=true" || echo "--cache-from $CI_REGISTRY_IMAGE/$IMAGE_NAME:$DEBIAN_RELEASE")
+    - test -n $NOCACHE || docker pull $CI_REGISTRY_IMAGE/$IMAGE_NAME:$DEBIAN_RELEASE || true
+    - docker build $CACHE_FLAG --build-arg DEBIAN_RELEASE=$DEBIAN_RELEASE --tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:$DEBIAN_RELEASE-$CI_COMMIT_SHA --tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:$DEBIAN_RELEASE $IMAGE_NAME
     - docker push $CI_REGISTRY_IMAGE/$IMAGE_NAME:$DEBIAN_RELEASE-$CI_COMMIT_SHA
     - docker push $CI_REGISTRY_IMAGE/$IMAGE_NAME:$DEBIAN_RELEASE