#!/usr/bin/env bash # Deploy OliVAS Cloud Run services to Google Cloud Run # Project: optical-414516 | Region: europe-west2 # # Usage: # ./cloud_run/deploy.sh [saliency|processing|all] # # Requirements: # - gcloud CLI authenticated: gcloud auth login # - Project set: gcloud config set project optical-414516 # - Cloud Run API enabled # - CLOUD_RUN_SECRET env var set (shared auth secret) set -euo pipefail PROJECT="optical-414516" REGION="europe-west2" SECRET="${CLOUD_RUN_SECRET:-}" if [ -z "$SECRET" ]; then echo "WARNING: CLOUD_RUN_SECRET is not set. Services will be unauthenticated." fi SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" gcloud config set project "$PROJECT" deploy_saliency() { echo "=== Deploying olivas-saliency ===" gcloud run deploy olivas-saliency \ --source "$SCRIPT_DIR/saliency" \ --region "$REGION" \ --platform managed \ --allow-unauthenticated \ --cpu 4 \ --memory 16Gi \ --timeout 300 \ --concurrency 1 \ --min-instances 0 \ --max-instances 3 \ --set-env-vars "CLOUD_RUN_SECRET=${SECRET},DEVICE=cpu" \ --no-cpu-throttling SALIENCY_URL=$(gcloud run services describe olivas-saliency \ --region "$REGION" --format "value(status.url)") echo "olivas-saliency deployed: $SALIENCY_URL" } deploy_processing() { echo "=== Deploying olivas-processing ===" gcloud run deploy olivas-processing \ --source "$SCRIPT_DIR/processing" \ --region "$REGION" \ --platform managed \ --allow-unauthenticated \ --cpu 2 \ --memory 4Gi \ --timeout 120 \ --concurrency 2 \ --min-instances 0 \ --max-instances 5 \ --set-env-vars "CLOUD_RUN_SECRET=${SECRET}" PROCESSING_URL=$(gcloud run services describe olivas-processing \ --region "$REGION" --format "value(status.url)") echo "olivas-processing deployed: $PROCESSING_URL" } TARGET="${1:-all}" case "$TARGET" in saliency) deploy_saliency ;; processing) deploy_processing ;; all) deploy_saliency deploy_processing echo "" echo "=== Deployment complete ===" echo "Set these env vars on your VPS (in .env or docker-compose.yml):" SALIENCY_URL=$(gcloud run services describe olivas-saliency \ --region "$REGION" --format "value(status.url)" 2>/dev/null || echo "") PROCESSING_URL=$(gcloud run services describe olivas-processing \ --region "$REGION" --format "value(status.url)" 2>/dev/null || echo "") echo " CLOUD_RUN_SALIENCY_URL=$SALIENCY_URL" echo " CLOUD_RUN_PROCESSING_URL=$PROCESSING_URL" echo " CLOUD_RUN_SECRET=$SECRET" ;; *) echo "Usage: $0 [saliency|processing|all]" exit 1 ;; esac