Test Deploy

Laboratorio de CI/CD con GitHub Actions, Docker y despliegue automatizado

Resumen Ejecutivo

Este proyecto implementa un pipeline de CI/CD completo que permite desplegar automaticamente al hacer push a main, versionar con tags de Git, realizar rollbacks y recibir notificaciones en Telegram. Construido con GitHub Actions, Docker y Traefik como reverse proxy.

8
Problemas Resueltos
3
Workflows
5
Endpoints Actuator
6
Eventos Notificados

CI/CD con GitHub Actions

  • Workflows con push, tags y PRs
  • Ejecucion manual con workflow_dispatch
  • Jobs encadenados con needs
  • Composite Actions reutilizables
  • Notificaciones a Telegram

Docker & Registry

  • Imagenes optimizadas (Alpine)
  • GitHub Container Registry
  • Multiple tags por imagen
  • Contenedor no-root

Git & Versionado

  • Tags automaticos desde workflows
  • Branch protection rules
  • Validacion de versiones
  • Config Git por carpeta

Deploy & Operaciones

  • Deploy via SSH
  • Traefik como reverse proxy
  • Health checks automaticos
  • Rollback a versiones anteriores

Arquitectura

graph TB
    subgraph "GitHub"
        REPO[Repositorio]
        ACTIONS[GitHub Actions]
        GHCR[Container Registry]
    end

    subgraph "Servidor"
        TRAEFIK[Traefik]
        DOCKER[Docker Compose]
        APP[App Node.js]
    end

    REPO -->|push a main| ACTIONS
    ACTIONS -->|build & push| GHCR
    ACTIONS -->|SSH deploy| DOCKER
    GHCR -->|pull image| DOCKER
    DOCKER --> APP
    TRAEFIK -->|proxy| APP

    INTERNET[Internet] -->|HTTPS| TRAEFIK
                

Flujo de Deploy

sequenceDiagram
    participant DEV as Developer
    participant GH as GitHub
    participant GA as GitHub Actions
    participant GHCR as Container Registry
    participant SRV as Servidor

    DEV->>GH: Push a main
    GH->>GA: Trigger workflow
    GA->>GA: Crear tag automatico
    GA->>GA: Build imagen Docker
    GA->>GHCR: Push imagen
    GA->>SRV: SSH conexion
    SRV->>GHCR: docker compose pull
    SRV->>SRV: docker compose up
    SRV->>SRV: Health check
    GA-->>DEV: Deploy exitoso/fallido
                

Endpoints

Endpoint Descripcion
/ Pagina principal con lista de documentos
/infografia/ Indice de infografias visuales
/health Health check: status, app, version
/actuator Indice HAL-style con links a todos los endpoints
/actuator/health Estado de salud con componentes
/actuator/info Info de app, git commit y build
/actuator/metrics Metricas del sistema (CPU, memoria, uptime)
/actuator/env Variables de entorno (sensibles filtradas)

Seguridad

npm audit Escaneo de vulnerabilidades
Trivy Escaneo de imagen Docker
no-root Usuario nodejs (UID 1001)
Versiones fijadas Sin @latest en Actions

Tecnologias

Node.js 20 Express Docker Traefik v3 GitHub Actions ghcr.io Trivy