Automatiza despliegues y pruebas de tu MVP con GitHub Actions
Configura un pipeline de integración continua en GitHub Actions para desplegar tu aplicación y ejecutar pruebas automáticamente cada vez que subas código, ahorrando tiempo y evitando errores manuales.
Como emprendedor o miembro de un equipo de producto, necesitas entregar tu MVP rápidamente y con calidad. GitHub Actions te permite automatizar flujos de trabajo directamente desde tu repositorio de GitHub. En este tutorial, aprenderás a configurar un pipeline que ejecuta pruebas unitarias y despliega tu aplicación a un entorno de producción cada vez que haces un push a la rama principal.
¿Qué necesitas antes?
Debes tener una cuenta en GitHub, un repositorio con código fuente (por ejemplo, una app Node.js o Python) y acceso a la línea de comandos. Asegúrate de que tu proyecto tenga un archivo package.json (Node.js) o requirements.txt (Python) configurado correctamente.
Paso 1: Crear el archivo de flujo de trabajo
En tu repositorio, ve a la pestaña Actions. GitHub sugerirá algunos flujos de trabajo iniciales. Haz clic en Set up this workflow o crea uno personalizado. El archivo debe guardarse en la ruta .github/workflows/ci-cd.yml.
Paso 2: Configurar el entorno de ejecución
Elige un runner virtual. Para la mayoría de los proyectos, ubuntu-latest es una opción segura. Define los disparadores (triggers) usando on:. Por ejemplo, para ejecutar el flujo al hacer push a la rama main, usa:
on:
push:
branches: [ main ]
Paso 3: Instalar dependencias y ejecutar pruebas
Agrega un job que instale las dependencias y ejecute las pruebas. Usa el action actions/setup-node para Node.js o actions/setup-python para Python. Ejemplo para Node.js:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm install
- run: npm test
Paso 4: Despliegue automático
Después de las pruebas exitosas, agrega un segundo job que despliegue tu aplicación. Puedes usar rsync, scp o integrar con servicios como Netlify, Vercell o AWS. Para despliegues en un servidor VPS, usa SSH:
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Deploy via SSH
uses: appleboy/ssh-action@v0.1.10
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_KEY }}
script: |
cd /var/www/app
git pull origin main
npm install
npm run build
systemctl restart app
Paso 5: Configurar secrets
En GitHub, ve a Settings → Secrets and variables → Actions. Agrega secrets como SSH_HOST, SSH_USER y SSH_KEY. Nunca subas credenciales directamente al código.
Ejemplo concreto: App Node.js
Supongamos que tienes una API Express en un repositorio. Crea el archivo .github/workflows/ci-cd.yml con el contenido anterior. Cada vez que hagas push a main, GitHub Actions instalará las dependencias, ejecutará npm test y, si todo sale bien, se conectarás por SSH a tu servidor para actualizar la app.
Errores frecuentes
- Secrets no definidos: Verifica que los nombres coincidan exactamente con los usados en el YAML.
- Rama incorrecta: Asegúrate de que el disparador (
on.push.branches) coincida con la rama que estás usando. - Dependencias desactualizadas: Usa
npm cien lugar denpm installpara garantizar consistencia conpackage-lock.json. - Permisos de SSH: La clave privada debe tener permisos
600y no estar protegida con frase de contraseña.
Cierre práctico
Con GitHub Actions, reduces la carga operativa y minimizas errores humanos. Empieza con un flujo básico de pruebas y expandiéndelo a despliegues cuando estés listo. Recuerda monitorear los logs en la pestaña Actions de tu repositorio para detectar fallos rápidamente. El siguiente paso es integrar notificaciones por email o Slack usando actions como slackapi/slack-github-action para alertar de fallos en tiempo real.
Fuente sugerida: Documentación oficial de GitHub Actions.
