共用方式為


教學課程:使用 Azure Pipelines 在 CI/CD 中部署環境

在本教學課程中,您會了解如何將 Azure 部署環境整合到 Azure Pipelines CI/CD 管線。

持續整合與持續傳遞 (CI/CD) 是一種軟體開發方法,可協助小組將建置、測試及部署軟體變更的流程自動化。 CI/CD 可讓您更頻繁且更放心地發佈軟體變更。

開始本教學課程之前,請先檢閱 Azure 部署環境的重要概念,以熟悉部署環境的資源和概念。

在本教學課程中,您將瞭解如何:

  • 建立和設定 Azure Repos 存放庫
  • 設定環境類型
  • 設定服務連線
  • 建立管線
  • 建立環境

先決條件

建立和設定 Azure Repos 存放庫

  1. 登入您的 Azure DevOps 組織 (https://dev.azure.com/<your-organization>)。 將 <your-organization> 取代為您的專案識別碼。
  2. 選取您的專案
  3. 選取 [存放庫]>[檔案]
  4. 在 [匯入存放庫] 中,選取 [匯入]
  5. 在 [匯入 Git 存放庫] 中,選取或輸入下列項目:

設定環境類型

環境類型會定義您的開發小組可以部署的環境類型。 您可以為每個環境類型套用不同的設定。 您可以在開發人員中心層級和專案層級建立環境類型。

若要建立開發人員中心環境類型:

  1. 登入 Azure 入口網站

  2. 開發人員中心中,選取您的開發人員中心。

  3. 在左側功能表中,於 [ 環境設定] 底下,選取 [ 環境類型],然後選取 [ 建立]。

  4. 使用下列步驟建立三種環境類型:沙箱、FunctionApp 和 WebApp。

    1. 建立環境類型底下選取或輸入下列資訊,然後選取新增

      名稱 價值觀
      名稱 輸入新環境類型的名稱。
      標籤 輸入標籤名稱和標籤值。
    2. 確認環境類型出現在清單中。

若要建立專案環境類型:

  1. 在左側功能表的 [管理] 下,選取 [專案],然後選取您想要使用的專案。
  2. 在左側功能表的 [環境設定]下,選取 [環境類型],然後選取 [新增]
  3. 使用下列步驟新增三種環境類型:沙箱、FunctionApp 和 WebApp。
    1. 將環境類型新增至<專案名稱>中,輸入或選取下列資訊:

      名稱 價值觀
      型別 選取開發人員中心層級的環境類型,以針對特定項目啟用。
      部署訂閱 選取已建立專案的月租方案。
      部署身分識別 選取系統指派的受控識別或使用者指派的受控識別,以代表使用者執行部署。
      環境資源的權限>環境建立者角色 選取提供環境資源存取權的角色。
      環境資源的權限>其他存取 選取使用者或 Microsoft Entra 群組,以指派環境資源上的特定角色。
      標籤 輸入標籤名稱和標籤值。 這些標籤會套用至建立為環境一部分的所有資源。
    2. 確認環境類型出現在清單中。

設定服務連線

在 Azure Pipelines 中,您會在 Azure DevOps 專案中建立「服務連線」,以存取 Azure 訂用帳戶中的資源。

  1. 如果您沒有專案的使用者指派受控識別,請新增一個 (部分機器翻譯)。

    備註

    您可以針對身分識別使用三個選項的其中一種:應用程式註冊、使用者指派的受控識別和系統指派的受控識別。 應用程式註冊是最安全的選項。 若要使用應用程式註冊,您必須有適當的權限。 如需詳細資訊,請參閱 Azure Resource Manager 服務連線特殊案例 (部分機器翻譯)。

  2. 登入您的 Azure DevOps 組織 (https://dev.azure.com/<your-organization>)。 將 <your-organization> 取代為您的專案識別碼。

  3. 選取您的專案

  4. 選取 [專案設定]>[服務連線]>[建立服務連線]

  5. 在 [新增服務連線] 窗格中,選取 [Azure Resource Manager],然後選取 [下一步]

  6. 輸入下列服務連線詳細資料,然後選取 [儲存] 以建立服務連線。

    領域 價值觀
    身分識別類型 受控識別
    受控識別的訂用帳戶 輸入包含受控識別的 Azure 訂用帳戶。
    受控識別的資源群組 輸入包含受控識別的資源群組。
    受控識別 輸入受控識別的名稱。
    服務連線的範圍層級 訂閱
    服務連線訂閱 輸入裝載開發人員中心資源的 Azure 訂用帳戶識別碼。
    服務連線名稱 為服務連線輸入唯一的名稱。
    授予所有管線的存取許可權 選取此核取方塊。
  7. 選取 [儲存]。

向服務連線授與部署環境專案的存取權

部署環境會使用角色型存取控制來授與對部署環境資源執行特定活動的權限。 若要從 CI/CD 管線進行變更,您必須向受控識別授與部署環境使用者角色。

  1. Azure 入口網站中,移至您的部署環境專案。
  2. 選取 [存取控制 (IAM)]>[新增]>[新增角色指派]
  3. 在 [角色] 索引標籤上,選取工作職能角色清單中的 [部署環境使用者]
  4. 在 [成員] 索引標籤上,依序選取 [受控識別] 和 [選取成員]
  5. 在 [選取受控識別] 索引標籤的 [受控識別] 下,依序選取 [專案] 身分識別、專案名稱和 [選取]
  6. 在 [檢閱 + 指派] 索引標籤上,選取 [檢閱 + 指派] 以新增角色指派。

您現在可以使用 Azure Pipelines 工作流程定義中的服務連線,來存取您的部署環境。

向您的帳戶授與部署環境專案的存取權

若要檢視其他使用者建立的環境 (包括服務連線),您必須向您的帳戶授與部署環境專案的讀取存取權限。

  1. Azure 入口網站中,移至您的部署環境專案。
  2. 選取 [存取控制 (IAM)]>[新增]>[新增角色指派]
  3. 在 [角色] 索引標籤上,選取工作職能角色清單中的 [部署環境讀者]
  4. 在 [成員] 索引標籤上,選取 [選取成員],然後搜尋您自己的帳戶。
  5. 從清單中選取您的帳戶,然後選取 [選取]
  6. 在 [檢閱 + 指派] 索引標籤上,選取 [檢閱 + 指派] 以新增角色指派。

您現在可以檢視您的 Azure Pipelines 工作流程所建立的環境了。

設定管線

編輯 Azure Repos 存放庫中的 azure-pipelines.yml 檔案以自訂管線。

在管線中,您會定義用來建立環境的步驟。 在此管線中,您會將用來建立環境的步驟定義為作業,而作業由一系列按順序執行的步驟構成,作為一個整體單元來運行。

若要自訂管線,您需要:

  • 指定要使用的服務連線。
  • 使用內嵌指令碼執行建立環境的 Azure CLI 命令。

Azure CLI 是一個命令行工具,會提供一組命令來使用 Azure 資源。 若要了解更多的 Azure CLI 命令,請參閱 az devcenter (部分機器翻譯)。

  1. 在 Azure DevOps 專案中,選取 [存放庫]>[檔案]

  2. 在 [檔案] 窗格的 [.ado] 資料夾中,選取 [azure-pipelines.yml] 檔案。

  3. 在 azure-pipelines.yml 檔案中,編輯現有的內容:

    • <AzureServiceConnectionName> 取代為您先前建立的服務連線名稱。

    • Inline script 輸入中,將下列每個預留位置取代為適合您 Azure 環境的值:

      預留位置 價值觀
      <DevCenterName> 開發人員中心的名稱。
      <project-name> 您專案的名稱。
      <catalog-name> 目錄的名稱。
      <environment-definition-name> 請勿變更。 定義所使用的環境定義。
      <environment-type> 環境類型。
      <environment-name> 指定新環境的名稱。
      <parameters> 請勿變更。 參考定義環境參數的 JSON 檔案。
  4. 選取 [認可] 以儲存變更。

  5. 在 [認可變更] 窗格中,輸入認可訊息,然後選取 [認可]

使用管線建立環境

接下來,執行管線以建立部署環境。

  1. 在 Azure DevOps 專案中,選取 [管線]
  2. 選取您先前建立管線,然後選取 [執行管線]
  3. 您可以先選取管線名稱,再選取 [執行],以檢查管線執行進度。 選取執行以查看管線執行的詳細資料。
  4. 您也可以在 Azure 入口網站中選取開發人員中心、選取專案,然後選取 [環境],以檢查環境建立進度。

您可以在 CI 和/或 CD 管線中的任何位置插入此作業。 請參閱 Azure Pipelines 文件 (部分機器翻譯),以深入了解如何建立和管理管線。

清理資源

不再需要本教學課程中建立的資源後,您可以將其刪除,以免產生費用。

使用下列命令刪除您在本教學課程中建立的環境:

az devcenter dev environment delete --dev-center <DevCenterName> --project-name <DevCenterProjectName> --name <DeploymentEnvironmentInstanceToCreateName> --yes