best / deploy /deploy.sh
anky2002's picture
feat: Add CI/CD (GitHub Actions), E2E tests (Playwright), deploy scripts (Fly.io + Vercel), admin dashboard, notifications dropdown, Postman collection
e52da89 verified
Raw
History Blame Contribute Delete
2.21 kB
#!/bin/bash
# Deploy script for JobPortal
# Usage: ./deploy/deploy.sh [backend|frontend|all]
set -e
COMPONENT=${1:-all}
echo "πŸš€ Deploying JobPortal ($COMPONENT)"
deploy_backend() {
echo "πŸ“¦ Deploying backend to Fly.io..."
cd backend
# Set secrets if not already set
if [ -n "$DATABASE_URL" ]; then
flyctl secrets set DATABASE_URL="$DATABASE_URL" --stage
fi
if [ -n "$REDIS_URL" ]; then
flyctl secrets set REDIS_URL="$REDIS_URL" --stage
fi
if [ -n "$SECRET_KEY" ]; then
flyctl secrets set SECRET_KEY="$SECRET_KEY" --stage
fi
# Deploy
flyctl deploy --remote-only
echo "βœ… Backend deployed!"
echo " URL: https://jobportal-api.fly.dev"
echo " Docs: https://jobportal-api.fly.dev/api/v1/docs"
cd ..
}
deploy_frontend() {
echo "πŸ“¦ Deploying frontend to Vercel..."
cd frontend
# Deploy with Vercel CLI
if command -v vercel &> /dev/null; then
vercel --prod
else
echo "⚠️ Vercel CLI not installed. Run: npm i -g vercel"
echo " Then: cd frontend && vercel --prod"
fi
echo "βœ… Frontend deployed!"
cd ..
}
deploy_worker() {
echo "πŸ“¦ Deploying worker to Fly.io..."
cd backend
# Scale worker machine
flyctl machine run . \
--app jobportal-worker \
--region sjc \
--vm-size shared-cpu-1x \
--vm-memory 512 \
--entrypoint "celery -A app.worker.celery_config.celery_app worker --loglevel=warning --concurrency=2"
echo "βœ… Worker deployed!"
cd ..
}
case $COMPONENT in
backend)
deploy_backend
;;
frontend)
deploy_frontend
;;
worker)
deploy_worker
;;
all)
deploy_backend
deploy_frontend
deploy_worker
;;
*)
echo "Usage: ./deploy.sh [backend|frontend|worker|all]"
exit 1
;;
esac
echo ""
echo "πŸŽ‰ Deployment complete!"
echo ""
echo "Useful commands:"
echo " flyctl status -a jobportal-api # Backend status"
echo " flyctl logs -a jobportal-api # Backend logs"
echo " vercel ls # Frontend deployments"