Share via


Azure-Pipelines-Aufgabe – Azure-Datenbank für PostgreSQL – Flexibler Server

GILT FÜR: Azure Database for PostgreSQL – Flexible Server

Sie können Ihre Datenbankupdates automatisch nach jedem erfolgreichen Build mit Azure Pipelines auf dem flexiblen Azure-Server für PostgreSQL bereitstellen. Mithilfe einer Azure CLI-Aufgabe können Sie die Datenbank entweder mit einer SQL-Datei oder einem Inline-SQL-Skript für die Datenbank aktualisieren. Diese Aufgabe kann auf plattformübergreifenden Agents unter den Betriebssystemen Linux, macOS oder Windows ausgeführt werden.

Voraussetzungen

  • Ein Azure-Konto. Falls Sie noch kein Konto haben, können Sie eine kostenlose Testversion verwenden.
  • Eine Azure Resource Manager-Dienstverbindung zu Ihrem Azure-Konto
  • Von Microsoft gehostete Agents verfügen über vorinstallierte Azure CLI. Wenn Sie aber private Agents verwenden, installieren Sie Azure CLI auf dem/den Computer(n), auf dem/denen der Build- und Release-Agent ausgeführt wird. Wenn ein Agent bereits auf dem Computer ausgeführt wird, auf dem die Azure CLI installiert ist, starten Sie den Agent neu, um sicherzustellen, dass alle relevanten Phasenvariablen aktualisiert werden.
  • Erstellen einer Azure-Datenbank für flexible Serverinstanz von PostgreSQL mithilfe des Azure-Portal oder der Azure CLI

Verwenden einer SQL-Datei

Im folgenden Beispiel wird gezeigt, wie Datenbankargumente übergeben und der Befehl execute ausgeführt wird.

- task: AzureCLI@2
  displayName: Azure CLI
  inputs:
    azureSubscription: <Name of the Azure Resource Manager service connection>
    scriptType: 'pscore'
    scriptLocation: inlineScript
    arguments:
      -SERVERNAME mydemoserver `
      -DBNAME pollsdb `
      -DBUSER pollsdbuser`
      -DBPASSWORD pollsdbpassword
    inlineScript: |
      az login --allow-no-subscription
      az postgres flexible-server execute --name $(SERVERNAME) \
      --admin-user $(DBUSER) --admin-password '$(DBPASSWORD)' \
      --database-name $(DBNAME) --file-path /code/sql/db-schema-update.sql

Verwenden eines Inline-SQL-Skripts

Im folgenden Beispiel wird gezeigt, wie ein Inline-SQL-Skript mit dem Befehl execute ausgeführt wird.

- task: AzureCLI@2
  displayName: Azure CLI
  inputs:
    azureSubscription: <Name of the Azure Resource Manager service connection>
    scriptType: 'pscore'
    scriptLocation: inlineScript
    arguments:
      -SERVERNAME mydemoserver `
      -DBNAME pollsdb `
      -DBUSER pollsdbuser`
      -DBPASSWORD pollsdbpassword
      -INLINESCRIPT 
    inlineScript: |
      az login --allow-no-subscription 
      az postgres flexible-server execute --name $(SERVERNAME) --admin-user $(DBUSER) \
      --admin-password '$(DBPASSWORD)'  --database-name $(DBNAME) \
      --querytext "UPDATE items SET items.retail = items.retail * 0.9 WHERE items.id =100;" 

Aufgabeneingaben

Sie können die vollständige Liste aller Aufgabeneingaben anzeigen, wenn Sie die Azure CLI-Aufgabe bei Azure Pipelines verwenden.

