Contents
Implementar integración continua con GitHub Actions
La integración continua (CI) se ha convertido en un estándar en el desarrollo de software moderno. Permite que cada cambio en el repositorio se valide automáticamente mediante compilaciones, pruebas y análisis de calidad. GitHub Actions ofrece una plataforma nativa y flexible para orquestar estos procesos directamente en GitHub, sin depender de servicios externos.
1. ¿Qué es la integración continua
La integración continua consiste en fusionar frecuentemente los cambios de código a una rama principal, ejecutando automáticamente un conjunto de pruebas y validaciones. Sus objetivos principales:
- Detección temprana de errores: Fallos se identifican al momento de hacer push.
- Retroalimentación rápida: El equipo recibe reportes automáticos de calidad.
- Entrega constante: Facilita la preparación de paquetes o despliegues continuos.
2. Beneficios de GitHub Actions
- Integración nativa: No requiere configurar webhooks externos.
- Marketplace de acciones: Reutiliza tareas creadas por la comunidad (GitHub Marketplace).
- Multi-plataforma: Runners para Linux, Windows y macOS.
- Escalabilidad: Añade runners auto-hospedados según demanda.
- Seguridad: Gestión de secretos integrada y controles de acceso.
3. Componentes clave de un workflow
Un flujo de trabajo de GitHub Actions se define en YAML y consta de:
- Eventos (on): Desencadenan la acción (push, pull_request, schedule…).
- Jobs: Unidades independientes que pueden ejecutarse en paralelo o en secuencia.
- Steps: Pasos dentro de cada job, como acciones o comandos bash.
- Runners: Entornos (hosteados o auto-hospedados) donde se ejecutan los jobs.
4. Primeros pasos: crear tu primer workflow
- En el repositorio, crea la carpeta
.github/workflows
. - Añade un archivo YAML, por ejemplo
ci.yml
. - Define el evento y jobs básicos.
- Haz commit y push de tu archivo.
- Revisa la pestaña Actions en GitHub para ver la ejecución.
Ejemplo de configuración mínima
name: CI
on:
push:
branches: [ main ]
pull_request:
types: [ opened, synchronize, reopened ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Instalar dependencias
run: npm install
- name: Ejecutar tests
run: npm test
5. Eventos y triggers más comunes
Evento | Descripción |
---|---|
push | Cada vez que se hace push a una rama o etiqueta. |
pull_request | Al abrir o actualizar un pull request. |
schedule | Tareas programadas vía cron. |
workflow_dispatch | Inicio manual desde la interfaz. |
6. Características avanzadas
- Matriz de builds: Permite probar diferentes versiones de lenguajes o sistemas operativos.
strategy: matrix: node: [12,14,16] os: [ubuntu-latest, windows-latest]
- Cache de dependencias: Acelera las ejecuciones posteriores.
- name: Cache npm uses: actions/cache@v3 with: path: ~/.npm key: {{ runner.os }}-npm-{{ hashFiles(package-lock.json) }} restore-keys: {{ runner.os }}-npm-
- Secrets y variables: Accede a
secrets.MI_SECRETO
oenv.MI_VAR
sin exponer credenciales. - Artefactos: Publica binarios o reportes usando
actions/upload-artifact@v3
. - Notificaciones: Integra con Slack, Teams o correo mediante acciones del Marketplace.
7. Mejores prácticas
- Mantén workflows pequeños: Divídelos por responsabilidad (build, test, deploy).
- Reutiliza acciones: Busca en el Marketplace antes de escribir scripts complejos.
- Bloquea versiones: Especifica tags o commits de las acciones (por ejemplo
@v3
). - Documenta tus workflows: Añade comentarios en el YAML para clarificar su propósito.
- Protege ramas: Usa reglas de protección en GitHub para requerir CI exitoso antes de mergear.
8. Solución de problemas
- Error de sintaxis YAML: Valida con linters como yamllint.
- Permisos insuficientes: Revisa el acceso de los runners y activa workflows en forks si es necesario.
- Timeouts: Ajusta
timeout-minutes
en jobs que requieran más tiempo. - Problemas de caching: Asegura que las claves de cache cambien cuando modificas dependencias.
9. Recursos y enlaces
- Documentación oficial de GitHub Actions
- Artículo sobre integración continua (Wikipedia)
- Repositorio de GitHub Actions
Publicado por tu equipo de DevOps – Actualizado el 2024
|
Acepto donaciones de BAT's mediante el navegador Brave 🙂 |