適用於 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 的電腦上執行,請重新啟動代理程式,以確保所有相關的階段變數都已更新。
本快速入門使用在以下任一指南中建立的資源作為起點︰
- 使用快速入門建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例:使用 Azure 入口網站 或快速入門建立 適用於 MySQL 的 Azure 資料庫 實例:使用 Azure 建立 適用於 MySQL 的 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 代理程式] 上執行時,請選取下列其中一項:bash 或 pscore 。 執行 [Windows 代理程式] 時,請選取下列其中一項:batch 、ps 與 pscore 。 |
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 工作發生問題,請參閱如何針對組建與版本進行疑難排解。 |