File size: 1,583 Bytes
322a6d4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/usr/bin/env bash
# Deploy the NaturalCAD control-plane API to Cloud Run from apps/backend-api.
#
# Usage:
#   GCP_PROJECT_ID=your-project \
#   CLOUD_RUN_REGION=us-west1 \
#   CLOUD_RUN_ENV_FILE=apps/backend-api/cloudrun.env.yaml \
#   ./scripts/deploy-cloud-run-backend.sh

set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
BACKEND_DIR="$ROOT/apps/backend-api"

: "${GCP_PROJECT_ID:?Set GCP_PROJECT_ID to the Google Cloud project id}"

CLOUD_RUN_SERVICE="${CLOUD_RUN_SERVICE:-naturalcad-api}"
CLOUD_RUN_REGION="${CLOUD_RUN_REGION:-us-west1}"
CLOUD_RUN_ENV_FILE="${CLOUD_RUN_ENV_FILE:-}"

if ! command -v gcloud >/dev/null 2>&1; then
  echo "gcloud CLI is required. Install and authenticate with: gcloud auth login" >&2
  exit 1
fi

ENV_ARGS=()
if [[ -n "$CLOUD_RUN_ENV_FILE" ]]; then
  if [[ ! -f "$CLOUD_RUN_ENV_FILE" ]]; then
    echo "CLOUD_RUN_ENV_FILE does not exist: $CLOUD_RUN_ENV_FILE" >&2
    exit 1
  fi
  ENV_ARGS+=(--env-vars-file "$CLOUD_RUN_ENV_FILE")
fi

gcloud config set project "$GCP_PROJECT_ID" >/dev/null
gcloud services enable run.googleapis.com cloudbuild.googleapis.com --quiet

gcloud run deploy "$CLOUD_RUN_SERVICE" \
  --source "$BACKEND_DIR" \
  --region "$CLOUD_RUN_REGION" \
  --allow-unauthenticated \
  --port 8080 \
  --memory 512Mi \
  --cpu 1 \
  --timeout 300 \
  --no-cpu-throttling \
  --min-instances 1 \
  --max-instances 10 \
  "${ENV_ARGS[@]}" \
  --quiet

echo
echo "Cloud Run backend deployed:"
gcloud run services describe "$CLOUD_RUN_SERVICE" \
  --region "$CLOUD_RUN_REGION" \
  --format='value(status.url)'