diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 747cae077a45c08581353de74154d2fc69b14e20..2a6fe9cd095bc3cc9188bca738654c74b2222831 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,3 +1,5 @@
+variables:
+  KANIKO_CACHE_TTL: "2190h0m0s" # three months
 stages:
   - Docker build
 
@@ -16,8 +18,13 @@ docker:
         fi
     - mkdir -p /kaniko/.docker
     - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
+# cache warmup for further build/push commands
+    - |
+        /kaniko/warmer \
+        --image=${CI_REGISTRY_IMAGE}:latest --cache-dir=/cache
     - |
         /kaniko/executor \
+          --cache --cache-dir=/cache --cache-ttl="${KANIKO_CACHE_TTL}" --cache-copy-layers --cache-repo="${CI_REGISTRY_IMAGE}" \
           --context "${CI_PROJECT_DIR}" \
           --dockerfile "${CI_PROJECT_DIR}/Dockerfile" \
           --destination "${CI_REGISTRY_IMAGE}:${CONTAINER_TAG}"