Spaces:
Running
Running
File size: 2,919 Bytes
b1c84b5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | #!/usr/bin/env bash
# ββ 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"
|