Azure Pipelines görevi - PostgreSQL için Azure Veritabanı esnek sunucusu

Azure Pipelines kullanarak her başarılı derlemeden sonra veritabanı güncelleştirmelerinizi PostgreSQL için Azure Veri Tabanı esnek sunucunuza otomatik olarak dağıtabilirsiniz. Veritabanını, bir SQL dosyası ya da veritabanında çalıştırılan satır içi bir SQL betiği kullanarak güncelleştirmek için Azure CLI görevini kullanın. Bu görevi Linux, macOS veya Windows işletim sistemlerinde çalışan platformlar arası aracılarda çalıştırın.

Önkoşullar

SQL dosyasını kullanma

Aşağıdaki örnek, veritabanı bağımsız değişkenlerinin nasıl iletileceğini ve execute komutunun nasıl çalıştırılacağını göstermektedir.

- 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

Satır içi SQL betiğini kullanma

Aşağıdaki örnek, satır içi SQL betiğinin execute komutu kullanılarak nasıl çalıştırılacağını göstermektedir.

- 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;" 

Görev girdileri

Azure Pipelines ile Azure CLI görevini kullanırken tüm görev girişlerinin tam listesini görebilirsiniz.

Parametre Description
azureSubscription (Gerekli) Dağıtım için Azure Resource Manager aboneliğini sağlayın. Bu parametre yalnızca seçilen görev sürümü 0.* olduğunda gösterilir. Azure CLI görevi v1.0 yalnızca Azure Resource Manager aboneliklerini destekler.
scriptType (Gerekli) Betiğin türünü belirtin. Desteklenen betikler PowerShell, PowerShell Core, Bat, Shell ve betiktir. Linux aracısı üzerinde çalışırken aşağıdakilerden birini seçin: bash veya pscore. Windows aracısını çalıştırırken aşağıdakilerden birini seçin: batch, psve pscore.
scriptLocation (Gerekli) Komut dosyasının yolunu belirtin; örneğin gerçek bir dosya yolu girin ya da komut dosyalarını satır içi sağlıyorsanız Inline script kullanın. Varsayılan değer şudur: scriptPath.
scriptPath (Gerekli) Betiğin tam nitelikli yolu (Windows tabanlı aracı kullanırken .ps1, .bat veya .cmd; aksi takdirde Linux tabanlı aracı kullanırken .ps1 ya da .sh ) ya da varsayılan çalışma dizinine göreli bir yol.
inlineScript (Gerekli) Betiklerinizi burada satır içi olarak yazabilirsiniz. Windows aracısını kullanırken PowerShell, PowerShell Core veya toplu komut dosyası kullanın; Linux tabanlı aracıları kullanırken ise PowerShell Core veya kabuk komut dosyası kullanın. Toplu iş dosyaları için her Azure komutundan önce "call" ön ekini kullanın. Ayrıca, önceden tanımlanmış ve özel değişkenleri bu betiğe argümanlar kullanarak da iletebilirsiniz.
PowerShell/PowerShellCore/shell örneği: az --version az account show
Toplu işlem örneği: call az --version call az account show.
arguments (İsteğe bağlı) Betiğe geçirilen tüm bağımsız değişkenleri belirtin. Örnekler için -SERVERNAME mydemoserver.
powerShellErrorActionPreference (İsteğe bağlı) PowerShell/PowerShell Core betiğinizin en üstüne $ErrorActionPreference = 'DEĞER' satırını ekler. Varsayılan değer stop değeridir. Desteklenen değerler stop, continue ve silentlyContinue değerleridir.
addSpnToEnvironment (İsteğe bağlı) Seçtiğiniz Azure uç noktasının hizmet sorumlusu kimliğini ve anahtarını betiğin yürütme ortamına ekler. Betiğinizde şu değişkenleri kullanabilirsiniz: $env:servicePrincipalId, $env:servicePrincipalKey ve $env:tenantId . Bu, yalnızca Azure uç noktası Hizmet Asıl kimlik doğrulama şemasına sahip olduğunda geçerlidir. Varsayılan değer yanlıştır.
useGlobalConfig (İsteğe bağlı) Bu yanlışsa, bu görev kendi ayrı Azure CLI yapılandırma dizinini kullanır. Bu, Azure CLI görevlerini paralel sürümlerde çalıştırmak için kullanılabilir"
Varsayılan değer: false
çalışmaDizini (İsteğe bağlı) Betiğin çalıştırıldığı geçerli çalışma dizini. Boş değer, deponun (derleme) veya artefaktların (sürüm) köküdür; bu da $(System.DefaultWorkingDirectory) dizinidir.
failOnStandardError (İsteğe bağlı) Bu doğruysa, hatalar StandardError akışına yazıldığında bu görev başarısız olur. Standart hataları yok saymak ve durumu çıkış kodlarına dayanarak belirlemek için onay kutusunun işaretini kaldırın. Varsayılan değer yanlıştır.
powerShellIgnoreLASTEXITCODE (İsteğe bağlı) Bunun değeri false ise, if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } satırı betiğinizin sonuna eklenir. Bu, bir dış komuttan son çıkış kodunun PowerShell'in çıkış kodu olarak yayılmasına neden olur. Aksi takdirde, satır betiğinizin sonuna eklenmez. Varsayılan değer yanlıştır.

CLI Görevi'nde sorun yaşıyorsanız, Derleme ve Sürüm sorunlarının nasıl giderileceğine bakın.