TecnoSoul


De Push a Producción: CI/CD para Proyectos Vue.js + Node

Pipeline automático en 3 minutos. Sin comandos manuales.


El Problema

Los deploys manuales consumen tiempo y generan errores. Cada deploy requiere ejecutar comandos en secuencia, verificar que todo funcione, y rezar que nada se rompa en producción.

Problemas típicos:

  • 20-45 minutos por deploy
  • Errores humanos que causan downtime
  • “Funciona en dev” pero falla en producción
  • Rollback manual complicado
  • Dependencia de una sola persona

Después de 15 años implementando sistemas en producción, la solución es clara: automatización.

La Solución: CI/CD

CI/CD = Continuous Integration / Continuous Deployment

Tu código se prueba y despliega automáticamente cada vez que hacés push a tu repositorio.

El Flujo

  1. Push a main
  2. Pipeline automático: install → test → build → deploy
  3. Si algo falla → se detiene y notifica
  4. Si pasa → código en producción en minutos

Flujo CI/CD

Resultados

  • ⚡ Deploy: 45min → 3min
  • 🛡️ Menos errores
  • 🔄 10+ deploys diarios
  • 🎯 Más tiempo para codear

Comparación Antes vs Después


Stack Recomendado

Para proyectos Vue.js + Node:

  • GitHub + GitHub Actions – CI/CD integrado, gratis
  • Docker – Consistencia entre ambientes
  • VPS Debian/Ubuntu – Estable y confiable
  • Nginx – Reverse proxy

Stack Tecnológico


Implementación Básica

Ejemplo funcional que podés implementar en una tarde.

1. Dockerizar la Aplicación

# Dockerfile
FROM node:18-alpine as build

WORKDIR /app
COPY package*.json ./
RUN npm ci

COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf

EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

2. Configurar nginx

# nginx.conf
server {
    listen 80;
    root /usr/share/nginx/html;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

3. Pipeline GitHub Actions

# .github/workflows/deploy.yml
name: Deploy to Production

on:
  push:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      
      - name: Install dependencies
        run: npm ci
      
      - name: Run tests
        run: npm test

  build-and-deploy:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Build Docker image
        run: docker build -t myapp:latest .
      
      - name: Deploy to server
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_KEY }}
          script: |
            cd /app
            docker pull myapp:latest
            docker-compose up -d --force-recreate

Configuración del Servidor

# docker-compose.yml en el servidor
version: '3.8'
services:
  app:
    image: myapp:latest
    ports:
      - "80:80"
    restart: always

Resultado

Con esta configuración:

  • ✅ Push a main → deploy automático
  • ✅ Tests ejecutados antes del deploy
  • ✅ Docker garantiza consistencia
  • ⏱️ Deploy completo en ~5 minutos

Nivel Profesional

Para producción real se necesitan capas adicionales:

1. Múltiples Ambientes

Desarrollo → Staging → Producción

  • Variables de entorno por ambiente
  • Bases de datos separadas
  • Proceso de aprobación entre stages

2. Optimizaciones

  • Básico: Build completo cada vez (~8 min)
  • Profesional: Cache de dependencias (~2 min)

3. Rollback Automático

  • Health checks post-deploy
  • Rollback si fallan las verificaciones
  • Notificaciones automáticas
  • Logs detallados

4. Secrets Management

Gestión profesional de credenciales con GitHub Secrets, rotación automática y acceso auditado.

5. Monitoreo

  • Métricas en tiempo real (Prometheus + Grafana)
  • Logs centralizados
  • Alertas automáticas
  • Dashboards customizados

6. Zero-Downtime Deployments

Blue-green deployments, rolling updates, sesiones de usuario preservadas.


Casos Reales

Software House – 5 Proyectos Activos

Antes:

  • 40min de deploy manual por proyecto
  • Solo 1 persona podía deployear
  • 1-2 deploys semanales

Después:

  • 3min automático
  • Todo el equipo puede deployear
  • 15-20 deploys semanales
  • 40+ horas/mes recuperadas

Startup en Crecimiento

Desafío: De 100 a 1000+ usuarios, deploys manuales insostenibles

Resultado:

  • De 1 deploy semanal a 3-4 diarios
  • Bugs detectados en staging, no en producción
  • Tiempo dev → prod: 1 semana → mismo día

Implementación Profesional

En TecnoSoul implementamos pipelines CI/CD completos en 3-5 días.

Incluye:

  • ✅ Auditoría de infraestructura actual
  • ✅ Diseño del pipeline según tu stack
  • ✅ Implementación completa
  • ✅ Documentación para tu equipo
  • ✅ Soporte post-implementación

Proceso:

  1. Consultoría inicial (30min, sin compromiso)
  2. Propuesta técnica con alcance y presupuesto
  3. Implementación
  4. Go-live con acompañamiento

Próximos Pasos

Implementalo Vos

Con la configuración básica de este artículo podés arrancar hoy. Tiempo estimado: 1-2 días.

Recursos recomendados:

Que Funcione Profesionalmente

Si preferís una implementación enterprise con todas las optimizaciones y mejores prácticas, hablemos.

Consultoría Inicial
WhatsApp


Conclusión

Los deploys manuales son cosa del pasado. Automatizarlos no requiere un equipo DevOps gigante – con las herramientas correctas y la configuración adecuada, cualquier equipo puede deployear múltiples veces al día sin estrés.

Los mejores developers automatizan lo automatizable y se enfocan en resolver problemas reales.

¿Cuándo fue tu último deploy manual?


Tags: #DevOps #CICD #VueJS #NodeJS #GitHubActions #Docker #Automatización



Sitio en Mantenimiento

@TecnoSoul

...

Estamos haciendo unos ajustes...

....

Podés navegar el sitio y utilizar la tienda normalmente...

...