教學課程:ARM 範本與 Azure Pipelines 的持續整合

上一個教學課程中,您部署了連結的範本。 在本教學課程中,您將了解如何使用 Azure Pipelines 持續建置及部署 Azure Resource Manager 範本 (ARM 範本) 專案。

Azure DevOps 提供開發人員服務,以支援小組規劃工作、共同作業開發程式碼,以及建置和部署應用程式。 開發人員可以使用 Azure DevOps Services 在雲端工作。 Azure DevOps 提供一組整合的功能,您可以透過網頁瀏覽器或 IDE 用戶端存取使用。 Azure Pipeline 就是其中一個功能。 Azure Pipelines 是一個功能齊全的持續整合 (CI) 和持續傳遞 (CD) 服務。 它可以與您慣用的 Git 提供者搭配使用,而且能夠部署到大多數的主流雲端服務。 然後您可以將程式碼的建置、測試和部署到 Microsoft Azure、Google Cloud Platform,或 Amazon Web Services 等等所有工作自動化。

注意

選擇專案名稱。 當您進行此教學課程時,請將任何 AzureRmPipeline 取代為您的專案名稱。 此專案名稱可用來產生資源名稱。 其中一項資源是儲存體帳戶。 儲存體帳戶名稱必須介於 3 到 24 個字元的長度,而且只能使用數字和小寫字母。 名稱必須是唯一的。 在範本中,儲存體帳戶名稱是附加了 store 的專案名稱,且專案名稱的長度必須介於 3 到 11 個字元之間。 因此,專案名稱必須符合儲存體帳戶名稱需求,且少於 11 個字元。

本教學課程涵蓋下列工作:

  • 準備 GitHub 存放庫
  • 建立 Azure DevOps 專案
  • 建立 Azure 管線
  • 驗證管線部署
  • 更新範本並重新部署
  • 清除資源

如果您沒有 Azure 訂用帳戶,請在開始之前先建立免費帳戶

必要條件

若要完成本文,您需要:

準備 GitHub 存放庫

GitHub 可用來儲存專案原始程式碼,包括 Resource Manager 範本。 對於其他支援的存放庫,請參閱Azure DevOps 支援的存放庫

建立 GitHub 存放庫

如果您沒有 GitHub 帳戶,請參閱必要條件

  1. 登入 GitHub

  2. 在右上角,選取您的帳戶圖示,然後選取 [您的存放庫]。

    Azure Resource Manager Azure DevOps Azure Pipelines 建立 GitHub 存放庫

  3. 選取 [新建] (綠色按鈕)。

  4. 在 [存放庫名稱] 中輸入存放庫名稱。 例如,AzureRmPipeline-repo。 請記得將任何 AzureRmPipeline 取代為您的專案名稱。 進行此教學課程時,您可以選取 [公開] 或 [私人]。 然後選取 [建立存放庫]。

  5. 請將 URL 抄寫下來。 存放庫 URL 會具有以下格式 - https://github.com/[YourAccountName]/[YourRepositoryName]

此存放庫稱為「遠端存放庫」。 同一專案的每位開發人員都可以複製他們自己的「本機存放庫」,並將變更合併至遠端存放庫。

複製遠端存放庫

  1. 開啟 Git Shell 或 Git Bash。 請參閱必要條件

  2. 確認您目前的資料夾為 GitHub

  3. 執行以下命令:

    git clone https://github.com/[YourAccountName]/[YourGitHubRepositoryName]
    cd [YourGitHubRepositoryName]
    mkdir CreateWebApp
    cd CreateWebApp
    pwd
    

    [YourAccountName] 取代為您的 GitHub 帳戶名稱,並將 [YourGitHubRepositoryName] 取代為您在上一個程序中建立的存放庫名稱。

CreateWebApp 資料夾是範本儲存所在的資料夾。 可執行 pwd 命令以顯示資料夾路徑。 路徑是您透過以下程序儲存範本的位置。

下載快速入門範本

您可以下載範本並將其儲存至 CreateWebApp 資料夾,而不要建立範本。

資料夾名稱和檔案名稱都與其在管線中使用的名稱相同。 如果您變更這些名稱,就必須更新管線中使用的名稱。

將範本推送至遠端存放庫

