All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m13s
Update shared submodule (adds alembic.ini for migrations). Use subshell for alembic so CWD is never affected by cd shared, preventing cascading config path errors if migration fails. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
33 lines
1020 B
Bash
33 lines
1020 B
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Optional: wait for Postgres to be reachable
|
|
if [[ -n "${DATABASE_HOST:-}" && -n "${DATABASE_PORT:-}" ]]; then
|
|
echo "Waiting for Postgres at ${DATABASE_HOST}:${DATABASE_PORT}..."
|
|
for i in {1..60}; do
|
|
(echo > /dev/tcp/${DATABASE_HOST}/${DATABASE_PORT}) >/dev/null 2>&1 && break || true
|
|
sleep 1
|
|
done
|
|
fi
|
|
|
|
# Run DB migrations only if RUN_MIGRATIONS=true (blog service only)
|
|
if [[ "${RUN_MIGRATIONS:-}" == "true" ]]; then
|
|
echo "Running Alembic migrations..."
|
|
(cd shared && alembic upgrade head)
|
|
fi
|
|
|
|
# Clear Redis page cache on deploy
|
|
if [[ -n "${REDIS_URL:-}" && "${REDIS_URL}" != "no" ]]; then
|
|
echo "Flushing Redis cache..."
|
|
python3 -c "
|
|
import redis, os
|
|
r = redis.from_url(os.environ['REDIS_URL'])
|
|
r.flushall()
|
|
print('Redis cache cleared.')
|
|
" || echo "Redis flush failed (non-fatal), continuing..."
|
|
fi
|
|
|
|
# Start the app
|
|
echo "Starting Hypercorn (${APP_MODULE:-app:app})..."
|
|
PYTHONUNBUFFERED=1 exec hypercorn "${APP_MODULE:-app:app}" --bind 0.0.0.0:${PORT:-8000}
|