From 44395e27e446f0dc5d330916e6de2e7e98c656e4 Mon Sep 17 00:00:00 2001 From: "Zimin A.N." Date: Sun, 10 May 2026 14:44:16 +0300 Subject: [PATCH] ci(docker): force --pull on base images to recover from Nexus blob loss MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pipeline 6017 (07c5ca0, main) failed on docker-app/projection-writer/read-api all referencing missing blob sha256:74e368405305a59e71a1fec5de6a75cc307bd663ebb9b47af045c3a5bdf30cec после Nexus disk-full cleanup. Blob — это shared layer от base image (eclipse-temurin:21-jre / maven:3.9.9-eclipse-temurin-21), который Nexus docker-proxy кэш потерял. BuildKit на runner'е держал stale reference в своём inline cache, не push'ал blob, manifest fail. `docker build --pull` форсирует Nexus proxy лениво re-fetch base image с Docker Hub на каждом build'е → blob возвращается в storage. После одного успешного pipeline'а можно убрать флаг (cache восстановится), но flag безвреден в healthy state — стоит ~5-10s на проверку pull. Не меняет behaviour приложения. CI/runtime fix only. --- .gitlab-ci.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1bd504f..2cbc768 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -187,7 +187,12 @@ build-docs: for i in $(seq 1 30); do docker info >/dev/null 2>&1 && break; sleep 1; done echo "$REGISTRY_PASSWORD" | docker login "$REGISTRY" -u "$REGISTRY_USER" --password-stdin IMG="$REGISTRY/$IMAGE_REPO/$SVC" - docker build -f "$DOCKERFILE" \ + # --pull форсирует re-fetch базового image (FROM ...) на каждом build'е → + # если Nexus docker-proxy кэш потерял слой (post disk-full incident), proxy + # лениво re-fetch'ит blob с Docker Hub. Без флага BuildKit cache на runner'е + # держит stale reference на уже-удалённый blob → manifest push fail + # "blob unknown to registry". Стоимость флага — +5-10s на pull проверку. + docker build --pull -f "$DOCKERFILE" \ -t "$IMG:$IMAGE_TAG" -t "$IMG:latest" -t "$IMG:$CI_COMMIT_REF_SLUG" \ --build-arg BUILDKIT_INLINE_CACHE=1 \ "$BUILD_CONTEXT"