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.
| User | Default Password in dev environment | Comment |
|---|
| octo-system-admin | OctoAdmin1 | Benutzer zum Erstellen von Tenants und für Tenant-unabhängige Konfiguration |
| octo-system-ds-user-0 | OctoUser1 | Benutzer für die Datenbanken, 0 ist der Name der Datenbank in MongoDB. |
PowerShell-Befehle
Repository-Verwaltung
| Command | Description |
|---|
| Invoke-CloneMainRepos | Klont alle Main-Repositories in Ihr Wurzelverzeichnis. |
| Sync-AllGitRepos | Pullt alle Repositories, die mit octo-* oder mm-* beginnen. Branch-Parameter: -branch gibt das Branch-Verzeichnis an (leer = main). |
| Sync-GitRepo | Pullt ein Repository von GitHub, standardmäßig aus dem aktuellen Verzeichnis oder durch Definition eines Parameters repositoryPath. |
| Push-GitRepo | Pusht ein Repository zu GitHub, standardmäßig aus dem aktuellen Verzeichnis oder durch Definition eines Parameters repositoryPath. |
| Push-AllGitRepos | Pusht alle Repositories, die mit octo-* oder mm-* beginnen. |
| Get-AllGitRepStatus | Ruft den Status aller Repositories ab, die mit octo-* und mm-* beginnen. Branch-Parameter: -branch gibt das Branch-Verzeichnis an (leer = main). |
| Compare-BranchStatus | Vergleicht 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-CleanAllGitRepos | Bereinigt alle Repositories, die mit octo-* und mm-* beginnen. Der Parameter force ist standardmäßig auf false gesetzt. |
| Invoke-SwitchAllBranches | Wechselt alle Repositories auf einen angegebenen Branch. Branch-Parameter: -branch gibt das Ziel-Branch-Verzeichnis an. |
Submodul-Verwaltung
| Command | Description |
|---|
| Sync-AllSubmodules | Pullt alle Submodule aller Repositories, die mit octo-* beginnen. |
| Sync-Submodule | Pullt alle Submodule eines Repositories von GitHub, standardmäßig aus dem aktuellen Verzeichnis oder durch Definition eines Parameters repositoryPath. |
Build-Verwaltung
| Command | Description |
|---|
| Invoke-Build | Baut ein Repository für .NET, standardmäßig aus dem aktuellen Verzeichnis oder durch Definition eines Parameters repositoryPath. |
| Invoke-BuildAll | Baut alle Repositories, die mit octo-* beginnen und eine Solution-Datei (*.sln) haben. Branch-Parameter: -branch gibt das Branch-Verzeichnis an (leer = main). |
| Invoke-Publish | Publiziert das aktuelle Verzeichnis, standardmäßig oder durch Definition eines Parameters repositoryPath. Verwendet standardmäßig die configuration Release. |
| Invoke-BuildAndStartOcto | Baut alle Repositories und startet die Hauptdienste. |
| Remove-BinAndObjFolders | Löscht rekursiv bin- und obj-Ordner innerhalb des angegebenen path. Der Standardpfad ist .! |
Dienst-Verwaltung
| Command | Description |
|---|
| Start-Octo | Startet die Hauptdienste. Siehe Parameter unten. |
| Stop-Octo | Stoppt 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
| Parameter | Type | Default | Description |
|---|
-branch | String | "" | Branch-Verzeichnis, auf dem operiert werden soll. |
-configuration | String | "Release" | Build-Konfiguration (Release/Debug). |
-SystemDatabase | String | "OctoSystem" | Name der Systemdatenbank. |
-botService | Boolean | $true | Bot Service starten. |
-identityService | Boolean | $true | Identity Service starten. |
-assetRepoService | Boolean | $true | Asset Repository Service starten. |
-meshAdapter | Boolean | $true | Mesh Adapter starten. |
-meshAdapterTenantId | String | "meshtest" | Tenant-ID für den Mesh Adapter. |
-meshAdapterId | String | "66004fda527ac79a03ecedd7" | Adapter-Runtime-ID für den Mesh Adapter. |
-communicationControllerService | Boolean | $true | Communication Controller Service starten. |
-platformServices | Boolean | $true | Platform Services starten (der _configuration-Discovery-Dienst, der das admin-panel ersetzt hat). |
-reportingService | Boolean | $false | Reporting Service starten. |
-simulationAdapter | Boolean | $false | Simulation Adapter starten. |
-simulationAdapterTenantId | String | "meshtest" | Tenant-ID für den Simulation Adapter. |
-simulationAdapterId | String | "65d5c447b420da3fb12381bc" | Adapter-Runtime-ID für den Simulation Adapter. |
-identityOnly | Boolean | $false | Startet nur den Identity Service, ignoriert andere Dienstparameter. |
-identityAssetRepoOnly | Boolean | $false | Startet 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
| Command | Description |
|---|
| Install-OctoInfrastructure | Verwendet die Docker-Compose-Datei unter infrastructure, um die Infrastruktur-Abhängigkeiten zusammenzustellen. |
| Uninstall-OctoInfrastructure | Deinstalliert die Infrastruktur-Abhängigkeiten mithilfe der Docker-Compose-Datei unter infrastructure. |
| Start-OctoInfrastructure | Startet die Infrastruktur-Abhängigkeiten mithilfe der Docker-Compose-Datei unter infrastructure. |
| Stop-OctoInfrastructure | Stoppt die Infrastruktur-Abhängigkeiten mithilfe der Docker-Compose-Datei unter infrastructure. |
| Get-OctoInfrastructureStatus | Ruft den Status der Container mithilfe der Docker-Compose-Datei unter infrastructure ab. |
| Invoke-KillDotnet | Nur Windows. Beendet alle dotnet-Prozesse. Dies ist notwendig, um Dateisperren während des Build-Prozesses zu vermeiden. |
NuGet-Paketverwaltung
| Command | Description |
|---|
| Copy-NuGetPackages | Findet 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-AllNugetPackages | Durchsucht alle octo-*- und mm-*-Verzeichnisse nach NuGet-Paketen der Version 999.0.0 und kopiert sie nach $NUGETPATH. |
| Remove-GlobalNugetPackages | Entfernt im globalen NuGet-Paketordner ($GLOBALNUGETPACKAGESPATH) alle MeshMaker-NuGet-Pakete der Version 999.0.0. Branch-Parameter: -branch gibt das Branch-Verzeichnis an. |
| Sync-NugetPackages | Kopiert, entfernt global und stellt NuGet-Pakete wieder her. |
Branch-Verwaltung
| Command | Description |
|---|
| New-TestBranch | Erstellt 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
| Command | Description |
|---|
| Register-OctoCliContext | Einheitliche 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-OctoCliReconfigureLogLevel | Ermö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.
| Command | Description |
|---|
| Backup-OctoInfrastructure | Erstellt ein Backup aller Docker-Volumes der Infrastruktur (MongoDB + CrateDB). Optionaler Parameter: -Name (Standard ist ein yyyyMMdd-HHmmss-Zeitstempel). |
| Restore-OctoInfrastructure | Stellt Docker-Volumes der Infrastruktur aus einem benannten Backup wieder her. Erforderlicher Parameter: -Name. Ohne -Name ausführen, um verfügbare Backups aufzulisten. |
| Get-OctoInfrastructureBackup | Listet alle verfügbaren Backups mit Volume-Anzahl und Gesamtgröße auf. |
| Remove-OctoInfrastructureBackup | Löscht ein benanntes Backup. Erforderlicher Parameter: -Name. Optional: -Force, um die Bestätigungsabfrage zu überspringen. |
| Invoke-MongoPortForward | Leitet den MongoDB-Dienst per Port-Forwarding weiter, um direkten Datenbankzugriff zu ermöglichen (z. B. über einen Mongo-Client). |
Zertifikatsverwaltung
| Command | Description |
|---|
| New-RootCertificate | Erstellt ein neues Root-Zertifikat für Entwicklungszwecke. |
| New-ServerCertificate | Erstellt ein neues Server-Zertifikat für Entwicklungszwecke. |
Vorlagenverwaltung
| Command | Description |
|---|
| Sync-YamlTemplates | Synchronisiert YAML-Vorlagen über Repositories hinweg. |
| Update-MeshmakerVersion | Aktualisiert MeshMaker-Versionsreferenzen über Repositories hinweg. |
Repository-Erkennung
| Command | Description |
|---|
| Find-AllGitRepos | Findet alle Git-Repositories in der aktuellen Verzeichnisstruktur. |
| Command | Description |
|---|
| Invoke-BuildZenonPlug | Baut die Zenon-Plug-in-Komponenten. |
Kubernetes-Verwaltung
| Command | Description |
|---|
| Join-KubeConfigs | Führt externe Kubernetes-Konfiguration mit der bestehenden ~/.kube/config-Datei zusammen. Der Parameter externalKubeConfig kann konfiguriert werden. |
| Remove-KubeConfig | Entfernt Kubernetes-Konfiguration mit erforderlichem name-Parameter. |
Beispiele für den Branch-Parameter
Arbeiten mit dem Main-Branch (Standardverhalten):
Sync-AllGitRepos -branch "main"
Get-AllGitRepStatus -branch "main"
Invoke-BuildAll -configuration Release -branch "main"
Arbeiten mit Feature-Branches:
Sync-AllGitRepos -branch "branches/mcp"
Get-AllGitRepStatus -branch "branches/feature-x"
Invoke-BuildAll -branch "branches/dev" -configuration Debug
Branch-Status-Vergleich:
Compare-BranchStatus
Compare-BranchStatus -Details
Test-Branches erstellen:
New-TestBranch -Version 5 -Description "feature-test"
New-TestBranch -Version 10 -Description "bugfix" -NoPush