All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 2m17s
85 lines
2.7 KiB
Bash
Executable File
85 lines
2.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Create necessary directories
|
|
mkdir -p /app/data
|
|
mkdir -p /app/public/uploads
|
|
mkdir -p /app/public/uploads/backgrounds
|
|
|
|
# Function to deploy migrations with automatic failure resolution
|
|
deploy_migrations() {
|
|
echo "Deploying migrations..."
|
|
|
|
# Try to deploy migrations and capture both output and exit code
|
|
# Use a temporary file to capture exit code since tee masks it
|
|
pnpm dlx prisma migrate deploy > /tmp/migrate.log 2>&1
|
|
MIGRATE_EXIT=$?
|
|
cat /tmp/migrate.log # Display output
|
|
|
|
if [ $MIGRATE_EXIT -eq 0 ]; then
|
|
echo "Migrations deployed successfully"
|
|
return 0
|
|
fi
|
|
|
|
# Check if error is about failed migrations (P3009)
|
|
if ! grep -q "P3009" /tmp/migrate.log && ! grep -q "failed migrations" /tmp/migrate.log; then
|
|
echo "Migration error is not about failed migrations"
|
|
return 1
|
|
fi
|
|
|
|
echo "Found failed migrations, attempting to resolve..."
|
|
|
|
# Extract migration name from error - look for text between backticks
|
|
# Pattern: The `20251210120000_add_event_feedback` migration
|
|
MIGRATION_NAME=$(grep -oE "\`[0-9_]+[a-zA-Z_]+\`" /tmp/migrate.log | tr -d '\`' | head -1)
|
|
|
|
# If still not found, try without backticks (fallback)
|
|
if [ -z "$MIGRATION_NAME" ]; then
|
|
MIGRATION_NAME=$(grep "failed" /tmp/migrate.log | grep -oE "[0-9]{14}_[a-zA-Z_]+" | head -1)
|
|
fi
|
|
|
|
if [ -z "$MIGRATION_NAME" ]; then
|
|
echo "Could not extract migration name from error. Log content:"
|
|
cat /tmp/migrate.log
|
|
return 1
|
|
fi
|
|
|
|
echo "Resolving failed migration: $MIGRATION_NAME"
|
|
|
|
# Try to resolve as applied (migration might have partially succeeded)
|
|
RESOLVE_OUTPUT=$(pnpm dlx prisma migrate resolve --applied "$MIGRATION_NAME" 2>&1)
|
|
RESOLVE_EXIT=$?
|
|
|
|
echo "$RESOLVE_OUTPUT"
|
|
|
|
if [ $RESOLVE_EXIT -eq 0 ]; then
|
|
echo "Migration resolved successfully, retrying deploy..."
|
|
# Retry migration deploy
|
|
if pnpm dlx prisma migrate deploy 2>&1; then
|
|
echo "Migrations deployed successfully after resolution"
|
|
return 0
|
|
else
|
|
echo "Migration deploy still failed after resolution, but continuing..."
|
|
return 0
|
|
fi
|
|
else
|
|
# Check if migration is already marked as applied
|
|
if echo "$RESOLVE_OUTPUT" | grep -q "already recorded as applied"; then
|
|
echo "Migration is already marked as applied, retrying deploy..."
|
|
pnpm dlx prisma migrate deploy 2>&1 || true
|
|
return 0
|
|
else
|
|
echo "Failed to resolve migration: $RESOLVE_OUTPUT"
|
|
echo "Continuing anyway - app might still work if migration was partially applied"
|
|
return 0
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# Deploy migrations (don't fail if it errors - app might still work)
|
|
deploy_migrations || {
|
|
echo "Migration deployment had issues, but continuing to start app..."
|
|
}
|
|
|
|
# Start the application
|
|
exec pnpm start
|