azuredeploy.json 已新增至本機存放庫。 接下來您會將範本推送至遠端存放庫。

  1. 開啟 Git ShellGit Bash (如果未開啟)。

  2. 將目錄變更為您本機存放庫中的 CreateWebApp 資料夾。

  3. 確認 azuredeploy.json 檔案位於資料夾中。

  4. 執行以下命令:

    git add .
    git commit -m "Add web app templates."
    git push origin main
    

    您可能會收到關於 LF 的警告。 您可以忽略警告。 main 是主要分支。 通常您會為每個更新建立分支。 為了簡化此教學課程,您可以直接使用 main 分支。

  5. 使用瀏覽器瀏覽至您的 GitHub 存放庫。 URL 為 https://github.com/[YourAccountName]/[YourGitHubRepository]。 您應該會看到 CreateWebApp 資料夾以及資料夾內的兩個檔案。

  6. 選取 [ 開啟]azuredeploy.js 開啟範本。

  7. 選取 [原始] 按鈕。 URL 的開頭為 https://raw.githubusercontent.com

  8. 複製 URL。 當您稍後在本教學課程中設定管線時,將必須提供此值。

到目前為止,您已建立一個 GitHub 存放庫,並已上傳一個範本至存放庫。

建立 DevOps 專案

您需要一個 DevOps 的組織,才能繼續進行下一個程序。 如果您沒有 DevOps 組織,請參閱必要條件

  1. 登入 Azure DevOps

  2. 從左側選取一個 DevOps 組織。

    Azure Resource Manager Azure DevOps Azure Pipelines 建立 Azure DevOps 專案

  3. 選取 [新增專案]。 如果您沒有任何專案,系統會自動開啟建立專案頁面。

  4. 輸入下列值:

    • 專案名稱:輸入專案名稱。 您可以使用您在此教學課程一開始時所選擇的專案名稱。
    • 版本控制:選取 [Git]。 您可能需要展開 [ 進階] 才能看到 [版本控制]。

    其他屬性則請使用預設值。

  5. 選取 [建立] 。

建立用來將專案部署至 Azure 的服務連線。

  1. 按一下左側功能表的底部選取 [專案設定]。

  2. 選取 [管線] 底下的 [服務連線]。

  3. 選取 [ 建立服務連接],選取 Azure Resource Manager,然後選取 [下一步]

  4. 選取 [服務主體],然後選取 [下一步]。

  5. 輸入下列值:

    • 範圍層級:選取 [訂用帳戶]。
    • 訂用帳戶︰選取您的訂用帳戶。
    • 資源群組:保留為空白。
    • 連線名稱:輸入連線名稱。 例如,AzureRmPipeline conn。 請記下此名稱,您在建立管線時會用到。
    • 授與所有管線的存取權限。 (已選取)
  6. 選取 [儲存]。

建立管線

到目前為止,我們已完成下列工作。 如果您因為已熟悉 GitHub 和 DevOps 而略過前幾節,您必須先完成工作才能繼續。

  • 建立 GitHub 存放庫,並將範本儲存至存放庫中的 CreateWebApp 資料夾。
  • 建立 DevOps 專案,並建立一個 Azure Resource Manager 服務連線。

