GitHub Workflows es una potente herramienta integrada en GitHub Actions que permite automatizar tareas recurrentes en el ciclo de vida del desarrollo de software. Desde la compilación hasta el despliegue, los workflows facilitan la implementación de integraciones y despliegues continuos (CI/CD), mejorando la eficiencia y calidad de los proyectos.
¿Qué son los GitHub Workflows?
Un workflow en GitHub es un conjunto de procesos automatizados definidos en archivos YAML que se ejecutan en respuesta a eventos específicos dentro de un repositorio, como un push, pull request o creación de una etiqueta (tag). Estas automatizaciones pueden ejecutar tests, desplegar aplicaciones o verificar el código, entre otras funcionalidades.
Componentes clave de un workflow:
- Events (Eventos): Condiciones que activan el workflow, por ejemplo
push
,pull_request
, o programaciones (schedule
). - Jobs (Trabajos): Un conjunto de pasos que se ejecutan en máquinas virtuales o contenedores.
- Steps (Pasos): Comandos individuales dentro de un job, como ejecutar scripts o usar acciones de terceros.
- Actions: Pequeños bloques reutilizables que realizan tareas específicas, facilitando la modularidad del workflow.
Ventajas y usos principales de GitHub Workflows
1. Integración Continua (CI)
Con workflows, puedes configurar pipelines que ejecutan pruebas automatizadas con cada push o pull request, asegurando que el código integrador cumple con los estándares de calidad antes de fusionarse.
2. Despliegue Continuo (CD)
Los workflows pueden automatizar despliegues a entornos de producción o staging, reduciendo errores manuales y acelerando la entrega de software.
3. Mantenimiento y automatización de tareas rutinarias
Por ejemplo, puedes programar workflows para actualizar dependencias, generar documentación o limpiar ramas obsoletas.
Cómo crear un workflow básico en GitHub
- Dentro del repositorio, crea una carpeta
.github/workflows/
. - Agrega un archivo YAML, por ejemplo
ci.yml
. - Define el evento disparador, jobs y steps.
Ejemplo sencillo para ejecutar tests al hacer push en la rama main:
name: Test Workflow
on:
push:
branches:
– main
jobs:
test:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v3
– name: Run tests
run: |
npm install
npm test
Mejores prácticas para trabajar con GitHub Workflows
- Modulariza las actions: Reutiliza acciones personalizadas para mantener el workflow limpio y mantenible.
- Limita el scope de eventos: Define claramente cuándo debe ejecutarse el workflow para evitar procesos innecesarios que consumen recursos.
- Gestiona secretos con cuidado: Emplea los secretos de GitHub para variables sensibles (API keys, tokens).
- Monitorea y depura: Usa logs y anotaciones para entender el comportamiento del workflow y solucionar errores.
Ejemplo avanzado: Workflow de CI/CD para una aplicación Node.js
🔴 ¿Quieres entrar de lleno al mundo DevOps & Cloud Computing? 🔴
Descubre el DevOps & Cloud Computing Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp en DevOps & Cloud Computing por una semananame: CI/CD Pipeline
on:
push:
branches:
– main
jobs:
build_and_test:
runs-on: ubuntu-latest
steps:
– uses: actions/checkout@v3
– name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: ’16’
– run: npm install
– run: npm test
deploy:
needs: build_and_test
runs-on: ubuntu-latest
if: github.ref == ‘refs/heads/main’
steps:
– uses: actions/checkout@v3
– name: Deploy to server
env:
DEPLOY_KEY: $
run: ./deploy-script.sh
Este workflow primero realiza la compilación y pruebas y, en caso de éxito, despliega la aplicación automáticamente.
Conclusión
Si quieres profundizar en estas tecnologías y estar preparado para liderar esta transformación, te invito a conocer el Bootcamp DevOps & Cloud Computing de KeepCoding.