Merge branch 'ci/serialize-docker-builds-runner-disk' into 'main'
ci(docker): serialize docker builds + prune cache See merge request 2-6/2-6-4/terravault/ordinis!6
This commit is contained in:
@@ -171,6 +171,14 @@ build-docs:
|
|||||||
changes: *docs-changes
|
changes: *docs-changes
|
||||||
|
|
||||||
# ─── PUBLISH (Docker images) ───────────────────
|
# ─── 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:
|
.docker_base:
|
||||||
stage: publish
|
stage: publish
|
||||||
image: repo.nstart.cloud/nstart/docker-cli-buildx:1.0.0
|
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
|
- name: repo.nstart.cloud/library/docker:29.1.2-dind
|
||||||
alias: docker
|
alias: docker
|
||||||
command: ["--tls=false"]
|
command: ["--tls=false"]
|
||||||
|
resource_group: docker-builds
|
||||||
variables:
|
variables:
|
||||||
DOCKER_HOST: tcp://docker:2375
|
DOCKER_HOST: tcp://docker:2375
|
||||||
DOCKER_TLS_CERTDIR: ""
|
DOCKER_TLS_CERTDIR: ""
|
||||||
@@ -185,6 +194,12 @@ build-docs:
|
|||||||
|
|
||||||
.publish_script: &publish_script |
|
.publish_script: &publish_script |
|
||||||
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
|
||||||
|
# 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
|
echo "$REGISTRY_PASSWORD" | docker login "$REGISTRY" -u "$REGISTRY_USER" --password-stdin
|
||||||
IMG="$REGISTRY/$IMAGE_REPO/$SVC"
|
IMG="$REGISTRY/$IMAGE_REPO/$SVC"
|
||||||
# --pull + --no-cache временно для recovery после Nexus blob loss
|
# --pull + --no-cache временно для recovery после Nexus blob loss
|
||||||
|
|||||||
Reference in New Issue
Block a user