chore(ci): Migrar build para Artifact Registry e melhorar deploy

- Build e push para Artifact Registry
- Substitutions para deploy via Cloud Build
- Atualiza fluxo de deploy automático para Cloud Run
main
parent 7da23293a4
commit b19419b954

@ -0,0 +1,64 @@
# Cloud Build Configuration para Artifact Registry + Cloud Run
# Substitutions: _REGION, _REPO_NAME, _IMAGE_NAME (passados pelo deploy.sh)
steps:
# Step 1: Build Docker image para Artifact Registry
- name: "gcr.io/cloud-builders/docker"
args:
- "build"
- "-t"
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:$SHORT_SHA"
- "-t"
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:latest"
- "."
waitFor: ["-"]
# Step 2: Push para Artifact Registry
- name: "gcr.io/cloud-builders/docker"
args:
- "push"
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:$SHORT_SHA"
waitFor: ["0"]
# Step 3: Deploy para Cloud Run
- name: "gcr.io/cloud-builders/run"
args:
- "deploy"
- "${_IMAGE_NAME}"
- "--image=${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:$SHORT_SHA"
- "--region=${_REGION}"
- "--platform=managed"
- "--memory=512Mi"
- "--cpu=1"
- "--timeout=3600"
- "--max-instances=10"
- "--allow-unauthenticated"
waitFor: ["1"]
# Step 4: Mostrar URL do serviço
- name: "gcr.io/cloud-builders/run"
args:
- "services"
- "describe"
- "${_IMAGE_NAME}"
- "--region=${_REGION}"
- "--format=value(status.url)"
waitFor: ["2"]
# Configuração de imagens para armazenar no Artifact Registry
images:
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:$SHORT_SHA"
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:latest"
# Configurações de build
options:
machineType: "N1_HIGHCPU_8"
logging: CLOUD_LOGGING_ONLY
timeout: "1800s"
# Substitutions padrão (podem ser sobrescritos pelo deploy.sh)
substitutions:
_REGION: "us-central1"
_REPO_NAME: "orquestrador"
_IMAGE_NAME: "orquestrador"

@ -0,0 +1,105 @@
#!/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"
Loading…
Cancel
Save