#!/bin/bash # Script de deploy para Google Cloud Run com Artifact Registry # Uso: ./deploy.sh # Pré-requisitos: # - gcloud CLI autenticado e com projeto principal setado # - Artifact Registry Repository já criado (orquestrador) # - Service Account com roles: Cloud SQL Client, Cloud Run Developer, Artifact Registry Writer set -e # Detectar configuração do gcloud PROJECT_ID=$(gcloud config get-value project) REGION="us-central1" SERVICE_NAME="orquestrador" REPO_NAME="orquestrador" IMAGE_NAME="$REGION-docker.pkg.dev/$PROJECT_ID/$REPO_NAME/$SERVICE_NAME" if [ -z "$PROJECT_ID" ]; then echo "❌ Projeto não configurado. Execute: gcloud config set project " exit 1 fi echo "🚀 Iniciando deploy para Google Cloud Run" echo "📦 Projeto: $PROJECT_ID" echo "🌍 Região: $REGION" echo "🏗️ Repositório: $REPO_NAME" # Passo 1: Validar autenticação echo "" echo "1️⃣ Verificando autenticação GCP..." ACTIVE_ACCOUNT=$(gcloud auth list --filter=status:ACTIVE --format="value(account)") if [ -z "$ACTIVE_ACCOUNT" ]; then echo "❌ Nenhuma conta autenticada. Execute: gcloud auth login" exit 1 fi echo "✅ Autenticado como: $ACTIVE_ACCOUNT" # Passo 2: Habilitar APIs echo "" echo "2️⃣ Habilitando APIs necessárias..." gcloud services enable \ run.googleapis.com \ cloudbuild.googleapis.com \ artifactregistry.googleapis.com \ aiplatform.googleapis.com \ sqladmin.googleapis.com \ --quiet echo "✅ APIs habilitadas" # Passo 3: Build com Cloud Build echo "" echo "3️⃣ Fazendo build da imagem Docker com Cloud Build..." gcloud builds submit \ --config=cloudbuild.yaml \ --substitutions=_REGION="$REGION",_REPO_NAME="$REPO_NAME",_IMAGE_NAME="$SERVICE_NAME" echo "✅ Build concluído" # Passo 4: Configurar variáveis de ambiente echo "" echo "4️⃣ Atualizando variáveis de ambiente no Cloud Run..." # Ler variáveis do .env (excluindo comentários e linhas vazias) ENV_VARS="" while IFS='=' read -r key value; do # Pular comentários e linhas vazias [[ "$key" =~ ^#.*$ ]] && continue [[ -z "$key" ]] && continue # Adicionar à variável de deploy (sem espaços) ENV_VARS="$ENV_VARS${key}=${value}," done < .env # Remover última vírgula ENV_VARS="${ENV_VARS%,}" if [ -z "$ENV_VARS" ]; then echo "⚠️ Nenhuma variável de ambiente encontrada em .env" else gcloud run services update $SERVICE_NAME \ --region=$REGION \ --update-env-vars=$ENV_VARS \ --quiet 2>/dev/null || echo "⚠️ Serviço pode não existir ainda. Será criado automaticamente." fi echo "✅ Variáveis de ambiente atualizadas" # Passo 5: Sucesso echo "" echo "================================" echo "✅ DEPLOY CONCLUÍDO COM SUCESSO!" echo "================================" echo "" echo "📋 Próximos passos:" echo "" echo "1. Verifique o status:" echo " gcloud run services describe $SERVICE_NAME --region=$REGION" echo "" echo "2. Obtenha a URL da aplicação:" echo " gcloud run services describe $SERVICE_NAME --region=$REGION --format='value(status.url)'" echo "" echo "3. Teste a API:" echo " curl https:///docs" echo "" echo "4. Visualize logs:" echo " gcloud run services logs read $SERVICE_NAME --region=$REGION --limit=50"