建立包含一個部署範本步驟的管線:

  1. 從左側功能表中選取 [管線]。

  2. 選取 [ 建立管線]。

  3. 從 [連線] 索引標籤選取 GitHub。 如果系統要求輸入您的 GitHub 認證,請輸入並依照指示進行。 如果您看到以下畫面,請選取 [只選取存放庫],並確認清單中包含您的存放庫,然後再選取 [核准並安裝]。

    Azure Resource Manager Azure DevOps Azure Pipelines 只選取存放庫

  4. 從 [選取] 索引標籤選取您的存放庫。 預設名稱為 [YourAccountName]/[YourGitHubRepositoryName]

  5. 從 [設定] 索引標籤選取 [入門管線]。 它會顯示包含兩個指令碼步驟的 azure pipelines.yml 管線檔案。

  6. 從 .yml 檔案中刪除兩個指令碼步驟。

  7. 將游標移至「步驟:」後面的那一行。

  8. 選取畫面右側的 [顯示小幫手],以開啟 [工作] 窗格。

  9. 選取 [ARM 範本部署]。

  10. 輸入下列值:

    • deploymentScope:選取 [資源群組]。 若要深入了解範圍,請參閱部署範圍
    • Azure Resource Manager 連線:選取您先前建立的服務連線名稱。
    • 訂用帳戶:指定目標訂用帳戶識別碼。
    • 動作:選取 [建立或更新資源群組] 動作,會執行 2 個動作 - 1. 如果已經提供新的資源群組名稱,就會建立一個資源群組;2. 部署指定的範本。
    • 資源群組:輸入新的資源群組名稱。 例如,AzureRmPipeline rg
    • 位置:選取資源群組的位置,例如 美國中部
    • 範本位置:選取檔案的 url,這表示工作會使用 URL 尋找範本檔案。 因為 relativePath 是在主要範本中使用,而且只有在以 URI 為基礎的部署上才支援 relativePath ,所以您必須在這裡使用 URL。
    • 範本連結:輸入您在「準備 GitHub 存放庫」一節的結尾處取得的 URL。 一開始的配置為 https://raw.githubusercontent.com
    • 範本參數連結:將此欄位保留空白。 您將在 覆寫範本參數 中指定參數值。
    • 覆寫範本參數:輸入 -projectName [EnterAProjectName]
    • 部署模式:選取 [增量]。
    • 部署名稱:輸入 DeployPipelineTemplate。 選取 [進階],才能看到 [部署名稱]。

    此螢幕擷取畫面顯示已輸入必要值的 ARM 範本部署頁面。

  11. 選取 [新增] 。

    如需有關工作的詳細資訊,請參閱 Azure 資源群組部署工作Azure Resource Manager 範本部署工作

    .yml 檔案應該會顯示如下:

    此螢幕擷取畫面顯示 [檢閱] 頁面,其中具有標題為「檢閱管線 YAML」的新管線。

  12. 選取 [儲存並執行]。

  13. 從 [儲存並執行] 窗格中,再次選取 [儲存並執行]。 YAML 檔案的複本已儲存到連線的存放庫。 您可以瀏覽您的存放庫,就能看到 YAML 檔案。

  14. 確認管線已成功執行。

    Azure Resource Manager Azure DevOps Azure Pipelines yaml

驗證部署

  1. 登入 Azure 入口網站
  2. 開啟資源群組。 名稱是您在管線 YAML 檔案中指定的。 您應該會看到已建立一個儲存體帳戶。 儲存體帳戶名稱開頭為 store
  3. 選取儲存體帳戶以將它開啟。
  4. 選取 [屬性] 。 請注意,[複寫] 是 [本地備援儲存體 (LRS)]。

更新並重新部署

當您更新範本並將變更推送至遠端存放庫時,管線會自動更新資源,也就是此範例中的儲存體帳戶。

  1. 在 Visual Studio Code 或任何文字編輯器中,從本機存放庫開啟 linkedStorageAccount.json

  2. storageAccountTypedefaultValue 更新為 Standard_GRS。 請參閱下列螢幕擷取畫面:

    Azure Resource Manager Azure DevOps Azure Pipelines 更新 yaml

  3. 儲存變更。

  4. 從 Git Bash/Shell 執行下列命令來將變更推送至遠端存放庫。

    git pull origin main
    git add .
    git commit -m "Update the storage account type."
    git push origin main
    

    第一個命令 (pull) 會同步處理本機存放庫與遠端存放庫。 管線 YAML 檔案僅新增至遠端存放庫。 執行 pull 命令會將 YAML 檔案的複本下載到本機分支。

    第四個命令 (pupush) 會將修改過的 linkedStorageAccount.json 檔案上傳至遠端存放庫。 當遠端存放庫的 main 分支更新時,就會再引發一次管線。

若要確認所做的變更,您可以檢查儲存體帳戶的複寫屬性。 請參閱驗證部署

清除資源

不再需要 Azure 資源時,可藉由刪除資源群組來清除您所部署的資源。

  1. 在 Azure 入口網站中,選取左側功能表中的 [資源群組] 。
  2. 在 [依名稱篩選] 欄位中輸入資源群組名稱。
  3. 選取資源群組名稱。
  4. 從頂端功能表中選取 [刪除資源群組] 。

您也可能會想要刪除 GitHub 存放庫和 Azure DevOps 專案。

後續步驟

恭喜,您已完成此 Resource Manager 範本部署教學課程。 如果您對於意見反應區段有任何意見和建議,請讓我們知道。 感謝您! 您已經準備好深入了解更進階的範本相關概念。 下一個教學課程將更詳細地說明如何使用範本參考文件來協助定義要部署的資源。