fix: nomes únicos para containers CI no docker.sock compartilhado
All checks were successful
CI / static (push) Successful in 2m14s
CI / unit (push) Successful in 3m50s
CI / feature (push) Successful in 2m48s
CI / container (push) Successful in 1m3s
CI / browser (push) Successful in 3m54s

Cancel/retry deixava amare-health órfão → Conflict no job container.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-12 15:21:38 -03:00
parent dd82ca2dca
commit 91c0d412fa

View File

@@ -18,8 +18,8 @@ env:
BCRYPT_ROUNDS: 4
CACHE_STORE: database
DB_CONNECTION: pgsql
# Service hostname on the job network (act_runner). Do not publish
# host port 5432 — shared VPS runners collide (Bind … already allocated).
# Service hostname on the per-job network (act_runner with empty
# container.network). Do not publish host :5432/:8000 — parallel jobs collide.
DB_HOST: postgres
DB_PORT: 5432
DB_DATABASE: amare_test
@@ -169,11 +169,15 @@ jobs:
# Join the per-job network (act_runner creates one when
# container.network is empty). No host -p: parallel jobs would
# collide on :8000/:5432; DNS names work on the job network.
# Container --name is global on the shared docker.sock host —
# include run id or leftovers from cancelled jobs Conflict.
JOB_CID="$(hostname)"
JOB_NET="$(docker inspect -f '{{range $k, $_ := .NetworkSettings.Networks}}{{println $k}}{{end}}' "$JOB_CID" | head -n1)"
test -n "$JOB_NET"
WEB_NAME="amare-web-${GITHUB_RUN_ID:-$$}"
docker rm -f "$WEB_NAME" 2>/dev/null || true
docker run -d --name amare-web \
docker run -d --name "$WEB_NAME" \
--network "$JOB_NET" \
--network-alias amare-web \
-e APP_ENV=testing \
@@ -194,6 +198,9 @@ jobs:
-v "${GITHUB_WORKSPACE}/storage/app/public:/app/storage/app/public" \
amare-app:ci
cleanup() { docker rm -f "$WEB_NAME" >/dev/null 2>&1 || true; }
trap cleanup EXIT
for i in $(seq 1 30); do
if curl -fsS http://amare-web:8000/up; then
break
@@ -208,7 +215,8 @@ jobs:
if: failure()
run: |
mkdir -p artifacts/browser
docker logs amare-web > artifacts/browser/container.log 2>&1 || true
WEB_NAME="amare-web-${GITHUB_RUN_ID:-$$}"
docker logs "$WEB_NAME" > artifacts/browser/container.log 2>&1 || true
cp -R storage/logs artifacts/browser/app-logs 2>/dev/null || true
- name: Upload browser failure artifacts
@@ -231,12 +239,15 @@ jobs:
- name: Verify container healthcheck and storage link
run: |
# Same per-job network as the step container — no host :8000
# publish (collides when capacity > 1).
# publish (collides when capacity > 1). Unique --name: docker.sock
# is shared across jobs; leftovers from cancelled runs Conflict.
JOB_CID="$(hostname)"
JOB_NET="$(docker inspect -f '{{range $k, $_ := .NetworkSettings.Networks}}{{println $k}}{{end}}' "$JOB_CID" | head -n1)"
test -n "$JOB_NET"
HEALTH_NAME="amare-health-${GITHUB_RUN_ID:-$$}"
docker rm -f "$HEALTH_NAME" 2>/dev/null || true
docker run -d --name amare-health \
docker run -d --name "$HEALTH_NAME" \
--network "$JOB_NET" \
--network-alias amare-health \
-e APP_ENV=production \
@@ -251,13 +262,16 @@ jobs:
-e DB_PASSWORD=secret \
amare-app:ci
cleanup() { docker rm -f "$HEALTH_NAME" >/dev/null 2>&1 || true; }
trap cleanup EXIT
for i in $(seq 1 30); do
if curl -fsS http://amare-health:8000/up; then
docker exec amare-health test -L /app/public/storage
docker exec "$HEALTH_NAME" test -L /app/public/storage
exit 0
fi
sleep 2
done
docker logs amare-health
docker logs "$HEALTH_NAME"
exit 1