Merge branch 'fix/ci-retag-fixed-sha' into 'main'

fix(ci): retag — фиксированный 8-char SHA вместо git %h (анти-race)

See merge request 2-6/2-6-4/terravault/ordinis!262
This commit is contained in:
Александр Зимин
2026-05-25 13:05:32 +00:00
+9 -1
View File
@@ -481,7 +481,15 @@ docker-docs:
- for i in $(seq 1 30); do docker info >/dev/null 2>&1 && break; sleep 1; done - 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 - echo "$REGISTRY_PASSWORD" | docker login "$REGISTRY" -u "$REGISTRY_USER" --password-stdin
- IMG="$REGISTRY/$IMAGE_REPO/$SVC" - IMG="$REGISTRY/$IMAGE_REPO/$SVC"
- PARENT_SHA=$(git log -1 --format=%h HEAD~1) # `git log %h` динамически растягивает abbrev (8 → 9 chars) когда git
# детектит SHA-коллизию в локальном clone'е. Docker push в main pipeline
# использует CI_COMMIT_SHORT_SHA (фиксированно 8 chars per GitLab spec),
# поэтому при mismatch'е retag не находит main-<9chars> образ →
# "failed to resolve reference ... not found" → job failed, и за ним
# commit-prod-image-bump skipped. v2.41.3 (MR !261) попал на эту race.
# Используем rev-parse + cut чтобы гарантировать 8 chars независимо
# от состояния clone'а.
- PARENT_SHA=$(git rev-parse HEAD~1 | cut -c1-8)
- SRC="$IMG:main-$PARENT_SHA" - SRC="$IMG:main-$PARENT_SHA"
- echo "Re-tag $SRC → $IMG:$IMAGE_TAG (+ :latest, :$CI_COMMIT_REF_SLUG)" - echo "Re-tag $SRC → $IMG:$IMAGE_TAG (+ :latest, :$CI_COMMIT_REF_SLUG)"
- docker pull "$SRC" - docker pull "$SRC"