共用方式為


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

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

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

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

在本教學課程中,您會了解如何:

  • 建立及設定 Azure Repos 存放庫
  • 將目錄 連線 至您的開發人員中心
  • 設定服務連線
  • 建立管線
  • 建立環境
  • 測試 CI/CD 管線

必要條件

建立及設定 Azure Repos 存放庫

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

設定環境類型

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

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

  1. 登入 Azure 入口網站

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

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

  4. 使用下列步驟建立三種環境類型:Sandbox、FunctionApp、WebApp。 在 [建立環境類型] 中,輸入下列資訊,然後選取 [ 新增]。

    名稱 數值
    名稱 輸入環境類型的名稱。
    Tags (標籤) 輸入標籤名稱和標籤值。
  5. 檢查您的 Azure 入口網站 通知,確認已新增環境類型。

建立項目環境類型:

  1. 在左側功能表中 ,選取 [管理],選取 [專案],然後選取您想要使用的專案。

  2. 在 [環境設定] 下方的左側功能表中,選取 [環境類型],然後選取 [新增]。

  3. 使用下列步驟來新增三種環境類型:Sandbox、FunctionApp、WebApp。 在 [將環境類型新增至 <項目名稱>] 中,輸入或選取下列資訊:

    名稱
    類型 選取開發人員中心層級環境類型,以針對特定項目啟用。
    部署訂用帳戶 選取建立環境的訂用帳戶。
    部署身分識別 選取系統指派的身分識別或使用者指派的受控識別,代表使用者執行部署。
    環境資源>環境建立者角色的許可權 選取角色以授與環境資源的存取權。
    環境資源>的許可權 其他存取權 選取要指派給環境資源上特定角色的使用者或 Microsoft Entra 群組。
    Tags (標籤) 輸入標籤名稱和標籤值。 這些標籤會套用在建立為環境一部分的所有資源上。
  4. 檢查您的 Azure 入口網站 通知,確認已新增環境類型。

設定服務連線

在 Azure Pipelines 中,您會在 Azure DevOps 專案中建立 服務連線 ,以存取 Azure 訂用帳戶中的資源。 當您建立服務連線時,Azure DevOps 會建立 Microsoft Entra 服務主體物件。

  1. 登入您的 Azure DevOps 組織 (https://dev.azure.com/<your-organization>),然後選取您的專案。 將 <your-organization> 文字佔位元取代為您的項目標識碼。

  2. 選取 [項目設定>服務連線>+ 新增服務連線]。

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

  4. 選取 [ 服務主體][自動] 驗證方法,然後選取 [ 下一步]。

  5. 輸入服務連線詳細數據,然後選取 [ 儲存 ] 以建立服務連線。

    欄位
    範圍層級 訂用帳戶
    訂用帳戶 選取裝載開發人員中心資源的 Azure 訂用帳戶。
    資源群組 選取包含開發人員中心資源的資源群組。
    服務連線名稱 輸入服務連線的唯一名稱。
    授與所有管線的訪問許可權 已核取。
  6. 從服務連線清單中,選取您稍早建立的連線,然後選取 [ 管理服務主體]。 Azure 入口網站 會在個別的瀏覽器索引標籤中開啟,並顯示服務主體詳細數據。

  7. 在 Azure 入口網站 中,複製 [顯示名稱] 值。 在下一個步驟中使用此值,將執行負載測試的許可權授與服務主體。

將服務連線存取權授與 ADE 專案

Azure 部署環境會使用角色型訪問控制來授與許可權,以在 ADE 資源上執行特定活動。 若要從 CI/CD 管線進行變更,您可以將部署環境使用者角色授與服務主體。

  1. Azure 入口網站 中,移至您的 ADE 專案。
  2. 選取 [訪問控制][IAM][>新增>角色指派]。
  3. 在 [角色] 索引標籤中,選取作業功能角色清單中的 [部署環境使用者]。
  4. 在 [ 成員] 索引標籤中,選取 [ 選取成員],然後使用您先前複製的顯示名稱來搜尋服務主體。
  5. 選取服務主體,然後選取 [ 選取]。
  6. 在 [ 檢閱 + 指派] 索引標籤中,選取 [ 檢閱 + 指派 ] 以新增角色指派。

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

將您的帳戶存取權授與 ADE 專案

若要檢視其他使用者所建立的環境,包括服務連線,您必須將ADE專案的讀取許可權授與您的帳戶。

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

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

設定管線

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

在管線中,您會定義建立環境的步驟。 在此管線中,您會定義將環境建立為作業的步驟,這是一系列以單位順序執行的步驟。

若要自定義管線,您可以:

  • 指定要使用的服務 連線,而管線會使用 Azure CLI 來建立環境。
  • 使用內嵌腳本來執行建立環境的 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 環境適用的值:

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

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

使用管線建立環境

接下來,您會執行管線來建立 ADE 環境。

  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