De Push a Producción: CI/CD para Proyectos Vue.js + Node
Pipeline automático en 3 minutos. Sin comandos manuales.
En este artículo vas a ver cómo implementar un pipeline CI/CD completo para proyectos Vue.js + Node usando GitHub Actions y Docker. Incluye configuración funcional, stack recomendado y casos reales con métricas.
Qué vas a aprender:
Por qué automatizar tus deploys
Configuración paso a paso con GitHub Actions
Stack tecnológico completo (Docker, VPS, Nginx)
Diferencia entre setup básico y profesional
Casos reales: de 45 minutos manuales a 3 minutos automáticos
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, encontramos que la mejor opció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
- Push a
main - Pipeline automático: install → test → build → deploy
- Si algo falla → se detiene y notifica
- Si pasa → código en producción en minutos
Resultados
- ⚡ Deploy: 45min → 3min
- 🛡️ Menos errores
- 🔄 10+ deploys diarios
- 🎯 Más tiempo para codear
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
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 Enterprise
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
Startup en Crecimiento
Desafío: Software complejo con muchas variantes segun los entornos (versión web, totems de pago). Los deploys tienen numeros pasos para poner el sistema en producción.
Resultado:
- De 1 deploy semanal a 3-4 diarios
- Bugs detectados en staging, no en producción
- Reducción de errores o demoras en las puestas en producción.
Implementación Profesional
En TecnoSoul implementamos pipelines CI/CD completos.
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:
- Consultoría inicial (30min, sin compromiso)
- Propuesta técnica con alcance y presupuesto
- Implementación
- Go-live con acompañamiento
Próximos Pasos
Implementalo Vos
Con la configuración básica de este artículo podés arrancar hoy.
Recursos recomendados:
Que Funcione Profesionalmente
Si preferís una implementación enterprise con todas las optimizaciones y mejores prácticas, hablemos.
Conclusión
Los deploys manuales van cediendo las tareas a las herramientas de CI/CD. 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.
Cada vez más developers automatizan lo automatizable y se vuelven a enfocar en programar.
Tags: #DevOps #CICD #VueJS #NodeJS #GitHubActions #Docker #Automatización