Parameter BESCHREIBUNG
azureSubscription (Erforderlich) Geben Sie das Azure Resource Manager-Abonnement für die Bereitstellung an. Dieser Parameter wird nur angezeigt, wenn die ausgewählte Aufgabenversion „0.*“ ist, weil die Azure CLI-Aufgabe v1.0 nur Azure Resource Manager-Abonnements unterstützt.
scriptType (Erforderlich) Geben Sie den Typ des Skripts an. Unterstützte Skripts sind PowerShell, PowerShell Core, Bat, Shell und Skript. Wenn Sie einen Linux-Agent ausführen, wählen Sie eine der folgenden Optionen aus: bash oder pscore. Wenn Sie einen Windows-Agent ausführen, wählen Sie eine der folgenden Optionen aus: batch, ps oder pscore.
scriptLocation (Erforderlich) Geben Sie den Pfad zum Skript an, z. B. den tatsächlichen Dateipfad, oder verwenden Sie Inline script, wenn Sie die Skripts inline bereitstellen. Der Standardwert ist scriptPath.
scriptPath (Erforderlich) Vollqualifizierter Pfad des Skripts („.ps1“, „.bat“ oder „.cmd“ bei Verwendung eines Windows-basierten Agents, oder aber .ps1 oder .sh bei Verwendung eines Linux-basierten Agents) oder ein Pfad relativ zum Standardarbeitsverzeichnis.
inlineScript (Erforderlich) Sie können Ihre Skripts hier inline schreiben. Wenn Sie einen Windows-Agent verwenden, verwenden Sie PowerShell oder PowerShell Core oder aber Batchskripts, während Sie bei Verwendung von Linux-basierten Agents PowerShell Core oder Shell-Skripts verwenden müssen. Verwenden Sie bei Batchdateien vor jedem Azure-Befehl das Präfix „call“. Sie können auch vordefinierte und benutzerdefinierte Variablen mithilfe von Argumenten an dieses Skript übergeben.
Beispiel für „PowerShell/PowerShellCore/shell“: az --version az account show
Beispiel für „Batch“: call az --version call az account show.
Argumente (Optional) Geben Sie alle Argumente an, die an das Skript übergeben werden. Beispiele: -SERVERNAME mydemoserver.
powerShellErrorActionPreference (Optional) Stellt dem Anfang Ihres PowerShell-/PowerShell Core-Skripts die Zeile $ErrorActionPreference = 'VALUE' voran. Der Standardwert ist „stop“. Unterstützte Werte sind „stop“, „continue“ und „silentlyContinue“.
addSpnToEnvironment (Optional) Fügt der Ausführungsumgebung des Skripts die Dienstprinzipal-ID und den Schlüssel des von Ihnen ausgewählten Azure-Endpunkts hinzu. Sie können in Ihrem Skript diese Variablen verwenden: „$env:servicePrincipalId“, „$env:servicePrincipalKey2“ und „$env:tenantId“. Dies wird nur berücksichtigt, wenn es beim Azure-Endpunkt ein Dienstprinzipal-Authentifizierungsschema gibt. Der Standardwert ist „FALSE“.
useGlobalConfig (Optional) Wenn der Wert „FALSE“ ist, verwendet diese Aufgabe ein eigenes separates Azure CLI-Konfigurationsverzeichnis. Es kann zur Ausführung von Azure CLI-Aufgaben in parallelen Releases verwendet werden.
Standardwert: False
workingDirectory (Optional) Aktuelles Arbeitsverzeichnis, in dem das Skript ausgeführt wird. „Leer“ ist der Stamm des Repositorys (Build) oder der Artefakte (Release), bei dem es sich um „$(System.DefaultWorkingDirectory)“ handelt.
failOnStandardError (Optional) Wenn der Wert „true“ ist, schlägt diese Aufgabe fehl, wenn Fehler in den „StandardError“-Stream geschrieben werden. Deaktivieren Sie das Kontrollkästchen, damit Standardfehler ignoriert werden, und verwenden Sie Exitcodes, um den Status zu bestimmen. Der Standardwert ist „FALSE“.
powerShellIgnoreLASTEXITCODE (Optional) Wenn der Wert „FALSE“ ist, wird die Zeile if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } am Ende Ihres Skripts angefügt. Dadurch wird der letzte Exitcode aus einem externen Befehl als Exitcode von PowerShell weitergegeben. Andernfalls wird die Zeile am Ende Ihres Skripts nicht angefügt. Der Standardwert ist „FALSE“.

Wenn Probleme bei der CLI-Aufgabe auftreten, lesen Sie Problembehandlung bei Build und Release.

Nächste Schritte

Im Folgenden finden Sie einige verwandte Aufgaben, die zum Bereitstellen mit Azure-Pipelines verwendet werden können.