Saltar a contenido

🚀 Despliegue del Proyecto en Google Cloud Platform (GCP)

Esta sección describe el proceso de despliegue automático del sistema de riego usando Docker, GitHub Actions y Google Cloud Platform, específicamente con Cloud Run.


🌐 Servicios Utilizados en GCP

Servicio Uso principal
Cloud Run Hospedaje de contenedores para frontend/backend
Cloud Build Automatiza los builds de Docker
Cloud SQL Base de datos MySQL
Artifact Registry Almacén de imágenes Docker
IAM Permisos y cuentas de servicio
Cloud Logging Logs de ejecución de los servicios

🧱 Estructura del Despliegue

.github/workflows/
├── deploy.yaml       # CI/CD para build + deploy
├── test.yaml         # Lint y pruebas automáticas

cloudbuild.yaml        # Build y despliegue en Cloud Run
frontend/Dockerfile    # Imagen frontend Angular
backend/Dockerfile     # Imagen backend Express

⚙️ Archivos Clave

📁 cloudbuild.yaml

Define los pasos para:

  • Build backend y frontend (Docker)
  • Push a Artifact Registry
  • Deploy en Cloud Run
steps:
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'gcr.io/PROYECTO/backend-riego', '.']
    dir: 'backend'
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'gcr.io/PROYECTO/frontend-riego', '.']
    dir: 'frontend'
  ...

📁 .github/workflows/deploy.yaml

Se ejecuta en cada push a main. Autentica con GCP y lanza cloudbuild.yaml.

on:
  push:
    branches:
      - main

🔐 Secrets en GitHub

Nombre Descripción
GCP_SA_KEY JSON de la cuenta de servicio con permisos a Cloud Run, Build y Storage

☁️ Configuraciones Relevantes

  • Cada microservicio (frontend y backend) tiene su propia imagen Docker.
  • El backend escucha en PORT=3000, pero Cloud Run lo redirige a 8080.
  • Las variables de entorno del backend se configuran directamente en la consola de Cloud Run.

🧪 Pruebas Automatizadas

Se ejecutan antes del despliegue en el workflow test.yaml:

on:
  push:
    branches:
      - main
  pull_request:

✅ Requisitos Previos

  1. Activar APIs en GCP:
  2. Cloud Run
  3. Cloud Build
  4. Artifact Registry
  5. Cloud SQL Admin

  6. Crear cuenta de servicio y otorgar permisos:

  7. Cloud Run Admin
  8. Cloud Build Editor
  9. Storage Admin (para logs y fuentes)

  10. Agregar JSON de cuenta como secret en GitHub.


📦 Resultado

  • Producción disponible en:
  • Frontend: https://frontend-riego-xxx.run.app
  • Backend: https://backend-riego-xxx.run.app