ci: dump prod DB before each migration with size check
This commit is contained in:
@@ -142,6 +142,17 @@ jobs:
|
|||||||
echo "=== Create vector extension ==="
|
echo "=== Create vector extension ==="
|
||||||
docker compose exec -T postgres psql -U "${POSTGRES_USER:-memento}" -d "${POSTGRES_DB:-memento}" -c "CREATE EXTENSION IF NOT EXISTS vector;"
|
docker compose exec -T postgres psql -U "${POSTGRES_USER:-memento}" -d "${POSTGRES_DB:-memento}" -c "CREATE EXTENSION IF NOT EXISTS vector;"
|
||||||
|
|
||||||
|
echo "=== Dump database before migration ==="
|
||||||
|
DUMP_FILE="/opt/memento/backups/pre-migrate-$(date +%Y%m%d-%H%M%S).sql.gz"
|
||||||
|
mkdir -p /opt/memento/backups
|
||||||
|
docker compose exec -T postgres pg_dump -U "${POSTGRES_USER:-memento}" -d "${POSTGRES_DB:-memento}" --clean --if-exists | gzip > "$DUMP_FILE"
|
||||||
|
DUMP_SIZE=$(stat -c%s "$DUMP_FILE")
|
||||||
|
if [ "$DUMP_SIZE" -lt 1048576 ]; then
|
||||||
|
echo "ERROR: Dump is only $DUMP_SIZE bytes (< 1MB). Aborting deploy!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Backup saved: $DUMP_FILE ($(( DUMP_SIZE / 1024 ))KB)"
|
||||||
|
|
||||||
echo "=== Resolve failed prisma migrations ==="
|
echo "=== Resolve failed prisma migrations ==="
|
||||||
docker compose exec -T postgres psql -U "${POSTGRES_USER:-memento}" -d "${POSTGRES_DB:-memento}" -c "UPDATE \"_prisma_migrations\" SET \"finished_at\"=NOW(), \"rolled_back_at\"=NULL WHERE \"finished_at\" IS NULL AND \"rolled_back_at\" IS NULL;" || true
|
docker compose exec -T postgres psql -U "${POSTGRES_USER:-memento}" -d "${POSTGRES_DB:-memento}" -c "UPDATE \"_prisma_migrations\" SET \"finished_at\"=NOW(), \"rolled_back_at\"=NULL WHERE \"finished_at\" IS NULL AND \"rolled_back_at\" IS NULL;" || true
|
||||||
|
|
||||||
@@ -203,4 +214,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Cleanup
|
- name: Cleanup
|
||||||
if: always()
|
if: always()
|
||||||
run: ssh root@192.168.1.190 "docker image prune -f" || true
|
run: |
|
||||||
|
ssh root@192.168.1.190 << 'ENDSSH'
|
||||||
|
docker image prune -f
|
||||||
|
cd /opt/memento/backups 2>/dev/null && ls -t pre-migrate-*.sql.gz | tail -n +11 | xargs -r rm -f && echo "Old backups cleaned" || true
|
||||||
|
ENDSSH
|
||||||
|
|||||||
Reference in New Issue
Block a user