練習 - 建立提取要求的工作流程

已完成

您的網站開發小組要求您更新網站,以便在 Linux 作業系統上執行。 在此練習中,您將會新增驗證工作流程,可在開啟或更新提取要求時自動執行。 接著,您將會針對網站的作業系統變更建立提取要求。

在此過程中,您將會:

  • 建立用於驗證提取要求的工作流程。
  • 將 Bicep Lint 分析新增至工作流程。
  • 建立提取要求,並觀看工作流程執行。
  • 修正提取要求驗證工作流程所找出的錯誤。
  • 重新執行工作流程,接著合併並關閉提取要求。

建立工作流程,在提取要求建立及更新時執行

  1. 在 Visual Studio Code 的 .github/workflows 資料夾中,建立名稱為 pr-validation.yml 的新檔案。

    Visual Studio Code 的螢幕擷取畫面,其中顯示工作流程資料夾內的 PR 驗證點 YML 檔案。

  2. 將下列程式碼新增至 檔案:

    name: pr-validation
    
    on: pull_request
    

    此程式碼可確保每次建立或更新提取要求時,即會執行工作流程。

    注意

    在此您直接使用存放庫的分支。 這並非正常作業;但在此練習中,您使用「主」分支來簡化步驟。 在您自己的專案中,請務必設定分支保護規則,以保護主分支。

將 lint 工作新增至工作流程

每次在開啟或編輯提取要求時,您希望 Bicep 檔案可執行 Lint 分析步驟。 存放庫中有可重複使用的 lint 工作流程,您可從此工作流程進行呼叫。

  1. 在現有檔案內容結束時,若要重複使用存放庫中定義的 lint 工作流程,請新增下列幾行:

    jobs:
      lint:
        uses: ./.github/workflows/lint.yml
    

    存放庫中的 bicepconfig.json 檔案設定讓 Linter 發出錯誤而非警告,因此 lint 工作期間的任何失敗皆會導致工作流程失敗。

  2. 儲存您的變更。

  3. 在 Visual Studio Code 終端機中執行下列命令,以認可變更並將其推送至 Git 存放庫「主」分支:

    git add .
    git commit -m "Add first version of pull request validation workflow"
    git push
    

更新 Bicep 檔案

接下來,修改網站的 Bicep 檔案,將網站的作業系統更新為 Linux。

  1. 在 Visual Studio Code 終端機中執行下列命令,以針對變更建立新分支:

    git checkout -b feature/linux-app
    
  2. deploy 資料夾中開啟 main.bicep 檔案。

  3. 在接近檔案最上方、變數定義下的位置,定義應用程式架構要使用的新變數:

    // 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 來建置應用程式。

  4. 更新 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
      }
    }
    
  5. 更新 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 提取要求內的呈現方式。

  6. 儲存您的變更。

  7. 在 Visual Studio Code 終端機中執行下列命令,以認可所做的變更,並將其推送至您的 Git 存放庫:

    git add .
    git commit -m "Update operating system to Linux"
    git push origin feature/linux-app
    

建立提取要求

您已設定工作流程並更新 Bicep 檔案,現在可建立提取要求。

  1. 在瀏覽器中,選取 [程式碼]

  2. 選取 2 個分支,以開啟 GitHub 存放庫中的分支清單。

    GitHub 的螢幕擷取畫面,其中顯示存放庫的分支清單。

    當您將變更推送至尚未開啟提取要求的分支時,會短暫地顯示 [比較並提取要求]。 這是 [開啟提取要求] 頁面的捷徑。

  3. feature/linux-app 分支旁,選取 [新增提取要求]。 您可能需要選取 [更多] 圖示 (...) 以顯示 [新增提取要求] 選項。

    GitHub 的螢幕擷取畫面,其中顯示針對功能斜線 Linux 應用程式分支建立提取要求的連結。

  4. 選取 [建立提取要求]

    GitHub [開啟提取要求] 窗格的螢幕擷取畫面,其中顯示 [建立提取要求] 按鈕。

    隨即顯示提取要求詳細資料頁面。

  5. 檢視提取要求詳細資料的 [檢查] 區段。

    在一段時間後,即可看到觸發自動檢查。 檢查會執行提取要求的驗證工作流程。

    工作流程可能需要一段時間才會開始執行。 重新整理瀏覽器視窗,直到狀態檢查顯示為止。

    檢查完成時,可看到檢查失敗。

    GitHub 的螢幕擷取畫面,其中顯示 [提取要求詳細資料] 頁面上的失敗狀態檢查。

    注意

    GitHub 可讓您合併提取要求 (即使狀態檢查失敗)。 在實際解決方案中,應設定分支保護規則,以防止狀態檢查成功前合併提取要求。

修正提取要求驗證錯誤

  1. 在 [狀態檢查] 窗格中選取 [詳細資料],以檢查工作流程記錄。

    GitHub 的螢幕擷取畫面,其中顯示工作流程記錄 ,包括驗證錯誤。

    該記錄包含這則 Bicep Linter 訊息:

    Error no-unused-vars: Variable "appServiceAppLinuxFrameworkVersion" is declared but never used.
    
  2. 在 Visual Studio Code 中,開啟 deploy/main.bicep 檔案。

    在第 20 行中,有個名稱為 appServiceAppLinuxFrameworkVersion 的變數。 該變數未使用。 接下來,您將修正此錯誤。

  3. appServiceApp 資源定義中,更新 linuxFxVersion 屬性以使用該變數,而非將屬性設為硬式編碼值:

    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          linuxFxVersion: appServiceAppLinuxFrameworkVersion
        }
      }
    }
    
  4. 在 Visual Studio Code 終端機中認可變更,並將其推送至存放庫。

    git add .
    git commit -m "Fix Bicep file"
    git push origin feature/linux-app
    

監視及合併提取要求

  1. 重新開啟瀏覽器的提取要求詳細資料頁面。

    提取要求驗證會再次執行。 若狀態檢查未執行,請重新整理您的頁面。

    等候檢查完成。 這次是成功的。 Bicep 檔案中沒有語法或 Linter 錯誤,因此您已準備好合併提取要求。

  2. 選取 [合併提取要求] 以關閉提取要求,並合併主分支中的變更。

    GitHub 的螢幕擷取畫面,其中顯示 [提取要求詳細資料] 頁面上的 [合併提取要求] 按鈕。

  3. 選取 [確認合併]