Skip to Content
📚 Bienvenido a la documentación técnica de Rial AI 👋
🔄 CI/CD — Integración y Despliegue Continuo

🔄 CI/CD — Integración y Despliegue Continuo

Usamos GitHub Actions para automatizar el proceso de lint, tests, build y deploy en todos los servicios del monorepo.

Flujo general

Pipeline de PR — Lint y Tests

Cada Pull Request hacia develop o main dispara el workflow de validación:

Backend (rial-backend)

Archivo: .github/workflows/lint_and_test.yml Trigger: push y pull_request hacia main o develop

jobs: lint_and_build: steps: - Checkout - Setup Node.js 22 - Enable Yarn Classic (1.22.22) - Install dependencies (yarn --frozen-lockfile) - Generate Prisma client - TypeScript type check (tsc --noEmit) - Compile TypeScript (yarn build) - Run linter (yarn lint)

Archivo: .github/workflows/unit-and-integration-tests.yml Trigger: pull_request hacia develop

jobs: test: steps: - Checkout + Setup Node - Install dependencies - Generate Prisma client - Run Jest tests (yarn test)

Frontend (rial-frontend)

Archivo: .github/workflows/lint.yml

jobs: lint: steps: - Checkout - Setup Node.js - Install dependencies - Run ESLint - TypeScript type check

El PR no puede mergearse si alguno de estos checks falla.

Pipeline de deploy a Staging

Trigger: push a la rama develop

Backend — Deploy a Staging

Archivo: .github/workflows/deploy-to-gcp-staging.yml

env: PROJECT_ID: interfaz-464700 REGION: southamerica-east1 GAR_LOCATION: southamerica-east1-docker.pkg.dev/.../rial-backend:latest steps: 1. Checkout 2. Auth con GCP (Service Account Key) 3. Setup gcloud CLI 4. Docker auth → Artifact Registry 5. Setup Docker Buildx (para builds más rápidos con caché) 6. Build + Push imagen Docker (con caché de GitHub Actions) 7. gcloud run deploy rial-backend-staging --image ... --region southamerica-east1

Frontend — Deploy a Staging

Similar al backend pero deploya rial-frontend-staging en Cloud Run.

Pipeline de deploy a Producción

Trigger: push a la rama production

Backend — Deploy a Producción

Archivo: .github/workflows/deploy-to-gcp-prod.yml

El flujo es igual al de staging pero con las variables de producción. Incluye un paso adicional de New Relic deployment marker:

- name: Track backend production change in New Relic uses: newrelic/deployment-marker-action@v2.6.2 with: apiKey: ${{ secrets.NEW_RELIC_API_KEY }} commandType: changeTrackingCreateEvent version: ${{ github.sha }} category: Deployment description: "Deploy backend production from GitHub Actions" customAttributes: '{service: "backend", environment: "production"}'

Esto registra cada deploy en New Relic para correlacionar cambios de código con cambios en performance.

Configuración de concurrencia

concurrency: group: deploy-prod-${{ github.ref }} cancel-in-progress: true

Si se pushea dos veces seguido a production, el segundo deploy cancela automáticamente al primero para evitar deploys simultáneos.

Ramas y ambientes

RamaAmbienteURL
developStagingstaging.rial-ai.com
productionProducciónrial-ai.com
feature/*Sin deploy automático

Secretos de GitHub Actions

Los secretos se configuran en GitHub → Repository Settings → Secrets and variables. Los principales:

SecretDescripción
SERVICE_ACCOUNT_KEYJSON de la Service Account de GCP para autenticarse
DATABASE_URL_PRODURL de conexión a PostgreSQL de producción
DATABASE_URL_PROD_DIRECTURL directa (para migraciones Prisma)
JWT_SECRET_PRODSecret para firmar tokens JWT
SUPABASE_URL_PRODURL de Supabase producción
SUPABASE_SERVICE_ROLE_KEY_PRODClave de service role de Supabase
NEW_RELIC_LICENSE_KEY_PRODAPI key de New Relic
GMAIL_PASS_PRODContraseña de cuenta de notificaciones por email
TWILIO_*_PRODCredenciales de Twilio para WhatsApp

Los valores de estos secretos se encuentran en secrets.rial-ai.com .

Rollback manual en Cloud Run

Si un deploy a producción tiene un problema crítico, se puede hacer rollback en segundos desde la consola de GCP:

Opción 1 — Cloud Run Console

  1. Ir a Cloud Run Console 
  2. Seleccionar el servicio (rial-backend o rial-frontend)
  3. Ir a la pestaña “Revisions”
  4. Encontrar la revisión anterior a la problemática
  5. Hacer clic en ”⋮ → Migrate traffic” y asignar 100% de tráfico a esa revisión

Opción 2 — gcloud CLI

# Listar revisiones disponibles gcloud run revisions list \ --service=rial-backend \ --region=southamerica-east1 \ --project=interfaz-464700 # Redirigir tráfico a una revisión específica gcloud run services update-traffic rial-backend \ --to-revisions=rial-backend-00042-xyz=100 \ --region=southamerica-east1 \ --project=interfaz-464700
Last updated on