練習 - 建立提取要求的工作流程
您的網站開發小組要求您更新網站,以便在 Linux 作業系統上執行。 在此練習中,您將會新增驗證工作流程,可在開啟或更新提取要求時自動執行。 接著,您將會針對網站的作業系統變更建立提取要求。
在此過程中,您將會:
- 建立用於驗證提取要求的工作流程。
- 將 Bicep Lint 分析新增至工作流程。
- 建立提取要求,並觀看工作流程執行。
- 修正提取要求驗證工作流程所找出的錯誤。
- 重新執行工作流程,接著合併並關閉提取要求。
建立工作流程,在提取要求建立及更新時執行
在 Visual Studio Code 的 .github/workflows 資料夾中,建立名稱為 pr-validation.yml 的新檔案。
將下列程式碼新增至 檔案:
name: pr-validation on: pull_request
此程式碼可確保每次建立或更新提取要求時,即會執行工作流程。
注意
在此您直接使用存放庫的主分支。 這並非正常作業;但在此練習中,您使用「主」分支來簡化步驟。 在您自己的專案中,請務必設定分支保護規則,以保護主分支。
將 lint 工作新增至工作流程
每次在開啟或編輯提取要求時,您希望 Bicep 檔案可執行 Lint 分析步驟。 存放庫中有可重複使用的 lint 工作流程,您可從此工作流程進行呼叫。
在現有檔案內容結束時,若要重複使用存放庫中定義的 lint 工作流程,請新增下列幾行:
jobs: lint: uses: ./.github/workflows/lint.yml
存放庫中的 bicepconfig.json 檔案設定讓 Linter 發出錯誤而非警告,因此 lint 工作期間的任何失敗皆會導致工作流程失敗。
儲存您的變更。
在 Visual Studio Code 終端機中執行下列命令,以認可變更並將其推送至 Git 存放庫「主」分支:
git add . git commit -m "Add first version of pull request validation workflow" git push
更新 Bicep 檔案
接下來,修改網站的 Bicep 檔案,將網站的作業系統更新為 Linux。
在 Visual Studio Code 終端機中執行下列命令,以針對變更建立新分支:
git checkout -b feature/linux-app
在 deploy 資料夾中開啟 main.bicep 檔案。
在接近檔案最上方、變數定義下的位置,定義應用程式架構要使用的新變數:
// Define the names for resources. var appServiceAppName = 'toy-website-linux-${resourceNameSuffix}' var appServicePlanName = 'toy-website-linux' var storageAccountName = 'mystorage${resourceNameSuffix}' var appServiceAppLinuxFrameworkVersion = 'node|14-lts'
此設定會告知 Azure App Service 將使用 Node.js 架構版本 14 來建置應用程式。
更新
appServicePlan
資源定義。 在properties
物件中新增kind
屬性和reserved
屬性:resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = { name: appServicePlanName location: location sku: environmentConfigurationMap[environmentType].appServicePlan.sku kind: 'linux' properties: { reserved: true } }
更新
appServiceApp
資源定義,以設定應用程式架構:resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { linuxFxVersion: 'node|14-lts' } } }
注意
您可能會注意到 Bicep 警告目前不是使用
appServiceAppLinuxFrameworkVersion
變數。 此處是刻意導致發生 linter 錯誤,以便您查看 GitHub 提取要求內的呈現方式。儲存您的變更。
在 Visual Studio Code 終端機中執行下列命令,以認可所做的變更,並將其推送至您的 Git 存放庫:
git add . git commit -m "Update operating system to Linux" git push origin feature/linux-app
建立提取要求
您已設定工作流程並更新 Bicep 檔案,現在可建立提取要求。
在瀏覽器中,選取 [程式碼]。
選取 2 個分支,以開啟 GitHub 存放庫中的分支清單。
當您將變更推送至尚未開啟提取要求的分支時,會短暫地顯示 [比較並提取要求]。 這是 [開啟提取要求] 頁面的捷徑。
在 feature/linux-app 分支旁,選取 [新增提取要求]。 您可能需要選取 [更多] 圖示 (...) 以顯示 [新增提取要求] 選項。
選取 [建立提取要求]。
隨即顯示提取要求詳細資料頁面。
檢視提取要求詳細資料的 [檢查] 區段。
在一段時間後,即可看到觸發自動檢查。 檢查會執行提取要求的驗證工作流程。
工作流程可能需要一段時間才會開始執行。 重新整理瀏覽器視窗,直到狀態檢查顯示為止。
檢查完成時,可看到檢查失敗。
注意
GitHub 可讓您合併提取要求 (即使狀態檢查失敗)。 在實際解決方案中,應設定分支保護規則,以防止狀態檢查成功前合併提取要求。
修正提取要求驗證錯誤
在 [狀態檢查] 窗格中選取 [詳細資料],以檢查工作流程記錄。
該記錄包含這則 Bicep Linter 訊息:
Error no-unused-vars: Variable "appServiceAppLinuxFrameworkVersion" is declared but never used.
在 Visual Studio Code 中,開啟 deploy/main.bicep 檔案。
在第 20 行中,有個名稱為
appServiceAppLinuxFrameworkVersion
的變數。 該變數未使用。 接下來,您將修正此錯誤。在
appServiceApp
資源定義中,更新linuxFxVersion
屬性以使用該變數,而非將屬性設為硬式編碼值:resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { linuxFxVersion: appServiceAppLinuxFrameworkVersion } } }
在 Visual Studio Code 終端機中認可變更,並將其推送至存放庫。
git add . git commit -m "Fix Bicep file" git push origin feature/linux-app
監視及合併提取要求
重新開啟瀏覽器的提取要求詳細資料頁面。
提取要求驗證會再次執行。 若狀態檢查未執行,請重新整理您的頁面。
等候檢查完成。 這次是成功的。 Bicep 檔案中沒有語法或 Linter 錯誤,因此您已準備好合併提取要求。
選取 [合併提取要求] 以關閉提取要求,並合併主分支中的變更。
選取 [確認合併]。