快速入門:使用 GitHub Actions 部署 Bicep 檔案
GitHub Actions (英文) 是 GitHub 中的一個功能套件,可將您的軟體開發工作流程自動化。 在此快速入門中,您將使用適用於 Azure Resource Manager 部署的 GitHub 動作,將 Bicep 檔案自動部署至 Azure。
其提供 GitHub 動作和 Bicep 檔案的簡介。 如需更多設定 GitHub 動作和專案的詳細步驟,請參閱使用 Bicep 和 GitHub Actions 部署 Azure 資源。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
- GitHub 帳戶。 如果您沒有 Microsoft 帳戶,請免費註冊。
- 儲存 Bicep 檔案和工作流程檔案的 GitHub 存放庫。 若要建立一個,請參閱建立新的存放庫 \(英文\)。
建立資源群組
建立資源群組。 稍後在此快速入門中,您會將 Bicep 檔案部署到此資源群組。
az group create -n exampleRG -l westus
產生部署認證
若要搭配 OIDC 使用 Azure 登入動作 ,您必須在 Microsoft Entra 應用程式或使用者指派的受控識別上設定同盟身分識別認證。
選項 1:Microsoft Entra 應用程式
- 透過 Azure 入口網站、Azure CLI 或 Azure PowerShell,建立具有服務主體的 Microsoft Entra 應用程式。
- 複製用戶端標識碼、訂用帳戶標識碼和目錄(租用戶)標識碼的值,以便稍後在 GitHub Actions 工作流程中使用。
- Azure 入口網站、Azure CLI 或 Azure PowerShell,將適當的角色指派給您的服務主體。
- 在 Microsoft Entra 應用程式 上設定同盟身分識別認證,以信任 GitHub Actions 簽發給 GitHub 存放庫的令牌。
選項 2:使用者指派的受控識別
- 建立使用者指派的受控識別。
- 複製用戶端標識碼、訂用帳戶標識碼和目錄(租用戶)標識碼的值,以便稍後在 GitHub Actions 工作流程中使用。
- 將適當的角色指派給使用者指派的受控識別。
- 在使用者指派的受控識別 上設定同盟身分識別認證,以信任 GitHub Actions 簽發給 GitHub 存放庫的令牌。
設定 GitHub 祕密
您必須將應用程式的 用戶端識別碼、 目錄(租使用者)標識碼和 訂用帳戶識別碼 提供給登入動作。 這些值可以直接在工作流程中提供,也可以儲存在 GitHub 的秘密中,並在您的工作流程中參考。 將值儲存為 GitHub 秘密是較安全的選擇。
在 GitHub (英文) 中,前往您的存放庫。
選取 [安全性] > [祕密和變數] > [動作]。
選取 [新增存放庫祕密]。
注意
若要增強公用存放庫中的工作流程安全性,請使用環境秘密,而不是存放庫秘密。 如果環境需要核准,除非其中一個必要的檢閱者核准環境秘密,否則作業無法存取環境秘密。
建立
AZURE_CLIENT_ID
、AZURE_TENANT_ID
和AZURE_SUBSCRIPTION_ID
的秘密。 從您的 Microsoft Entra 應用程式或 GitHub 秘密的使用者指派受控識別複製這些值:GitHub 祕密 Microsoft Entra 應用程式或使用者指派的受控識別 AZURE_CLIENT_ID Client ID AZURE_SUBSCRIPTION_ID 訂用帳戶識別碼 AZURE_TENANT_ID 目錄 (租用戶) ID 注意
基於安全性考慮,我們建議使用 GitHub 秘密,而不是將值直接傳遞至工作流程。
新增 Bicep 檔案
將 Bicep 檔案新增至 GitHub 存放庫。 下列 Bicep 檔案會建立儲存體帳戶:
@minLength(3)
@maxLength(11)
param storagePrefix string
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_RAGRS'
'Standard_ZRS'
'Premium_LRS'
'Premium_ZRS'
'Standard_GZRS'
'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'
param location string = resourceGroup().location
var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
}
output storageEndpoint object = stg.properties.primaryEndpoints
Bicep 檔案需要一個名為 storagePrefix 的參數,其長度為 3 到 11 個字元。
您可以將檔案放置於存放庫中的任何位置。 下一節的工作流程範例假設 Bicep 檔案名稱為 main.bicep,且儲存於存放庫根目錄中。
建立工作流程
工作流程會定義觸發時要執行的步驟。 其是位於您存放庫 .github/workflows/ 路徑中的 YAML (.yml) 檔案。 工作流程副檔名可以是 .yml 或 .yaml。
若要建立工作流程,請採取下列步驟:
從您的 GitHub 存放庫,選取頂端功能表中的 [動作]。
選取 [新增工作流程]。
選取 [自行設定工作流程]。
如果您偏好使用 main.yml 以外的其他名稱,請將工作流程檔案重新命名。 例如:deployBicepFile.yml。
使用下列程式碼來取代 yml 檔案的內容:
on: [push] name: Azure ARM permissions: id-token: write contents: read jobs: build-and-deploy: runs-on: ubuntu-latest steps: # Checkout code - uses: actions/checkout@main # Log into Azure - uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} # Deploy Bicep file - name: deploy uses: azure/arm-deploy@v1 with: subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }} resourceGroupName: ${{ secrets.AZURE_RG }} template: ./main.bicep parameters: 'storagePrefix=mystore storageSKU=Standard_LRS' failOnStdErr: false
選取 [認可變更]。
選取 [直接認可至主分支]。
選取 [認可新檔案] (或 [認可變更])。
更新工作流程檔案或 Bicep 檔案會觸發工作流程。 工作流程會在您認可變更之後立即啟動。
檢查工作流程狀態
- 選取 [動作] 索引標籤。您會看到列出建立 deployBicepFile.yml 工作流程。 執行工作流程需要 1-2 分鐘的時間。
- 選取工作流程加以開啟,並確認
Status
為Success
。
清除資源
不再需要資源群組和存放庫時,請刪除資源群組和 GitHub 存放庫,以清除您所部署的資源。
az group delete --name exampleRG
下一步
Bicep 檔案結構和語法 (部分機器翻譯)