Zum Hauptinhalt springen

Developer PowerShell

Developer PowerShell ist ein PowerShell-Profil, das für die Entwicklung optimiert ist. Es ist eine Sammlung von Skripten und Konfigurationen, die zum Einrichten einer Entwicklungsumgebung verwendet werden. Das Profil ist für den Einsatz mit der OctoMesh-Entwicklungsumgebung konzipiert.

Definitionen und Konzepte​

  • Main Repositories: Die meisten CoreService-Repositories einschließlich Tools.
  • Branch-Struktur: OctoMesh unterstützt Branch-basierte Entwicklung mit einer bestimmten Verzeichnisstruktur

Branch-Verzeichnisstruktur​

Die OctoMesh-Entwicklungsumgebung verwendet einen strukturierten Ansatz zur Verwaltung von Branches:

/Users/gerald/RiderProjects/meshmakers/
├── main/ # Main branch repositories
│ ├── octo-*/
│ ├── mm-*/
│ ├── nuget/
│ └── Octo.user.props
└── branches/ # Feature/development branches
├── feature-branch-1/ # Branch-specific repositories
│ ├── octo-*/
│ ├── mm-*/
│ ├── nuget/
│ └── Octo.user.props
└── feature-branch-2/
├── octo-*/
├── mm-*/
├── nuget/
└── Octo.user.props

Branch-Parameter: Viele PowerShell-Befehle unterstützen einen -branch-Parameter, um anzugeben, auf welchem Branch-Verzeichnis operiert werden soll:

  • Leerer String oder weggelassen: Operiert direkt auf dem Wurzelverzeichnis.
  • Main-Branch: Bei Angabe von main operieren die Skripte auf dem Verzeichnis main/.
  • Branch-Name: Operiert auf dem Branch-spezifischen Verzeichnis (Verzeichnis branches/{branch-name}/)

Benutzer​

Hier ist eine Liste von Benutzern, die für die Hauptdienste benötigt werden, um sich mit MongoDB zu verbinden.

UserDefault Password in dev environmentComment
octo-system-adminOctoAdmin1Benutzer zum Erstellen von Tenants und für Tenant-unabhängige Konfiguration
octo-system-ds-user-0OctoUser1Benutzer für die Datenbanken, 0 ist der Name der Datenbank in MongoDB.

PowerShell-Befehle​

Repository-Verwaltung​

CommandDescription
Invoke-CloneMainReposKlont alle Main-Repositories in Ihr Wurzelverzeichnis.
Sync-AllGitReposPullt alle Repositories, die mit octo-* oder mm-* beginnen. Branch-Parameter: -branch gibt das Branch-Verzeichnis an (leer = main).
Sync-GitRepoPullt ein Repository von GitHub, standardmäßig aus dem aktuellen Verzeichnis oder durch Definition eines Parameters repositoryPath.
Push-GitRepoPusht ein Repository zu GitHub, standardmäßig aus dem aktuellen Verzeichnis oder durch Definition eines Parameters repositoryPath.
Push-AllGitReposPusht alle Repositories, die mit octo-* oder mm-* beginnen.
Get-AllGitRepStatusRuft den Status aller Repositories ab, die mit octo-* und mm-* beginnen. Branch-Parameter: -branch gibt das Branch-Verzeichnis an (leer = main).
Compare-BranchStatusVergleicht den aktuellen Branch mit origin/main für alle octo-*- und mm-*-Verzeichnisse. Zeigt an, ob Commits Code-Änderungen, Submodul-Aktualisierungen oder Merges sind. Verwenden Sie -Details für Informationen auf Commit-Ebene.
Invoke-CleanAllGitReposBereinigt alle Repositories, die mit octo-* und mm-* beginnen. Der Parameter force ist standardmäßig auf false gesetzt.
Invoke-SwitchAllBranchesWechselt alle Repositories auf einen angegebenen Branch. Branch-Parameter: -branch gibt das Ziel-Branch-Verzeichnis an.

Submodul-Verwaltung​

CommandDescription
Sync-AllSubmodulesPullt alle Submodule aller Repositories, die mit octo-* beginnen.
Sync-SubmodulePullt alle Submodule eines Repositories von GitHub, standardmäßig aus dem aktuellen Verzeichnis oder durch Definition eines Parameters repositoryPath.

Build-Verwaltung​

CommandDescription
Invoke-BuildBaut ein Repository für .NET, standardmäßig aus dem aktuellen Verzeichnis oder durch Definition eines Parameters repositoryPath.
Invoke-BuildAllBaut alle Repositories, die mit octo-* beginnen und eine Solution-Datei (*.sln) haben. Branch-Parameter: -branch gibt das Branch-Verzeichnis an (leer = main).
Invoke-PublishPubliziert das aktuelle Verzeichnis, standardmäßig oder durch Definition eines Parameters repositoryPath. Verwendet standardmäßig die configuration Release.
Invoke-BuildAndStartOctoBaut alle Repositories und startet die Hauptdienste.
Remove-BinAndObjFoldersLöscht rekursiv bin- und obj-Ordner innerhalb des angegebenen path. Der Standardpfad ist .!

