From f0f840ad5a62eff33d30977d5f8deff9c07c5e70 Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Wed, 25 Feb 2026 00:52:52 +0100 Subject: [PATCH] fix: sanitize payload_migrations dev entries in deploy pipeline to prevent interactive prompt hang --- .gitea/workflows/deploy.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 2a466fac..84e4ac43 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -358,6 +358,35 @@ jobs: ssh root@alpha.mintel.me "cd $SITE_DIR && docker compose -p '${{ needs.prepare.outputs.project_name }}' --env-file '$ENV_FILE' pull" ssh root@alpha.mintel.me "cd $SITE_DIR && docker compose -p '${{ needs.prepare.outputs.project_name }}' --env-file '$ENV_FILE' up -d --remove-orphans" + # Sanitize Payload Migrations: Replace 'dev' push entries with proper migration names. + # Without this, Payload prompts interactively for confirmation and blocks forever in Docker. + DB_CONTAINER="${{ needs.prepare.outputs.project_name }}-klz-db-1" + echo "⏳ Waiting for database container to be ready..." + for i in $(seq 1 15); do + if ssh root@alpha.mintel.me "docker exec $DB_CONTAINER pg_isready -U payload -q 2>/dev/null"; then + echo "✅ Database is ready." + break + fi + echo " Attempt $i/15..." + sleep 2 + done + + echo "🔧 Sanitizing payload_migrations table..." + ssh root@alpha.mintel.me "docker exec $DB_CONTAINER psql -U payload -d payload -c \" + DELETE FROM payload_migrations WHERE batch = -1; + INSERT INTO payload_migrations (name, batch) + SELECT name, batch FROM (VALUES + ('20260223_195005_products_collection', 1), + ('20260223_195151_remove_sku_unique', 2), + ('20260225_003500_add_pages_collection', 3) + ) AS v(name, batch) + WHERE NOT EXISTS (SELECT 1 FROM payload_migrations pm WHERE pm.name = v.name); + \"" + + # Restart app to pick up clean migration state + APP_CONTAINER="${{ needs.prepare.outputs.project_name }}-klz-app-1" + ssh root@alpha.mintel.me "docker restart $APP_CONTAINER" + ssh root@alpha.mintel.me "docker system prune -f --filter 'until=24h'" - name: 🧹 Post-Deploy Cleanup (Runner)