練習 - 更新工作流程觸發程序
同事要求您開啟公司網站上的 App Service Always On 功能,讓網站應用程式一律處於執行狀態。
在此練習中,您將更新先前建立的工作流程,以在「主」分支上的檔案發生變更時自動執行。 您將使用更新後的工作流程將所要求的設定變更部署至網站。
在此過程中,您將會:
- 更新工作流程,使其在「主」分支上 deploy 資料夾中的檔案發生變更時自動觸發。
- 變更 Bicep 檔案。
- 驗證工作流程是否自動執行。
將觸發程序更新為按分支觸發
在 Visual Studio Code 中,開啟 .github/workflows/workflow.yml 檔案。
在檔案頂端,於
name: deploy-toy-website
行之後,新增下列程式碼以防止執行多個同時的工作流程:name: deploy-toy-website concurrency: toy-company
移除手動觸發程序,其位於目前內容為
on: [workflow_dispatch]
該行。在 和
concurrency:
之間permissions:
新增下列觸發程式定義:concurrency: toy-company on: push: branches: - main paths: - 'deploy/**' permissions:
儲存對檔案所做的變更。
認可變更,但請先不要加以推送。 您很快就會推送變更。
git add . git commit -m 'Add branch trigger'
更新 Bicep 檔案
在 Visual Studio Code 中,開啟 main.bicep 檔案。
在
appServiceApp
資源定義的siteConfig
屬性中,新增值為true
的alwaysOn
屬性:resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { alwaysOn: true appSettings: [ { name: 'ToyManualsStorageAccountConnectionString' value: toyManualsStorageAccountConnectionString } ] } }
儲存對檔案所做的變更。
在 Visual Studio Code 終端機中,執行下列程式碼以認可變更並推送兩個認可:
git add . git commit -m 'Configure app Always On setting' git push
確認工作流程失敗
在瀏覽器中,選取 GitHub 的 [動作] 功能表,然後選取您的工作流程。
選取最近的工作流程執行,查看工作流程是否自動執行。 工作流程執行的原因是您將變更推送至推送觸發程序所監視的分支。 若工作流程仍在執行,請等候一分鐘,然後重新整理頁面。
工作流程會顯示失敗的部署。
若要診斷失敗原因,請選取 [部署] 作業,然後選取失敗的 [arm-deploy] 工作。
請注意,訊息會包含下列文字:
There was a conflict. AlwaysOn cannot be set for this site as the plan does not allow it. For more information on pricing and features, please see: https://aka.ms/appservicepricingdetails
此錯誤訊息表示部署失敗,因為 App Service 應用程式使用不支援 Always On 功能的 F1 免費層部署。
重要
此範例顯示測試 Bicep 檔案 (包括您使用的所有參數值) 有多重要。 微小錯誤很容易新增到您的資源設定或其他程式碼。 在工作流程部署程式碼並失敗之前,您可能都不會發現問題。 在未來的課程模組中,您將了解一些可用來驗證及測試 Bicep 程式碼的策略。
修正 Bicep 檔案,並再次查看觸發的工作流程
您和同事討論失敗的部署。 同時,您決定只需要為實際執行環境套用 Always On 設定。 您於此處套用決定要使用的新規則,以修正造成部署失敗的問題。
在 Visual Studio Code 中,將每個環境類型的新屬性新增至
environmentConfigurationMap
變數:var environmentConfigurationMap = { nonprod: { appServiceApp: { alwaysOn: false } appServicePlan: { sku: { name: 'F1' capacity: 1 } } toyManualsStorageAccount: { sku: { name: 'Standard_LRS' } } } prod: { appServiceApp: { alwaysOn: true } appServicePlan: { sku: { name: 'S1' capacity: 2 } } toyManualsStorageAccount: { sku: { name: 'Standard_ZRS' } } } }
變更應用程式的
alwaysOn
設定,針對環境類型使用適當的設定對應值:resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { alwaysOn: environmentConfigurationMap[environmentType].appServiceApp.alwaysOn appSettings: [ { name: 'ToyManualsStorageAccountConnectionString' value: toyManualsStorageAccountConnectionString } ] } } }
儲存對檔案所做的變更。
在 Visual Studio Code 終端機中,認可並推送變更:
git add . git commit -m 'Enable App Service Always On for production environments only' git push
確認工作流程成功
在 GitHub 中,返回 [工作流程] 清單。 選取工作流程。
選取最近的執行。 若工作流程仍在執行,請等候一分鐘,然後重新整理頁面。
會顯示工作流程執行。
工作流程顯示部署成功。 因為您使用的是有效的 Bicep 檔案,所以工作流程這次已成功。
清除資源
既然您已完成練習,您可以移除資源,以免產生費用。
在 Visual Studio Code [終端機] 中,執行下列命令:
az group delete --resource-group ToyWebsite --yes --no-wait
資源群組會在背景中刪除。
Remove-AzResourceGroup -Name ToyWebsite -Force