From b80136894c87d3ed814c55d89b8f28f0477152b0 Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Fri, 6 Mar 2026 22:42:19 +0100 Subject: [PATCH] fix(ci): robust database ready check for branch deployments --- .gitea/workflows/deploy.yml | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 2db19740..570aa51c 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -426,17 +426,27 @@ jobs: echo "🌱 Seeding Branch Environment from Production Database..." ssh root@alpha.mintel.me "cd $SITE_DIR && docker compose -p '${{ needs.prepare.outputs.project_name }}' --env-file $ENV_FILE pull && docker compose -p '${{ needs.prepare.outputs.project_name }}' --env-file $ENV_FILE up -d klz-db" - # Wait for DB to be healthy - echo "Waiting for branch database to be ready..." - sleep 10 - ssh root@alpha.mintel.me "docker exec $DB_CONTAINER pg_isready -U payload" || sleep 10 + # Wait for DB to be healthy with a 60s timeout + echo "⏳ Waiting for branch database to be ready..." + ssh root@alpha.mintel.me " + for i in {1..30}; do + if docker exec $DB_CONTAINER pg_isready -U payload >/dev/null 2>&1; then + exit 0 + fi + sleep 2 + done + echo '❌ Database failed to become ready after 60 seconds' + exit 1 + " || exit 1 # Copy Production Payload DB to Branch Payload DB & ensure media is copied echo "📦 Syncing Production DB into Branch DB..." ssh root@alpha.mintel.me " + set -e -o pipefail docker exec klz-cablescom-klz-db-1 pg_dump -U payload -d payload --clean --if-exists | docker exec -i $DB_CONTAINER psql -U payload -d payload --quiet rsync -a --delete /var/lib/docker/volumes/klz-cablescom_klz_media_data/_data/ /var/lib/docker/volumes/${{ needs.prepare.outputs.project_name }}_klz_media_data/_data/ - " + " || exit 1 + echo "✅ Branch database and media synced successfully." fi