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"