Einrichten einer CI/CD-Pipeline mit dem Buildtask des Azure Cosmos DB-Emulators in Azure DevOps

GILT FÜR: NoSQL MongoDB Cassandra Gremlin Tabelle

Hinweis

Aufgrund der vollständigen Entfernung der von Windows 2016 gehosteten Runner am 1. April 2022 wird diese Methode zur Verwendung des Azure Cosmos DB-Emulators mit Buildtasks in Azure DevOps nicht mehr unterstützt. Wir arbeiten aktiv an alternativen Lösungen. In der Zwischenzeit können Sie mithilfe der folgenden Anweisungen den Azure Cosmos DB-Emulator nutzen, der bei Verwendung des Agenttyps „windows-2019“ vorinstalliert ist.

Der Azure Cosmos DB-Emulator stellt eine lokale Umgebung bereit, die zu Entwicklungszwecken den Azure Cosmos DB-Dienst emuliert. Mithilfe des Emulators können Sie Ihre Anwendung lokal entwickeln und testen, ohne ein Azure-Abonnement zu erstellen oder sonstige Kosten zu verursachen.

PowerShell-Task für Emulator

Für einen typischen PowerShell-basierten Task, der den Azure Cosmos DB-Emulator startet, kann ein Skript wie folgt erstellt werden:

Beispiel für eine Auftragskonfiguration bei Auswahl des Agenttyps „windows-2019“. Screenshot der Auftragskonfiguration in Windows 2019

Beispiel für einen Task, der das PowerShell-Skript ausführt, das zum Starten des Emulators erforderlich ist.

Screenshot der Ausführung des Powershell-Skripts zum Starten des Emulators


# Write your PowerShell commands here.

dir "C:\Program Files\Azure Cosmos DB Emulator\"

Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator"

$startEmulatorCmd = "Start-CosmosDbEmulator -NoFirewall -NoUI"
Write-Host $startEmulatorCmd
Invoke-Expression -Command $startEmulatorCmd

# Pipe an emulator info object to the output stream

$Emulator = Get-Item "$env:ProgramFiles\Azure Cosmos DB Emulator\Microsoft.Azure.Cosmos.Emulator.exe"
$IPAddress = Get-NetIPAddress -AddressFamily IPV4 -AddressState Preferred -PrefixOrigin Manual | Select-Object IPAddress

New-Object PSObject @{
Emulator = $Emulator.BaseName
Version = $Emulator.VersionInfo.ProductVersion
Endpoint = @($(hostname), $IPAddress.IPAddress) | ForEach-Object { "https://${_}:8081/" }
MongoDBEndpoint = @($(hostname), $IPAddress.IPAddress) | ForEach-Object { "mongodb://${_}:10255/" }
CassandraEndpoint = @($(hostname), $IPAddress.IPAddress) | ForEach-Object { "tcp://${_}:10350/" }
GremlinEndpoint = @($(hostname), $IPAddress.IPAddress) | ForEach-Object { "http://${_}:8901/" }
TableEndpoint = @($(hostname), $IPAddress.IPAddress) | ForEach-Object { "https://${_}:8902/" }
IPAddress = $IPAddress.IPAddress
}

Sie haben auch die Möglichkeit, Ihren eigenen selbstgehosteten Windows-Agent zu erstellen, wenn Sie einen Agent mit nicht vorinstalliertem Azure Cosmos DB-Emulator einsetzen möchten. Auf Ihrem selbstgehosteten Agent können Sie das neueste MSI-Paket des Emulators mithilfe von curl oder wget von https://aka.ms/cosmosdb-emulator herunterladen und es dann mit msiexec und der Option „quiet“ unbeaufsichtigt installieren. Nach der Installation können Sie ein ähnliches PowerShell-Skript wie das oben gezeigte ausführen, um den Emulator zu starten.

Nächste Schritte

Weitere Informationen zum Verwenden des Emulators für lokale Entwicklungs- und Testvorgänge finden Sie unter Verwenden des Azure Cosmos DB-Emulators für lokale Entwicklungs- und Testvorgänge.

Informationen zum Exportieren von TLS-/SSL-Emulatorzertifikaten finden Sie unter Exportieren der Azure Cosmos DB-Emulatorzertifikate für die Verwendung mit Java, Python und Node.js.