Table of Contents
Lo que es Nx y por qué importa para el desarrollo moderno
Nx es una plataforma de desarrollo y construcción de código abierto creada por Nrwl. Ayuda a los equipos a gestionar monorepos con cientos o miles de proyectos proporcionando construcciones incrementales inteligentes, caché de cálculo, visualización de gráficos de dependencia, y generación de código. A diferencia de los simples corredores de tareas, Nx entiende las dependencias entre proyectos y puede determinar exactamente qué es necesario reconstruir o recriptar
La plataforma apoya marcos populares como Angular, React, Next.js, NestJS y Node.js, y ofrece un rico ecosistema de plugins. Debido a que Nx trabaja a nivel del espacio de trabajo, impone herramientas consistentes, bibliotecas compartidas y mejores prácticas en equipos sin sacrificar flexibilidad. Para las empresas que adoptan una estrategia monorepo, Nx proporciona características de gobernanza como limitaciones de dependencia y reglas de propiedad de código.
Herramientas de colaboración basadas en la nube: Una visión general
Las herramientas de colaboración basadas en la nube proporcionan una plataforma centralizada para el control de versiones, la revisión de códigos, el seguimiento de problemas y el CI/CD.
- GitHub – La plataforma de código abierto más grande, que ofrece acciones de GitHub para CI/CD, paquetes GitHub y flujos de trabajo de revisión de códigos avanzados.
- GitLab] – Una plataforma DevOps completa con el CI/CD integrado, el registro de contenedores y una interfaz unificada para el seguimiento de problemas y wiki.
- Bitbucket] – Popular entre los equipos que utilizan productos Atlassianos, integración estrecha con Jira y Trello, y Pipelines incorporados para CI/CD.
- Azure DevOps – Microsoft ofrece, proporcionando Azure Repos, Azure Pipelines, Azure Boards e integración con el ecosistema Azure.
Estas herramientas comparten características comunes: solicitudes de tira, protecciones de ramas, webhooks y API REST. Sin embargo, cada uno tiene fortalezas únicas. GitHub destaca en comunidad y Acciones; GitLab brilla en un ciclo DevOps de una sola aplicación; Bitbucket integra profundamente con Jira; Azure DevOps ofrece un acoplamiento estrecho con los servicios de Azure para despliegues de empresas.
¿Por qué integrar Nx con Plataformas de Colaboración en la Nube?
Combinando Nx con una herramienta de colaboración basada en la nube, desbloquea ventajas que van más allá del control básico de la versión.
- Construye y prueba incrementales en tiempo real en CI – Nx puede reutilizar las salidas de caché en las carreras de CI, por lo que sólo los proyectos afectados son reconstruidos o retestados. Esto reduce la ejecución de tuberías de horas a minutos.
- Concienciación gráfica de dependencia automatizada – Cuando un desarrollador empuja un cambio, Nx sabe qué bibliotecas dependen de ese cambio y puede limitar el alcance de la CI en consecuencia.
- Ejecución local y remota constante – Los desarrolladores ejecutan los mismos comandos localmente como en CI, eliminando los problemas de “trabajos en mi máquina”.
- Repaso de código mejorado – Nx genera gráficos de dependencia explícita y conjuntos de cambio, ayudando a los revisores a entender el impacto de un PR sin adivinar.
- Gobernanza monorepo escalable – Las plataformas de nube aplican políticas de rama y controles requeridos; Nx asegura que esos controles sean rápidos y precisos.
- Mayor visibilidad – Los registros de tuberías de CI, los registros de artefactos y los plazos de construcción se almacenan en la nube, haciéndolos auditables y compartibles entre los equipos.
Cómo integrar Nx con herramientas de colaboración en la nube
Paso 1: Configura tu depósito en la nube
Elige una plataforma de colaboración en la nube y crea un nuevo repositorio. Para un monorepo, es probable que inicialice el repositorio con una que excluya , , y carpetas Nx cache (] o ). Asegúrese de que las reglas de protección de rama se definen en las principales ramas para exigir que soliciten revisiones y soliciten.
Paso 2: Configure su espacio de trabajo Nx para conectarse con el repositorio
Si ya tienes un espacio de trabajo Nx, puedes vincularlo a un repositorio remoto usando . Para nuevos proyectos, utiliza generadores de proyectos de Nx (). Después de la creación, empuja el compromiso inicial. Es importante permitir que Nx Cloud (el propio servicio de caché remoto de Nx) comparta artefactos de construcción a través de equipos y corredores de CI.
Configure el archivo de su espacio de trabajo para definir los oleoductos de tareas, las reglas de caché y los umbrales afectados. Por ejemplo:
{
"tasksRunnerOptions": {
"default": {
"runner": "nx/tasks-runners/default",
"options": {
"cacheableOperations": ["build", "test", "lint", "e2e"],
"accessToken": "…",
"canTrackAnalytics": false
}
}
}
}
Reemplazar el con uno generado por el panel de control de Nx Cloud. Este paso es crítico para el caché remoto para trabajar eficazmente en todo el CI y entornos locales.
Paso 3: Crear líneas de tuberías CI/CD para pruebas y despliegue automatizados
Cada plataforma de nube tiene su propia sintaxis para definir los oleoductos de CI, pero la lógica central sigue siendo la misma: ejecutar , , , y opcionalmente ] basado en los archivos cambiados en la rama. El oleoducto debe instalar dependencias, establecer Nx (incluyendo la autentificación a Nx Cloud), y luego ejecutar los comandos afectados.
A continuación se presentan ejemplos para plataformas típicas.
GitHub Actions
Crear :
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
main:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-node@v3
with:
node-version: 18
cache: 'npm'
- run: npm ci
- uses: nrwl/nx-set-shas@v3
- run: npx nx workspace-lint
- run: npx nx format:check
- run: npx nx affected --target=lint --parallel=3
- run: npx nx affected --target=test --parallel=3 --ci --code-coverage
- run: npx nx affected --target=build --parallel=3
La acción asegura que Nx compare el rango correcto de compromiso. Sin ella, Nx podría pensar que todos los proyectos están afectados.
GitLab CI
Crear :
image: node:18
stages:
- setup
- lint
- test
- build
before_script:
- npm ci
- npx nx sync-deps
setup:
stage: setup
script:
- echo "Environment ready"
lint:
stage: lint
script:
- npx nx affected:lint --parallel=3
test:
stage: test
script:
- npx nx affected:test --parallel=3 --ci --code-coverage
build:
stage: build
script:
- npx nx affected:build --parallel=3
artifacts:
paths:
- dist/
Para utilizar el caché remoto Nx Cloud en GitLab, exponga el como variable entorno CI.
Pipelines de Bitbucket
Crear :
image: node:18
pipelines:
pull-requests:
'**':
- step:
name: Lint, Test, and Build
caches:
- node
script:
- npm ci
- npx nx affected:lint --parallel=3
- npx nx affected:test --parallel=3 --ci --code-coverage
- npx nx affected:build --parallel=3
Azure DevOps
Usa un archivo :
trigger:
- main
pr:
branches:
include:
- '*'
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NodeTool@0
inputs:
versionSpec: '18.x'
- script: npm ci
displayName: 'Install dependencies'
- script: npx nx affected --target=lint --parallel=3
displayName: 'Lint'
- script: npx nx affected --target=test --parallel=3 --ci --code-coverage
displayName: 'Test'
- script: npx nx affected --target=build --parallel=3
displayName: 'Build'
Establecer como una variable de tubería.
Paso 4: Use Webhooks o integraciones de API para Trigger Builds
La mayoría de las herramientas de colaboración en la nube ya activan los oleoductos automáticamente en los eventos de solicitud de empuje o de arranque. Sin embargo, puede querer desencadenar desencadenantes finos: por ejemplo, saltar CI para cambios de documentación o ejecutar una compilación completa sólo cuando se fusiona a la red. Nx puede ayudar detectando proyectos afectados antes de que se ejecute el oleoducto completo.
Paso 5: Monitorear y optimizar el flujo de trabajo
Después de la integración, revise las estadísticas del oleoducto: tiempo promedio, tasa de golpes de caché y frecuencia de fallos. Nx Cloud proporciona un panel de control que muestra el uso de caché y distribución de tareas. Ajuste reglas de caché, aumentar el paralelismo, o añadir caché remoto si el caché disminuye. Además, revise las reglas de protección de ramas – asegurar que las comprobaciones de estado necesarias coincidan con los pasos del oleoductor y que no está bloqueando PRs innecesariamente para proyectos no relacionados.
Mejores prácticas para la colaboración Nx + Cloud
- Use un repositorio de código único de la verdad] – Almacene todo el código y la configuración en el monorepo. Evite dividir archivos de configuración en varios repositorios para evitar la deriva.
- Adopt convencional commits] – Usa prefijos como , , para facilitar las notas de liberación y la versión. Herramientas como pueden integrarse con Nx y Cloud CI.
- Mantenga espacios de trabajo bien estructurados] – Utilice generadores Nx para crear proyectos consistentes. Define en para hacer cumplir las limitaciones de dependencia (por ejemplo, “las aplicaciones no pueden importar de otras aplicaciones”.
- Ejecuta las puertas de calidad de código]: Usa reglas de forro, cheques de formato (]) y cheques de tipo en CI. Estos pasos pueden funcionar en paralelo, pero ten cuidado con la asignación de recursos.
- Cache agresivamente] – Permitir el caché remoto (Nx Cloud) no sólo para las construcciones sino también para las pruebas. Asegúrese de que la lista incluye todas las operaciones que son deterministas.
- Establecer políticas de rama] – Exigir controles de estado del oleoducto CI, hacer cumplir la historia lineal y limitar los empujes directos a la base. Nx puede ayudar generando una lista de proyectos afectados para la descripción de PR.
- Documentos de flujos de trabajo] – Crear un que explica cómo configurar el repositorio, ejecutar comandos Nx e interpretar fallos de CI. Incluir enlaces a la documentación Nx y la documentación de la herramienta de nube.
- Monitor build costs – Muchas herramientas cloud cobran por los minutos de construcción. Nx reduce los minutos esquiando proyectos no afectados. Además, use corredores auto-anfitriados si tiene compromisos de alta frecuencia.
Posibles desafíos y cómo superarlos
La integración no es sin obstáculos. Aquí hay problemas y soluciones comunes:
- Long inicial CI runs] – La primera carrera después de configurar el caché remoto será lenta porque no existe caché. Utilice un CI de semilla corre en la rama principal para poblar el caché, o ejecutar una compilación completa manualmente.
- Cache invalidation – Si las construcciones no son deterministas (por ejemplo, los tiempos, las variables ambientales), el caché puede ser usado incorrectamente. Asegúrese de que sus comandos de construcción son funciones puras de los insumos (código de fuente y configuración).
- Profundidad de la marca en el checkout] – Nx requiere la historia completa de Git para calcular los proyectos afectados. Asegúrese de comprobar con o una bandera similar.
- Acceso a la seguridad token – Almacenar ] y otros secretos como variables cifradas en la plataforma CI/CD, no en el repositorio. Rotar fichas periódicamente.
- Complejidad de la tubería – A medida que crece el monorepo, el oleoducto puede ser lento incluso con Nx. Considere el uso de la ejecución de tareas distribuida (Nx Agents) para dividir tareas en múltiples máquinas de CI.
Casos de uso real-mundial
Las grandes organizaciones ya se benefician de esta integración. Por ejemplo, una compañía de fintech que utiliza Nx con GitLab redujo el tiempo de CI de 45 minutos a menos de 5 minutos para la mayoría de las solicitudes de tirada. Lo lograron permitiendo caché remoto y ejecutar pruebas afectadas. Otro equipo que utiliza GitHub Actions y Nx redujo su tasa de fracaso de implementación en un 70% porque PRs ahora incluyen anotaciones de gráficos de dependencia automática, ayudando a los revisores a capturar efectos secundarios no deseados.
Las startups adoptan esta pila para mantener la velocidad mientras crecen de 5 a 50 ingenieros. Una startup SaaS se trasladó de repositorios separados a un monorepo Nx integrado con Bitbucket Pipelines, cortando el tiempo de desarrollo a bordo de dos días a dos horas y acortando el número de conflictos fusionados.
Consideraciones de seguridad
Cuando se integra Nx con herramientas de nube, se debe abordar la seguridad:
- Auditorías de la dependencia] – Corre o en CI para captar vulnerabilidades conocidas. Usar para realizar auditorías de alcance para cambiar de dependencia.
- Gestión de secretos] – Nunca cometer secretos. Usar la tienda secreta de la plataforma de nube (por ejemplo, GetHub Secrets, GitLab CI Variables). Para el desarrollo local, utilice archivos listados en .
- Aislamiento del entorno] – El CI se ejecuta en contenedores efímeros; sin embargo, si se utilizan corredores auto hospedados, asegúrese de que se rellenen y se aislen.
- Prontos ataques de cadena – Las versiones de dependencia de pin en los archivos de bloqueo de paquetes y considerar el uso de los hashes de integridad de Nx. La caché de Nx puede propagar inadvertidamente un artefacto comprometido, por lo que es prudente hacer cumplir los compromisos firmados y revisar los cambios en los archivos de configuración.
Consejos de optimización del rendimiento
Para sacar el máximo provecho de las ganancias de velocidad de Nx en CI:
- Paralelamente a través de máquinas – Si su monorepo tiene muchos proyectos, utilice Nx Agents o similar distribución de tareas para ejecutar tareas en múltiples máquinas de CI simultáneamente.
- Optimizar la memoria Node.js] – Usar para evitar errores fuera de memoria durante grandes construcciones.
- Use explícitamente] – En las colas de fusión o las configuraciones complejas de CI, especificar manualmente la rama base puede prevenir cálculos incorrectos de difusa.
- Reducir la fragmentación de prueba – Un grupo de pruebas de unidad pequeñas en un solo proyecto si es posible. Nx puede ejecutarlos en paralelo, pero demasiados proyectos pequeños agregan sobrecabeza.
- Cache node modules – Las plataformas de Cloud CI permiten el caché de . Usa esto para saltar en cada carrera a menos que cambie.
Recursos externos
Para más lectura, consulte:
- Nx CI Configuration Guide – Documentación oficial para establecer CI con varias plataformas.
- GitHub Actions for Node.js – Referencia de los pasos de tubería de GitHub Actions.
- GitLab CI/CD YAML Especificación] – Detalles para la configuración de tuberías GitLab.
- Documentación sobre las tuberías azules – Cómo establecer tuberías en los DevOps de Azure.
Integrar Nx con herramientas de colaboración basadas en la nube es un movimiento estratégico que acelera el desarrollo, refuerza la coherencia y escala con su equipo. Al seguir los pasos y las mejores prácticas descritos anteriormente, puede construir un oleoducto CI/CD rápido, seguro y sostenible que apalanque el pleno poder de la caché inteligente de cálculo de Nx y la colaboración nublada. Empiece con un pequeño proyecto piloto, mida las mejoras y luego expanda la práctica en su implementación.