Azure-Pipelines-Aufgabe – Azure Database for PostgreSQL flexible Server

Sie können Ihre Datenbankupdates nach jedem erfolgreichen Build automatisch auf Ihrem Azure Database for PostgreSQL flexiblen Server bereitstellen, indem Sie Azure Pipelines verwenden. Verwenden Sie die Azure CLI Aufgabe, um die Datenbank entweder mit einer SQL-Datei oder einem Inline-SQL-Skript für die Datenbank zu aktualisieren. Führen Sie diese Aufgabe auf plattformübergreifenden Agents aus, die unter Linux, macOS oder Windows Betriebssystemen ausgeführt werden.

Voraussetzungen

Verwenden einer SQL-Datei

Im folgenden Beispiel wird veranschaulicht, wie Datenbankargumente übergeben und der execute Befehl 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 veranschaulicht, wie sie mithilfe des execute Befehls ein Inline-SQL-Skript ausführen.

- 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 Description
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 den Windows-Agent ausführen, wählen Sie eine der folgenden Möglichkeiten: batch, ps, und 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 für Batch-Dateien das Präfix „call“ vor jedem Azure-Befehl. 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.
arguments (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 dies false ist, verwendet diese Aufgabe ihr 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 dies 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. Dies bewirkt, dass der letzte Exit Code eines externen Befehls als Exit Code der PowerShell propagiert wird. Andernfalls wird die Zeile nicht an das Ende Ihres Skripts angehängt. Der Standardwert ist "false".

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