Dienst-Verwaltung​

CommandDescription
Start-OctoStartet die Hauptdienste. Siehe Parameter unten.
Stop-OctoStoppt Dienste, die im nicht-interaktiven Modus gestartet wurden (Start-Octo -nonInteractive $true), indem eine .octo-stop-Signaldatei geschrieben wird. Branch-Parameter: -branch gibt das Branch-Verzeichnis an.

Start-Octo Parameter​

ParameterTypeDefaultDescription
-branchString""Branch-Verzeichnis, auf dem operiert werden soll.
-configurationString"Release"Build-Konfiguration (Release/Debug).
-SystemDatabaseString"OctoSystem"Name der Systemdatenbank.
-botServiceBoolean$trueBot Service starten.
-identityServiceBoolean$trueIdentity Service starten.
-assetRepoServiceBoolean$trueAsset Repository Service starten.
-meshAdapterBoolean$trueMesh Adapter starten.
-meshAdapterTenantIdString"meshtest"Tenant-ID für den Mesh Adapter.
-meshAdapterIdString"66004fda527ac79a03ecedd7"Adapter-Runtime-ID für den Mesh Adapter.
-communicationControllerServiceBoolean$trueCommunication Controller Service starten.
-platformServicesBoolean$truePlatform Services starten (der _configuration-Discovery-Dienst, der das admin-panel ersetzt hat).
-reportingServiceBoolean$falseReporting Service starten.
-simulationAdapterBoolean$falseSimulation Adapter starten.
-simulationAdapterTenantIdString"meshtest"Tenant-ID für den Simulation Adapter.
-simulationAdapterIdString"65d5c447b420da3fb12381bc"Adapter-Runtime-ID für den Simulation Adapter.
-identityOnlyBoolean$falseStartet nur den Identity Service, ignoriert andere Dienstparameter.
-identityAssetRepoOnlyBoolean$falseStartet nur Identity und Asset Repository Services.

Beispiel mit Mesh-Adapter-Konfiguration:

Start-Octo -meshAdapterTenantId "mytenant" -meshAdapterId "abc123"

Beispiel mit Simulation Adapter:

Start-Octo -simulationAdapter $true -simulationAdapterTenantId "simtenant" -simulationAdapterId "def456"

Infrastruktur-Verwaltung​

Weitere Informationen zur Infrastruktur-Verwaltung und zu den Anforderungen finden Sie in der Infrastruktur-Dokumentation

CommandDescription
Install-OctoInfrastructureVerwendet die Docker-Compose-Datei unter infrastructure, um die Infrastruktur-Abhängigkeiten zusammenzustellen.
Uninstall-OctoInfrastructureDeinstalliert die Infrastruktur-Abhängigkeiten mithilfe der Docker-Compose-Datei unter infrastructure.
Start-OctoInfrastructureStartet die Infrastruktur-Abhängigkeiten mithilfe der Docker-Compose-Datei unter infrastructure.
Stop-OctoInfrastructureStoppt die Infrastruktur-Abhängigkeiten mithilfe der Docker-Compose-Datei unter infrastructure.
Get-OctoInfrastructureStatusRuft den Status der Container mithilfe der Docker-Compose-Datei unter infrastructure ab.
Invoke-KillDotnetNur Windows. Beendet alle dotnet-Prozesse. Dies ist notwendig, um Dateisperren während des Build-Prozesses zu vermeiden.

NuGet-Paketverwaltung​

CommandDescription
Copy-NuGetPackagesFindet NuGet-Pakete für die Version 999.0.0 und kopiert sie nach $NUGETPATH, standardmäßig aus dem aktuellen Verzeichnis oder durch Definition eines Parameters directory. Branch-Parameter: -branch gibt das Branch-Verzeichnis an.
Copy-AllNugetPackagesDurchsucht alle octo-*- und mm-*-Verzeichnisse nach NuGet-Paketen der Version 999.0.0 und kopiert sie nach $NUGETPATH.
Remove-GlobalNugetPackagesEntfernt im globalen NuGet-Paketordner ($GLOBALNUGETPACKAGESPATH) alle MeshMaker-NuGet-Pakete der Version 999.0.0. Branch-Parameter: -branch gibt das Branch-Verzeichnis an.
Sync-NugetPackagesKopiert, entfernt global und stellt NuGet-Pakete wieder her.

Branch-Verwaltung​

CommandDescription
New-TestBranchErstellt einen Test-Branch für alle octo-*-Repositories im Format /test/0.x-description und aktualisiert die Version in Directory.Build.props. Erforderliche Parameter: -Version (2-999), -Description. Optional: -NoPush, um das Pushen zum Remote zu überspringen.

