共用方式為


適用於 MySQL 的 Azure 資料庫 - 彈性伺服器的 Azure Pipelines

每次使用 Azure Pipelines 成功建置之後,都可以自動將資料庫更新部署至適用於 MySQL 的 Azure 資料庫彈性伺服器。 您可以使用 Azure CLI 工作,以 SQL 檔案或內嵌 SQL 指令碼來更新資料庫。 此工作可在 Linux、macOS 或 Windows 作業系統上執行的跨平台代理程式上執行。

必要條件

  • Azure 帳戶。 如果您沒有帳戶,請取得免費試用帳戶

  • 您 Azure 帳戶的Azure Resource Manager 服務連線

  • Microsoft 裝載的代理程式已預先安裝 Azure CLI。 然而,若您使用的是私人代理程式,請在執行組建及發行代理程式的電腦上安裝 Azure CLI。 若代理程式已在安裝 Azure CLI 的電腦上執行,請重新啟動代理程式,以確保所有相關的階段變數都已更新。

本快速入門使用在以下任一指南中建立的資源作為起點︰

使用 SQL 檔案

下列範例說明如何傳遞資料庫引數及執行 execute 命令

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

使用內嵌 SQL 指令碼

下列範例說明如何使用 execute 命令執行內嵌 SQL 指令碼。

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

工作輸入

使用 Azure CLI 工作搭配 Azure Pipelines 時,您可以看到所有工作輸入的完整清單。

參數 描述
azureSubscription (必要) 請為部署提供 Azure Resource Manager 訂閱。 此參數只有在選取的工作版本為 0.* 時,才會顯示,因為 Azure CLI 工作 v1.0 僅支援 Azure Resource Manager 訂閱。
scriptType (必要) 提供指令碼類型。 支援的指令碼包括 PowerShell、PowerShell Core、Bat、Shell 與指令碼。 在 [Linux 代理程式] 上執行時,請選取下列其中一項:bashpscore。 執行 [Windows 代理程式] 時,請選取下列其中一項:batchpspscore
scriptLocation (必要) 提供指令碼的路徑,例如:真實檔案路徑,或在提供內嵌指令碼時使用 Inline script。 預設值是 scriptPath
scriptPath (必要) 指令碼的完整路徑 (使用以 Windows 為主的代理程式時為 .ps1、.bat 或 .cmd,或使用以 Linux 為主的代理程式時為 .ps1 .sh ),或相對於預設工作目錄的路徑。
inlineScript (必要) 您可以在此處撰寫內嵌指令碼。 使用 Windows 代理程式時,請使用 PowerShell、PowerShell Core 或批次指令碼,而使用以 Linux 為主的代理程式時,請使用 PowerShell Core 或殼層指令碼。 針對批次檔案,請在每個 Azure 命令之前使用前置詞 "call"。 您也可以使用引數將預先定義及自訂的變數傳遞至此指令碼。
PowerShell/PowerShellCore/殼層的範例: az --version az account show
批次的範例: call az --version call az account show
引數 (選用) 提供傳遞至指令碼的所有引數。 例如:-SERVERNAME mydemoserver
powerShellErrorActionPreference (選用) 請在 PowerShell/PowerShell Core 指令碼的頂端前面加上 $ErrorActionPreference = 'VALUE' 這行程式碼。 預設值為 stop。 支援的值為 stop、continue 與 silentlyContinue。
addSpnToEnvironment (選用) 將所選 Azure 端點的服務主體識別碼與金鑰新增至指令碼的執行環境。 您可以在指令碼中使用下列變數:$env:servicePrincipalId、$env:servicePrincipalKey 與 $env:tenantId。 僅在 Azure 端點具有服務主體驗證配置時,才會接受此作業。 預設值為 false。
useGlobalConfig (選擇性)如果這是 false,此工作將會使用自己的個別 Azure CLI 組態目錄 Azure CLI 組態目錄Azure CLI 組態目錄。 這可用來以平行版本執行 Azure CLI 工作」
預設值:false
workingDirectory (選用) 執行指令碼的目前工作目錄。 空白是存放庫 (組建) 或成品 (版本) 的根目錄,也就是 $(System.DefaultWorkingDirectory)。
failOnStandardError (選用) 若此為 true,則任何錯誤寫入 StandardError 資料流時,此工作便會失敗。 取消選取核取方塊以忽略標準錯誤,並依賴結束代碼來判斷狀態。 預設值為 false。
powerShellIgnoreLASTEXITCODE (選用) 若此為 false,則程式碼 if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } 會附加至指令碼結尾。 這會導致外部命令的最後一個結束代碼傳傳送為 PowerShell 的結束代碼。 否則該程式碼不會附加至指令碼結尾。 預設值為 false。
若 CLI 工作發生問題,請參閱如何針對組建與版本進行疑難排解