Ein verteiltes Build-System mit LocalNetAppChat. Dieses Szenario zeigt, wie Sie Build-Aufgaben auf mehrere Worker verteilen können.
Dieses Szenario enthält alle notwendigen Scripts und Beispielprojekte:
build-task.ps1- Einfacher Build-Worker für Beispielzweckebuild-dotnet-project.ps1- Vollständiger Build-Worker für .NET-Projektebuild-status-reporter.ps1- Status-Reporting für Build-Fortschritt
build-scheduler.py- Einfacher Build-Schedulerbuild-scheduler-advanced.py- Erweiterter Scheduler mit Dependency-Managementbuild-monitor.py- Echtzeit-Monitoring für Build-Status
ProjectA.csproj/ProjectA.cs- Standalone KonsolenanwendungProjectB.csproj/Calculator.cs- Bibliothek mit Calculator-KlasseProjectC.csproj/ProjectC.cs- Anwendung mit Abhängigkeit zu ProjectB
- Build Master: Verteilt Build-Tasks an Worker
- Build Workers: Führen Kompilierung aus
- Status Monitor: Zeigt Build-Status an
cd Source/LocalNetAppChat/LocalNetAppChat.Server
dotnet run -- --port 5000 --key "build123"Für einfache Tests:
cd Source/LocalNetAppChat/LocalNetAppChat.ConsoleClient
dotnet run -- taskreceiver --server localhost --port 5000 --key "build123" --tags "build,compile" --processor "../../docs/scenarios/distributed-build/scripts/build-task.ps1"Für echte .NET-Builds:
cd Source/LocalNetAppChat/LocalNetAppChat.ConsoleClient
dotnet run -- taskreceiver --server localhost --port 5000 --key "build123" --tags "build,compile" --processor "../../docs/scenarios/distributed-build/scripts/build-dotnet-project.ps1"cd Source/LocalNetAppChat/LocalNetAppChat.ConsoleClient
dotnet run -- listener --server localhost --port 5000 --key "build123" --clientName "BuildMonitor" | python3 ../../docs/scenarios/distributed-build/python/build-monitor.pyEinfacher Scheduler:
cd Source/LocalNetAppChat/LocalNetAppChat.ConsoleClient
dotnet run -- emitter --server localhost --port 5000 --key "build123" --clientName "BuildMaster" --command "python3 -u ../../docs/scenarios/distributed-build/python/build-scheduler.py"Erweiterter Scheduler mit Dependencies:
cd Source/LocalNetAppChat/LocalNetAppChat.ConsoleClient
dotnet run -- emitter --server localhost --port 5000 --key "build123" --clientName "BuildMaster" --command "python3 -u ../../docs/scenarios/distributed-build/python/build-scheduler-advanced.py"Die bereitgestellten Beispielprojekte können direkt gebaut werden:
# Aus dem example-projects Verzeichnis
cd docs/scenarios/distributed-build/example-projects
dotnet build ProjectA.csproj
dotnet build ProjectB.csproj
dotnet build ProjectC.csproj # Benötigt ProjectB- Build-Scripts anpassen: Modifizieren Sie
build-dotnet-project.ps1für Ihre spezifischen Build-Anforderungen - Scheduler erweitern: Passen Sie
build-scheduler-advanced.pyan Ihre Projekt-Dependencies an - Monitoring verbessern: Erweitern Sie
build-monitor.pyfür detailliertere Statistiken
- Build Master sendet Tasks mit Projekt-Informationen
- Worker empfangen Tasks basierend auf Tags
- Worker führen Build-Script aus und senden Status-Updates
- Monitor aggregiert Status-Informationen in Echtzeit
- Mehrere Worker können gleichzeitig verschiedene Projekte bauen
- Der erweiterte Scheduler gruppiert Projekte nach Dependency-Level
- Projekte ohne Dependencies werden parallel gebaut
- Parallelität: Starten Sie mehrere Worker für parallele Builds
- Fehlerbehandlung: Die Scripts enthalten bereits grundlegende Fehlerbehandlung
- Notifications: Fügen Sie einen Bot hinzu, der bei Fehlern benachrichtigt
- Statistiken: Nutzen Sie build-monitor.py für Build-Zeit-Analysen
- Artefakt-Management: Erweitern Sie für Upload von Build-Artefakten zum Server
- Verwenden Sie eindeutige Task-Namen
- Implementieren Sie Timeouts für lange Builds
- Loggen Sie alle Build-Ausgaben
- Nutzen Sie Tags für verschiedene Build-Typen (debug, release, test)
- Testen Sie zunächst mit den Beispielprojekten bevor Sie produktive Builds durchführen
- Überprüfen Sie die Tag-Übereinstimmung zwischen Scheduler und Worker
- Stellen Sie sicher, dass Server und Key korrekt sind
- Prüfen Sie die Pfade in den Build-Scripts
- Stellen Sie sicher, dass .NET SDK installiert ist
- Überprüfen Sie die Projekt-Dependencies
- Stellen Sie sicher, dass Python 3 installiert ist
- Prüfen Sie, ob die Pipe zwischen Client und Python-Script funktioniert