mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 12:32:43 +00:00
Five releases in a row (v1.4.27 → v1.4.30.1) the publish workflow returned a 2xx from the Coolify webhook but the running container on apps01 still carried the prior `:latest` digest. Host-side SSH fallback patched it every time at ~5 minutes per release. Root cause: GHCR's CDN edge layer takes 30-90 s to propagate a fresh manifest write to consumer pull endpoints. The `docker buildx imagetools create` + `inspect` steps confirm the manifest at registry-write time, but the webhook fires immediately afterwards. Coolify's pull lands inside the edge-propagation window, gets the prior digest, declares no-op, and returns success. The webhook itself works; the spacing assumption between push and pull was wrong. Fix: add `sleep 90` immediately after the auth + skip-mode guards in the `Trigger Coolify deploy` step. Diagnostic line prints the resolved image version (`steps.meta.outputs.version`) before the sleep so the workflow log surfaces the exact tag the operator can sanity-check. Cost: ~30% on the publish-job duration, but only after the image is fully on GHCR. The release-flow walk-through clock is unaffected; the host-side SSH fallback remains available as a backstop. Full root-cause + hypothesis matrix + escalation plan documented in `.planning/round-coolify-auto-deploy-fix-2026-05-16.md`.