CLI-Verwaltung​

CommandDescription
Register-OctoCliContextEinheitliche Kontextregistrierung für jede OctoMesh-Installation. Erforderliche Parameter: -Installation (der Name eines Eintrags im installations[]-Block Ihrer octo-tools-Konfiguration – z. B. local) und -TenantId. Optional: -UriSuffix (wird in den {0}-Platzhalter in Service-URL-Vorlagen eingesetzt, sodass ein einzelner Eintrag Preview-Sub-Umgebungen abdecken kann), -IncludeReporting, -IncludeAi, -NoSwitch (aktiven Kontext nicht wechseln), -NoLogin (interaktive Anmeldung überspringen). Ersetzt die früheren Invoke-OctoCliLogin{Local,Production,Staging,Test2}-Helfer.
Invoke-OctoCliReconfigureLogLevelErmöglicht das Neukonfigurieren der Log-Level von Identity, AssetRepository, Bot und CommunicationController. Erforderliche Parameter: loggerName, minLogLevel und maxLogLevel

Infrastruktur-Backup & MongoDB-Verwaltung​

Backups operieren auf den Docker-Volumes der Infrastruktur (MongoDB-Replica-Set und CrateDB-Cluster). Die Infrastruktur muss gestoppt sein (Stop-OctoInfrastructure), bevor ein Backup erstellt oder wiederhergestellt wird; Volumes bleiben erhalten. Backups werden unter infrastructure/backups/ gespeichert.

CommandDescription
Backup-OctoInfrastructureErstellt ein Backup aller Docker-Volumes der Infrastruktur (MongoDB + CrateDB). Optionaler Parameter: -Name (Standard ist ein yyyyMMdd-HHmmss-Zeitstempel).
Restore-OctoInfrastructureStellt Docker-Volumes der Infrastruktur aus einem benannten Backup wieder her. Erforderlicher Parameter: -Name. Ohne -Name ausführen, um verfügbare Backups aufzulisten.
Get-OctoInfrastructureBackupListet alle verfügbaren Backups mit Volume-Anzahl und Gesamtgröße auf.
Remove-OctoInfrastructureBackupLöscht ein benanntes Backup. Erforderlicher Parameter: -Name. Optional: -Force, um die Bestätigungsabfrage zu überspringen.
Invoke-MongoPortForwardLeitet den MongoDB-Dienst per Port-Forwarding weiter, um direkten Datenbankzugriff zu ermöglichen (z. B. über einen Mongo-Client).

Zertifikatsverwaltung​

CommandDescription
New-RootCertificateErstellt ein neues Root-Zertifikat für Entwicklungszwecke.
New-ServerCertificateErstellt ein neues Server-Zertifikat für Entwicklungszwecke.

Vorlagenverwaltung​

CommandDescription
Sync-YamlTemplatesSynchronisiert YAML-Vorlagen über Repositories hinweg.
Update-MeshmakerVersionAktualisiert MeshMaker-Versionsreferenzen über Repositories hinweg.

Repository-Erkennung​

CommandDescription
Find-AllGitReposFindet alle Git-Repositories in der aktuellen Verzeichnisstruktur.

Zusätzliche Build-Tools​

CommandDescription
Invoke-BuildZenonPlugBaut die Zenon-Plug-in-Komponenten.

Kubernetes-Verwaltung​

CommandDescription
Join-KubeConfigsFührt externe Kubernetes-Konfiguration mit der bestehenden ~/.kube/config-Datei zusammen. Der Parameter externalKubeConfig kann konfiguriert werden.
Remove-KubeConfigEntfernt Kubernetes-Konfiguration mit erforderlichem name-Parameter.

Beispiele für den Branch-Parameter​

Arbeiten mit dem Main-Branch (Standardverhalten):

Sync-AllGitRepos -branch "main" # Operates on main/ directory
Get-AllGitRepStatus -branch "main" # Shows status for main branch repos
Invoke-BuildAll -configuration Release -branch "main" # Builds main branch

Arbeiten mit Feature-Branches:

Sync-AllGitRepos -branch "branches/mcp" # Operates on branches/mcp/ directory
Get-AllGitRepStatus -branch "branches/feature-x" # Shows status for feature-x branch repos
Invoke-BuildAll -branch "branches/dev" -configuration Debug # Builds dev branch

Branch-Status-Vergleich:

Compare-BranchStatus # Quick overview of all octo-*/mm-* repos
Compare-BranchStatus -Details # Detailed view with individual commits

Test-Branches erstellen:

New-TestBranch -Version 5 -Description "feature-test" # Creates a branch named /test/0.5-feature-test and pushes it to remote
New-TestBranch -Version 10 -Description "bugfix" -NoPush # Creates branch locally only