Aceleración de builds con caché de Nx y automatización con GitHub Actions
Clase 17 de 17 • Curso de Monorepositorios con NX
Resumen
La optimización con Nx y GitHub Actions acelera el build y asegura calidad continua en monorepos. Aquí verás cómo el caché de Nx reduce tiempos drásticamente (de 40 s a 2 s), cómo se configuran workflows en YAML y qué automatizaciones útiles puedes encender en tu pipeline.
Aceleración con Nx: caché en build, test y lint
El caché de Nx guarda resultados para reutilizarlos en ejecuciones repetidas. La primera pasada es más lenta, pero las siguientes leen del caché y se vuelven mucho más rápidas.
¿Cómo acelera el caché de Nx el flujo diario?
- Primera ejecución: no puede leer caché, el build de producción demora varios segundos (ejemplo: 40 segundos).
- Repetición: “leyendo de caché”, termina en alrededor de 2 segundos.
- Mejora transversal: aplica a build, serve, test y lint.
¿Qué comandos aprovechan el cacheo incremental?
- build: empaquetados rápidos tras la primera corrida.
- serve: levantar la app se agiliza en repeticiones.
- test: pruebas más veloces con resultados cacheados.
- lint: verificaciones de estilo reusando cálculos previos.
- Apoyo visual: mismísimo Nx Console facilita ejecutar tareas del monorepositorio.
GitHub Actions generadas por Nx: triggers, jobs y estado
Nx autogenera un archivo en .github/workflows (por ejemplo, .cy.yml) que define una Action: nombre, disparadores (triggers), permisos, jobs y pasos. Así se valida el código en cada push o pull request y se estandarizan buenas prácticas.
¿Cuándo se disparan los triggers en GitHub Actions?
- push en ramas: master, y patrones como features/ y hotfix/ (muy común en empresas).
- pull_request: ejecuta la Action al abrir PR.
- Etiquetas: al hacer tag, por ejemplo 0.1.0.
- Horarios: ejecución planificada con cron.
name: ci
on:
push:
branches: [master, 'features/**', 'hotfix/**']
pull_request:
branches: ['**']
# También se pueden configurar tags y horarios (cron).
¿Qué permisos y entorno usa el workflow?
- Permisos: lectura/lectura, sin edición.
- Runner: Ubuntu reciente para ejecutar los jobs.
¿Cómo se configura Node y dependencias?
- Node versión 20.
- Instalación con
npm ci
: solo dependencias de producción, salteando dev dependencies (según la configuración indicada).
¿Qué hace nx run-many en el pipeline?
- Ejecuta múltiples objetivos: lint, test y build en lote.
- Centraliza validaciones de calidad y build en un único paso.
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Instalar dependencias
run: npm ci
- name: Lint, test y build
run: npx nx run-many --target=lint,test,build
¿Cómo interpretar estados y fallos?
- Verde: todo ok cuando el código base está estable.
- Al agregar código: pueden fallar linters y tests hasta corregir malas prácticas y completar pruebas unitarias.
- Mensajes útiles: “Tareas exitosas, doce. Failure: cero.”
- Notas: “muchas tareas estaban calladas por el propio Nx”, indicando tareas omitidas/ahorradas por el sistema.
Fragmento de demostración de git que dispara la Action en master:
git add .
git commit -m "clase GitHub Actions, parte dos"
git push
Automatizaciones populares con GitHub Actions
Además de validar calidad, se pueden orquestar despliegues y tareas de plataforma. Con los permisos correctos, GitHub Actions puede ser el disparador clave del flujo.
¿Qué despliegues se pueden orquestar?
- Despliegue en AWS.
- Despliegue en GCP (Google Cloud Platform).
- Requiere configurar credenciales y permisos; no es solo “una línea de código”.
¿Cómo integrar contenedores y paquetes?
- Contenedores: Docker y despliegues en Kubernetes.
- Paquetes: publicar en NPM registry si mantienes un paquete propio.
¿Qué tareas de calidad y alertas son útiles?
- Análisis de seguridad.
- Reportes de cobertura.
- Notificaciones: a Slack, Discord, email o WhatsApp cuando hay despliegues o fallos (en lugar del mail por defecto de GitHub).
¿Quieres que revisemos un YAML real y pulamos tus triggers y jobs para tu monorepo? Deja tus dudas y comparte tu caso en los comentarios.