You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
orquestrador/deploy.sh

106 lines
3.2 KiB
Bash

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

#!/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 <seu-projeto>"
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://<url-do-seu-servico>/docs"
echo ""
echo "4. Visualize logs:"
echo " gcloud run services logs read $SERVICE_NAME --region=$REGION --limit=50"