Table of Contents
Was ist Nx und warum es für die moderne Entwicklung wichtig ist
Nx ist ein Open-Source-Build-System und eine von Nrwl erstellte Entwicklungsplattform. Es hilft Teams, Monorepos mit Hunderten oder Tausenden von Projekten zu verwalten, indem es intelligente inkrementelle Builds, Rechen-Caching, Abhängigkeitsgraphenvisualisierung und Codegenerierung bereitstellt. Im Gegensatz zu einfachen Task-Läufern versteht Nx die Abhängigkeiten zwischen Projekten und kann genau bestimmen, was neu aufgebaut oder erneut getestet werden muss, wenn eine Änderung auftritt. Diese Fähigkeit reduziert die CI-Zeiten und die Entwickler-Wartezyklen drastisch und macht es zu einem Eckpfeiler für die groß angelegte JavaScript-, TypeScript- und Java-Entwicklung.
Die Plattform unterstützt gängige Frameworks wie Angular, React, Next.js, NestJS und Node.js und bietet ein reichhaltiges Plugin-Ökosystem. Da Nx auf der Ebene des Arbeitsbereichs funktioniert, setzt es konsistente Tools, Shared Libraries und Best Practices über Teams hinweg durch, ohne auf Flexibilität zu verzichten. Für Unternehmen, die eine Monorepo-Strategie verfolgen, bietet Nx Governance-Funktionen wie Abhängigkeitsbeschränkungen und Code-Eigentumsregeln.
Cloud-basierte Collaboration Tools: Ein Überblick
Cloud-basierte Collaboration-Tools bieten eine zentrale Plattform für Versionskontrolle, Code-Review, Problemverfolgung und CI/CD.
- GitHub – Die größte Open-Source-Plattform, die GitHub-Aktionen für CI/CD, GitHub-Pakete und erweiterte Code-Review-Workflows anbietet.
- GitLab – Eine komplette DevOps-Plattform mit eingebauter CI/CD, Containerregistrierung und einer einheitlichen Schnittstelle für Problemverfolgung und Wiki.
- Bitbucket – Beliebt bei Teams, die Atlassian-Produkte, eine enge Integration mit Jira und Trello und integrierte Pipelines für CI/CD verwenden.
- Azure DevOps – Microsofts Angebot, das Azure Repos, Azure Pipelines, Azure Boards und die Integration in das Azure-Ökosystem bereitstellt.
Diese Tools haben gemeinsame Funktionen: Pull Requests, Branch Protections, Webhooks und REST APIs. Jede hat jedoch einzigartige Stärken. GitHub zeichnet sich durch Community und Aktionen aus; GitLab glänzt in einem DevOps-Zyklus mit einer einzigen Anwendung; Bitbucket integriert sich tief in Jira; Azure DevOps bietet eine enge Kopplung mit Azure-Diensten für Unternehmensbereitstellungen.
Warum Nx mit Cloud Collaboration Plattformen integrieren?
Die Kombination von Nx mit einem Cloud-basierten Collaboration-Tool bietet Vorteile, die über die grundlegende Versionskontrolle hinausgehen.
- Real-time inkrementelle Builds und Tests in CI – Nx kann zwischengespeicherte Outputs über CI-Läufe hinweg wiederverwenden, sodass nur betroffene Projekte neu erstellt oder erneut getestet werden.
- Automatisierte Abhängigkeitsgraphen-Awareness – Wenn ein Entwickler eine Änderung vornimmt, weiß Nx, welche Bibliotheken von dieser Änderung abhängen und kann den CI-Bereich entsprechend einschränken.
- Konsistente lokale und Remote-Ausführung – Entwickler führen lokal dieselben Befehle aus wie in CI, wodurch Probleme mit „funktioniert auf meiner Maschine beseitigt werden.
- Verbesserte Code-Review – Nx generiert explizite Abhängigkeitsgraphen und Änderungssätze, die Rezensenten helfen, die Auswirkungen einer PR zu verstehen, ohne zu erraten.
- Skalierbare Monorepo-Governance – Cloud-Plattformen setzen Zweigrichtlinien und erforderliche Prüfungen durch; Nx stellt sicher, dass diese Prüfungen schnell und genau sind.
- Verbesserte Sichtbarkeit – CI-Pipeline-Logs, Artefakt-Register und Build-Timelines werden in der Cloud gespeichert, wodurch sie über Teams hinweg auditierbar und teilbar sind.
So integrieren Sie Nx mit Cloud Collaboration Tools
Schritt 1: Richten Sie Ihr Cloud-Repository ein
Bei einem Monorepo initialisieren Sie das Repository wahrscheinlich mit einem , der , und Nx-Cache-Ordner ( oder ) ausschließt.
Schritt 2: Konfigurieren Sie Ihren Nx-Arbeitsbereich, um sich mit dem Repository zu verbinden
Wenn Sie bereits einen Nx-Arbeitsbereich haben, können Sie ihn mit einem entfernten Repository verknüpfen, indem Sie verwenden. Verwenden Sie für neue Projekte Nx-Projektgeneratoren (). Nach der Erstellung drücken Sie den ursprünglichen Commit. Es ist wichtig, Nx Cloud (Nxs eigener Remote-Caching-Dienst) zu aktivieren, um Build-Artefakte über Teammitglieder und CI-Läufer zu teilen. Die kostenlose Ebene deckt normalerweise kleine Teams ab, während kostenpflichtige Pläne für die Unternehmensnutzung gelten.
Konfigurieren Sie die -Datei Ihres Arbeitsbereichs, um Aufgabenpipelines, Caching-Regeln und betroffene Schwellenwerte zu definieren, z. B.:
{
"tasksRunnerOptions": {
"default": {
"runner": "nx/tasks-runners/default",
"options": {
"cacheableOperations": ["build", "test", "lint", "e2e"],
"accessToken": "…",
"canTrackAnalytics": false
}
}
}
}
Ersetzen Sie die durch eine, die aus dem Nx Cloud Dashboard generiert wurde.
Schritt 3: CI/CD-Pipelines für automatisiertes Testen und Deployment erstellen
Jede Cloud-Plattform hat ihre eigene Syntax zum Definieren von CI-Pipelines, aber die Kernlogik bleibt die gleiche: Führen Sie , und optional basierend auf den geänderten Dateien im Branch aus.
Nachfolgend finden Sie Beispiele für typische Plattformen.
GitHub-Aktionen
Erschaffen Sie [[([[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
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
Die -Aktion stellt sicher, dass Nx den korrekten Commit-Bereich vergleicht.
GitLab CI
Erschaffen Sie [[([[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]:
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/
Um Nx Cloud Remote Caching in GitLab zu verwenden, legen Sie die als CI-Umgebungsvariable frei.
Bitbucket Pipelines
Erschaffen Sie :
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
Verwenden Sie eine Datei:
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'
Setzen Sie als Pipeline-Variable.
Schritt 4: Verwenden Sie Webhooks oder API-Integrationen, um Builds auszulösen
Die meisten Cloud-Collaboration-Tools lösen bereits bei Push- oder Pull-Request-Ereignissen Pipelines automatisch aus. Möglicherweise möchten Sie jedoch Trigger verfeinern: Überspringen Sie beispielsweise CI für Änderungen, die nur für Dokumentationen erforderlich sind, oder führen Sie einen vollständigen Build nur beim Zusammenführen mit Main aus. Nx kann helfen, indem Sie betroffene Projekte vor dem vollständigen Pipeline-Lauf erkennen. Einige Teams implementieren einen Vorauftrag, der ausgeführt wird , um zu bestimmen, welche Anwendungen bereitgestellt werden müssen, und führen dann bedingt Bereitstellungsschritte aus.
Schritt 5: Überwachen und Optimieren des Workflows
Nach der Integration, Überprüfung der Pipeline-Statistik: durchschnittliche Zeit, Cache-Hitrate und Fehlerhäufigkeit. Nx Cloud bietet ein Dashboard, das die Cache-Nutzung und Aufgabenverteilung anzeigt. Cache-Regeln anpassen, Parallelität erhöhen oder Remote-Caching hinzufügen, wenn die Cache-Hitrate sinkt. Überprüfen Sie auch Branch-Schutzregeln - stellen Sie sicher, dass die erforderlichen Statusüberprüfungen mit den Pipeline-Schritten übereinstimmen und dass Sie PRs nicht unnötig für nicht verwandte Projekte blockieren.
Best Practices für Nx + Cloud Collaboration
- Verwenden Sie ein Single-Source-of-Truth-Repository – Speichern Sie den gesamten Code und die Konfiguration im Monorepo. Vermeiden Sie es, Konfigurationsdateien auf mehrere Repositorien aufzuteilen, um eine Drift zu verhindern.
- Adopt conventional commits – Verwenden Sie Präfixe wie , , , um Release Notes und Versionierung zu vereinfachen.
- Behalte Arbeitsbereiche gut strukturiert – Verwenden Sie Nx-Generatoren, um konsistente Projekte zu erstellen. Definieren Sie in , um Abhängigkeitsbeschränkungen durchzusetzen (z. B. „Apps können nicht aus anderen Apps importiert werden).
- Erzwingen Sie Code-Qualitätsgates – Verwenden Sie Linting-Regeln, Formatierungsprüfungen () und Typprüfungen in CI. Diese Schritte können parallel ausgeführt werden, achten Sie jedoch auf die Ressourcenzuweisung.
- Cache aggressiv – Aktivieren Sie Remote-Caching (Nx Cloud) nicht nur für Builds, sondern auch für Tests.
- Set up branch policies – Erfordern Sie Statusüberprüfungen aus der CI-Pipeline, erzwingen Sie lineare Historie und begrenzen Sie direkte Pushes auf main. Nx kann helfen, indem Sie eine Liste der betroffenen Projekte für die PR-Beschreibung erstellen.
- Dokument-Workflows – Erstellen Sie ein , das erklärt, wie Sie das Repository einrichten, Nx-Befehle ausführen und CI-Ausfälle interpretieren.
- Monitor Build-Kosten – Viele Cloud-Tools berechnen Build-Minuten. Nx reduziert Minuten, indem es nicht betroffene Projekte überspringt. Verwenden Sie außerdem selbst gehostete Läufer, wenn Sie hochfrequente Commits haben.
Mögliche Herausforderungen und wie man sie überwindet
Integration ist nicht ohne Hürden. Hier sind gemeinsame Probleme und Lösungen:
- Langer initialer CI-Lauf – Der erste Lauf nach dem Einrichten des Remote-Cachings wird langsam sein, weil kein Cache existiert.
- Cache-Ungültigkeit – Wenn Builds nicht deterministisch sind (z. B. Zeitstempel, Umgebungsvariablen), kann der Cache falsch wiederverwendet werden.
- Branch-Tiefe im Checkout – Nx erfordert die vollständige Git-Historie, um betroffene Projekte zu berechnen.
- Zugriff auf Token-Sicherheit – Speichern Sie und andere Geheimnisse als verschlüsselte Variablen in der CI/CD-Plattform, nicht im Repository.
- Pipeline-Komplexität – Wenn der Monorepo wächst, kann die Pipeline selbst mit Nx langsam werden.
Real-World Use Cases
Große Unternehmen profitieren bereits von dieser Integration. Zum Beispiel reduzierte ein Fintech-Unternehmen, das Nx mit GitLab nutzt, die CI-Zeit von 45 Minuten auf unter 5 Minuten für die meisten Pull-Anfragen. Sie erreichten dies, indem sie nur das Remote-Caching und das Ausführen betroffener Tests ermöglichten. Ein anderes Team, das GitHub Actions und Nx verwendete, verringerte ihre Ausfallrate um 70%, da PRs jetzt automatische Abhängigkeitsgraphen-Annotationen enthalten, die Rezensenten helfen, unbeabsichtigte Nebenwirkungen zu erkennen.
Startups nutzen diesen Stack, um die Geschwindigkeit aufrechtzuerhalten und gleichzeitig von 5 auf 50 Ingenieure zu wachsen. Ein SaaS-Startup ist von separaten Repositories zu einem Nx-Monorepo umgezogen, das mit Bitbucket Pipelines integriert ist, wodurch die Onboarding-Zeit der Entwickler von zwei Tagen auf zwei Stunden verkürzt und die Anzahl der Merge-Konflikte halbiert wurde.
Sicherheitsüberlegungen
Bei der Integration von Nx mit Cloud-Tools muss die Sicherheit angegangen werden:
- Abhängigkeits-Audits – Führen Sie oder in CI aus, um bekannte Schwachstellen zu erkennen.
- Geheimmanagement – Verpflichte niemals Geheimnisse. Verwenden Sie den Geheimspeicher der Cloud-Plattform (z. B. GitHub Secrets, GitLab CI Variables). Verwenden Sie für die lokale Entwicklung Dateien, die in aufgeführt sind.
- Build Environment Isolation – CI läuft in ephemeren Containern; wenn Sie jedoch selbst gehostete Läufer verwenden, stellen Sie sicher, dass sie gepatcht und isoliert sind.
- Supply Chain Attacks – Pinnen Sie Abhängigkeitsversionen in Paketsperrdateien an und ziehen Sie in Betracht, die Integritäts-Hashes von npm zu verwenden. Nx's Cache kann versehentlich ein kompromittiertes Artefakt verbreiten, daher ist es ratsam, signierte Commits durchzusetzen und Änderungen an Konfigurationsdateien zu überprüfen.
Performance Optimierung Tipps
Um das Beste aus den Geschwindigkeitsgewinnen von Nx in CI herauszuholen:
- Parallelisieren Sie maschinenübergreifend – Wenn Ihr Monorepo viele Projekte hat, verwenden Sie Nx Agents oder eine ähnliche verteilte Aufgabenausführung, um Aufgaben gleichzeitig auf mehreren CI-Maschinen auszuführen.
- Optimieren Node.js Speicher – Verwenden Sie , um Out-of-Memory-Fehler bei großen Builds zu verhindern.
- Verwenden Sie explizit – In Merge-Warteschlangen oder komplexen CI-Setups kann die manuelle Angabe des Basiszweigs falsche Diff-Berechnungen verhindern.
- Reduzieren Sie die Testfragmentierung – Gruppieren Sie kleine Unit-Tests nach Möglichkeit in einem einzigen Projekt. Nx kann sie parallel ausführen, aber zu viele kleine Projekte addieren Overhead.
- Cache node modules – Cloud CI Plattformen erlauben das Caching von und verwenden Sie dies, um bei jedem Lauf zu überspringen, es sei denn, ändert sich.
Externe Ressourcen
Für weitere Informationen konsultieren Sie:
- Nx CI Configuration Guide – Offizielle Dokumentation für die Einrichtung von CI mit verschiedenen Plattformen.
- GitHub-Aktionen für Node.js – Referenz für Pipeline-Schritte von GitHub-Aktionen.
- GitLab CI/CD YAML Specification – Details für die Konfiguration der GitLab-Pipeline.
- Azure Pipelines Dokumentation – So richten Sie Pipelines in Azure DevOps ein.
Die Integration von Nx mit Cloud-basierten Collaboration-Tools ist ein strategischer Schritt, der die Entwicklung beschleunigt, Konsistenz durchsetzt und mit Ihrem Team skaliert. Durch die Einhaltung der oben beschriebenen Schritte und Best Practices können Sie eine schnelle, sichere und wartbare CI/CD-Pipeline aufbauen, die die volle Leistungsfähigkeit des intelligenten Rechen-Cachings und der Cloud-nativen Zusammenarbeit von Nx nutzt. Beginnen Sie mit einem kleinen Pilotprojekt, messen Sie die Verbesserungen und erweitern Sie dann die Praxis in Ihrem Unternehmen. Die Investition in die Einrichtungszeit zahlt sich um ein Vielfaches in der Produktivität der Entwickler und dem Bereitstellungsvertrauen aus.