ci(docker): serialize docker builds + prune cache
This commit is contained in:
@@ -171,6 +171,14 @@ build-docs:
|
||||
changes: *docs-changes
|
||||
|
||||
# ─── PUBLISH (Docker images) ───────────────────
|
||||
# resource_group: serializes docker-* jobs across all concurrent pipelines на
|
||||
# одном runner'е. 5 parallel docker builds (app/read-api/projection-writer/
|
||||
# admin-ui/migrations) каждый поднимает свой DinD container с buildx — суммарно
|
||||
# выжирали runner disk (~25Gi+) → "no space left on device" в /var/lib/docker
|
||||
# на тяжёлых stages (см. pipeline 6066). Serialize'я добавляет ~10 min к
|
||||
# pipeline'у, но вместо retry-roulette мы получаем стабильно зелёный CI.
|
||||
# При scaling до multi-runner setup можно увеличить parallelism per-runner и
|
||||
# переименовать group в per-runner identifier.
|
||||
.docker_base:
|
||||
stage: publish
|
||||
image: repo.nstart.cloud/nstart/docker-cli-buildx:1.0.0
|
||||
@@ -178,6 +186,7 @@ build-docs:
|
||||
- name: repo.nstart.cloud/library/docker:29.1.2-dind
|
||||
alias: docker
|
||||
command: ["--tls=false"]
|
||||
resource_group: docker-builds
|
||||
variables:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
@@ -185,6 +194,12 @@ build-docs:
|
||||
|
||||
.publish_script: &publish_script |
|
||||
for i in $(seq 1 30); do docker info >/dev/null 2>&1 && break; sleep 1; done
|
||||
# Cleanup от предыдущего job'а в этой serialized group: удаляем dangling
|
||||
# images + build cache. DinD container shared across serialized jobs если
|
||||
# runner reuses container — без prune'а cache накапливается до disk-full.
|
||||
# `|| true`: на cold start (первый job в группе) prune может скипнуть с
|
||||
# warning, не должен ронять job.
|
||||
docker system prune -af --volumes >/dev/null 2>&1 || true
|
||||
echo "$REGISTRY_PASSWORD" | docker login "$REGISTRY" -u "$REGISTRY_USER" --password-stdin
|
||||
IMG="$REGISTRY/$IMAGE_REPO/$SVC"
|
||||
# --pull + --no-cache временно для recovery после Nexus blob loss
|
||||
|
||||
Reference in New Issue
Block a user