使用 GitHub Actions 部署 ARM 範本
GitHub Actions 為 GitHub 中的一組功能,其可在與您儲存程式碼相同的位置將您的軟體開發工作流程自動化,並針對提取要求和問題進行共同作業。
使用 [部署 Azure Resource Manager 範本動作],自動將 Azure Resource Manager 範本 (ARM 範本) 部署到 Azure。
必要條件
具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
GitHub 帳戶。 如果您沒有 Microsoft 帳戶,請免費註冊。
- GitHub 存放庫,以儲存 Resource Manager 範本和工作流程檔案。 若要建立一個,請參閱建立新的存放庫 \(英文\)。
工作流程檔案概觀
工作流程是由您存放庫內 /.github/workflows/
路徑中的 YAML (. yml) 檔案所定義的。 此定義包含組成工作流程的各種步驟與參數。
檔案內有兩個區段:
區段 | 工作 |
---|---|
驗證 | 1.產生部署認證。 |
部署 | 1.部署 Resource Manager 範本。 |
產生部署認證
使用 Azure CLI 中的 az ad sp create-for-rbac 命令來建立服務主體。 請使用 Azure 入口網站中的 Azure Cloud Shell,或選取 [試試看] 按鈕來執行此命令。
az ad sp create-for-rbac --name "myML" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
--json-auth
參數 --json-auth
可在 Azure CLI 版本 >= 2.51.0 中使用。 此版本之前的版本會搭配取代警告使用 --sdk-auth
。
在上述範例中,將預留位置換成為您的訂用帳戶識別碼、資源群組名稱和應用程式名稱。 輸出是一個 JSON 物件,內有角色指派認證可讓您存取 App Service 應用程式,如下所示。 複製此 JSON 物件以供後續使用。
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
設定 GitHub 祕密
在 GitHub (英文) 中,前往您的存放庫。
移至導覽功能表中的 [設定]。
選取 [安全性] > [祕密和變數] > [動作]。
選取 [新增存放庫祕密]。
將得自 Azure CLI 命令的整個 JSON 輸出貼到祕密的 [值] 欄位中。 將祕密命名為
AZURE_CREDENTIALS
。選取 [新增祕密]。
新增 Resource Manager 範本
將 Resource Manager 範本新增至您的 GitHub 存放庫。 此範本會建立儲存體帳戶。
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
您可以將檔案放置於存放庫中的任何位置。 下一節的工作流程範例假設範本檔案名稱為 azuredeploy.json,且會儲存於存放庫根目錄中。
建立工作流程
工作流程檔案必須儲存於存放庫根目錄的 .github/workflow 資料夾中。 工作流程副檔名可以是 .yml 或 .yaml。
- 從您的 GitHub 存放庫,選取頂端功能表中的 [動作]。
- 選取 [新增工作流程]。
- 選取 [自行設定工作流程]。
- 如果您偏好使用 main.yml 以外的其他名稱,請將工作流程檔案重新命名。 例如:deployStorageAccount.yml。
- 以下列內容取代 yml 檔案的內容:
on: [push]
name: Azure ARM
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# Checkout code
- uses: actions/checkout@main
# Log into Azure
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
# Deploy ARM template
- name: Run ARM deploy
uses: azure/arm-deploy@v1
with:
subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
resourceGroupName: ${{ secrets.AZURE_RG }}
template: ./azuredeploy.json
parameters: storageAccountType=Standard_LRS
# output containerName variable from template
- run: echo ${{ steps.deploy.outputs.containerName }}
注意
您可以改為在 ARM 部署動作中指定 JSON 格式參數檔案 (範例:.azuredeploy.parameters.json
)。
工作流程檔案的第一個區段包括:
- name:工作流程的名稱。
- on:觸發工作流程的 GitHub 事件名稱。 當主要分支上有推送事件時,就會觸發工作流程,修改這兩個指定檔案的至少其中之一。 這兩個檔案為工作流程檔案和範本檔案。
- 選取 [開始認可]。
- 選取 [直接認可至主分支]。
- 選取 [認可新檔案] (或 [認可變更])。
由於工作流程會設定為透過要更新的工作流程檔案或範本檔案來觸發,因此,工作流程會在您認可變更後立即啟動。
檢查工作流程狀態
- 選取 [動作] 索引標籤。您會看到 Create deployStorageAccount.yml 工作流程列出。 執行工作流程需要 1-2 分鐘的時間。
- 選取工作流程以將其開啟。
- 從功能表選取 [執行 ARM 部署] 以確認部署。
清除資源
不再需要資源群組和存放庫時,請刪除資源群組和 GitHub 存放庫,以清除您所部署的資源。