Spaces:
Running
Running
| # ββ PhilVerify β Firebase + Cloud Run Deployment Script βββββββββββββββββββββββ | |
| # Usage: | |
| # chmod +x deploy.sh | |
| # ./deploy.sh YOUR_GCP_PROJECT_ID | |
| # | |
| # Prerequisites: | |
| # brew install google-cloud-sdk firebase-cli | |
| # gcloud auth login | |
| # gcloud auth configure-docker | |
| # firebase login | |
| set -euo pipefail | |
| PROJECT_ID="${1:-}" | |
| REGION="asia-southeast1" | |
| SERVICE_NAME="philverify-api" | |
| IMAGE="gcr.io/${PROJECT_ID}/${SERVICE_NAME}" | |
| if [[ -z "$PROJECT_ID" ]]; then | |
| echo "Usage: ./deploy.sh YOUR_GCP_PROJECT_ID" | |
| exit 1 | |
| fi | |
| echo "βΆ Project: $PROJECT_ID | Region: $REGION | Service: $SERVICE_NAME" | |
| # ββ 1. Set GCP project ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| gcloud config set project "$PROJECT_ID" | |
| # ββ 2. Build + push Docker image to GCR ββββββββββββββββββββββββββββββββββββββ | |
| echo "" | |
| echo "βΆ Building & pushing Docker image (this takes ~10 min first time)β¦" | |
| gcloud builds submit \ | |
| --tag "$IMAGE" \ | |
| --timeout=30m \ | |
| . | |
| # ββ 3. Deploy to Cloud Run ββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| echo "" | |
| echo "βΆ Deploying to Cloud Runβ¦" | |
| gcloud run deploy "$SERVICE_NAME" \ | |
| --image "$IMAGE" \ | |
| --region "$REGION" \ | |
| --platform managed \ | |
| --allow-unauthenticated \ | |
| --memory 4Gi \ | |
| --cpu 2 \ | |
| --concurrency 10 \ | |
| --timeout 300 \ | |
| --min-instances 1 \ | |
| --max-instances 3 \ | |
| --set-env-vars "APP_ENV=production,DEBUG=false,LOG_LEVEL=INFO" \ | |
| --set-env-vars "ALLOWED_ORIGINS=https://${PROJECT_ID}.web.app,https://${PROJECT_ID}.firebaseapp.com" | |
| # Add secrets like NEWS_API_KEY via: | |
| # --update-secrets NEWS_API_KEY=philverify-news-api-key:latest | |
| # ββ 4. Link Firebase project ββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| echo "" | |
| echo "βΆ Setting Firebase projectβ¦" | |
| firebase use "$PROJECT_ID" | |
| # ββ 5. Build React frontend βββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| echo "" | |
| echo "βΆ Building React frontendβ¦" | |
| cd frontend | |
| npm ci | |
| npm run build | |
| cd .. | |
| # ββ 6. Deploy to Firebase Hosting ββββββββββββββββββββββββββββββββββββββββββββ | |
| echo "" | |
| echo "βΆ Deploying to Firebase Hostingβ¦" | |
| firebase deploy --only hosting,firestore | |
| echo "" | |
| echo "β Deploy complete!" | |
| echo " Frontend: https://${PROJECT_ID}.web.app" | |
| echo " API: https://${PROJECT_ID}.web.app/api/health" | |