建立環境並將其設為目標

Azure DevOps Services |Azure DevOps Server 2022 |Azure DevOps Server 2020

環境是您可以從管線部署的目標資源集合。 環境名稱的一般範例包括開發、測試、QA、預備和生產環境。 Azure DevOps 環境代表管線部署軟體的邏輯目標。

傳統管線中無法使用 Azure DevOps 環境。 針對傳統管線, 部署群組 提供類似的功能。

環境提供下列優點。

優點 描述
部署歷程記錄 管線名稱和執行詳細數據會記錄到環境及其資源部署。 在以相同環境或資源為目標的多個管線內容中, 環境部署歷程記錄 有助於識別變更的來源。
認可和工作專案的可追蹤性 檢視管線執行中以環境為目標的工作。 您也可以檢視 新部署至環境的認可和工作專案 。 可追蹤性也允許追蹤程式碼變更(認可)或功能/錯誤修正(工作專案)是否已到達環境。
診斷資源健康情況 驗證應用程式是否在想要的狀態運作。
安全性 藉由指定允許哪些使用者和管線以環境為目標來保護環境。

雖然環境是資源的群組,但資源本身代表實際的部署目標。 目前支援 Kubernetes 資源和虛擬機資源類型。

當您撰寫 YAML 管線並參考不存在的環境時,Azure Pipelines 會在執行作業的使用者已知且可指派許可權時自動建立環境。 當 Azure Pipelines 沒有建立環境的使用者相關信息時(例如:來自外部程式代碼編輯器的 YAML 更新),如果環境不存在,您的管線就會失敗。

必要條件

  • 您必須擁有環境的建立者角色,才能新增環境。

建立環境

  1. 登入您的組織: https://dev.azure.com/{yourorganization} 並選取您的專案。

  2. 選取 [管線>環境>建立環境]。

    Environments

  3. 輸入環境的信息,然後選取 [ 建立]。 資源稍後可以新增至現有的環境。

    Screenshot of creating a new environment.

使用管線來建立及部署至環境。 如需詳細資訊,請參閱 操作說明指南

提示

您可以建立空的環境,並從部署作業參考它。 這可讓您記錄環境部署歷程記錄。

從部署作業以環境為目標

部署作業是要循序執行的步驟集合。 部署作業可用來以整個環境(資源群組)為目標,如下列 YAML 代碼段所示。 管線將會在 myVM 計算機上執行,因為已指定資源名稱。

- stage: deploy
  jobs:
  - deployment: DeployWeb
    displayName: deploy Web App
    pool:
      vmImage: 'Ubuntu-latest'
    # creates an environment if it doesn't exist
    environment: 
      name: 'smarthotel-dev'
      resourceName: myVM
      resourceType: virtualMachine
    strategy:
      runOnce:
        deploy:
          steps:
          - script: echo Hello world

從部署作業以環境內的特定資源為目標

您可以將部署的目標範圍設定為環境中的特定資源。 然後,您可以記錄環境中特定資源的部署歷程記錄。 部署作業 的步驟會自動從部署作業的目標資源繼承 服務連線詳細數據。

environment: 
  name: 'smarthotel-dev.bookings'
strategy: 
 runOnce:
   deploy:
     steps:
     - task: KubernetesManifest@0
       displayName: Deploy to Kubernetes cluster
       inputs:
         action: deploy
         namespace: $(k8sNamespace)
         manifests: $(System.ArtifactsDirectory)/manifests/*
         imagePullSecrets: $(imagePullSecret)
         containers: $(containerRegistry)/$(imageRepository):$(tag)
         # value for kubernetesServiceConnection input automatically passed down to task by environment.resource input

執行詳細數據中的環境

您可以在管線執行詳細數據的 [環境] 索引標籤下,找到依特定管線執行之部署作業為目標的所有環境。

Environments in run details

如果您使用 AKS 私人叢集,則無法使用 [ 環境 ] 索引標籤。

核准

使用核准檢查手動控制階段何時應該執行。 使用核准檢查來控制部署到生產環境的部署。 資源擁有者可以使用檢查,以控制管線中的階段何時耗用資源。 身為資源擁有者,例如環境,您可以 定義核准並檢查在取用該資源的階段之前必須滿足的核准

我們支援對環境進行手動核准檢查。 如需詳細資訊,請參閱 核准

Creator、管理員 istrator 和使用者角色可以管理核准和檢查。 讀者角色無法管理核准和檢查。

部署歷程記錄

環境中的部署歷程記錄檢視提供下列優點。

  • 從以特定環境為目標的所有管線檢視作業。 例如,兩個微服務,每個都有自己的管線,都會部署到相同的環境。 部署歷程記錄清單有助於識別影響此環境的所有管線,也有助於將每個管線的部署順序可視化。

    Screenshot of deployment history listing.

  • 向下切入至作業詳細數據,以查看已部署至環境的認可和工作項目清單。 認可和工作專案清單是部署之間的新專案。 您的第一個清單包含所有認可,而下列清單只會包含變更。 如果多個認可系結至相同的提取要求,您會在工作項目和變更索引標籤上看到多個結果。

    Screenshot of commits under deployment history.

  • 如果多個工作項目系結至相同的提取要求,您會在 [工作專案] 索引標籤上看到多個結果。

    Screenshot of work items under deployment history.

安全性

使用者權限

控制誰可以使用用戶權力來建立、檢視、使用及管理環境。 有四個角色 - Creator (範圍:所有環境)、讀者、使用者和 管理員 istrator。 在特定環境 的使用者許可權 面板中,您可以設定繼承的許可權,而且您可以覆寫每個環境的角色。

  1. 移至您想要授權的特定 環境
  2. 選取 >[安全性] 以檢視設定。
  3. 選取 [用戶許可權>][+新增>使用者或群組],然後選取適當的角色。
角色 描述
建立者 全域角色,可從環境中樞安全性選項取得。 此角色的成員可以在專案中建立環境。 參與者預設會新增為成員。 環境不存在時觸發 YAML 管線的必要專案。
讀取者 此角色的成員可以檢視環境。
使用者 建立或編輯 YAML 管線時,此角色的成員可以使用環境。
系統管理員 此角色的成員可以管理許可權、建立、管理、檢視和使用環境。 針對特定環境,其建立者預設會新增為 管理員 inistrator。 管理員 istrators 也可以開啟所有管線的環境存取權。

重要

當您建立環境時,只有建立者具有系統管理員角色。

角色 描述
建立者 全域角色,可從環境中樞安全性選項取得。 此角色的成員可以在專案中建立環境。 參與者預設會新增為成員。 環境不存在時觸發 YAML 管線的必要專案。
讀取者 此角色的成員可以檢視環境。
使用者 建立或編輯 YAML 管線時,此角色的成員可以使用環境。
系統管理員 除了使用環境之外,此角色的成員還可以管理環境所有其他角色的成員資格。 建立者預設會新增為成員。

管線權限

使用管線許可權來授權所有或選取的管線以部署至環境。

  • 若要移除環境或資源的 [開啟存取],請選取 [限制管線許可權] 中的 [限制許可權]。
  • 若要允許特定管線部署到環境或特定資源,請從管線清單中選取 + 並選擇。

下一步

定義核准和檢查

常見問題集

問:當我嘗試建立環境時,為什麼會收到錯誤訊息?

答:如果您看到「拒絕存取:{User} 需要建立許可權才能執行動作」的訊息,請檢查您的組織層級許可權。 移至 [組織設定]>[使用者],並檢查您是否具有專案關係人角色。 專案關係人角色無法建立環境。 請變更您的存取層級,然後確認您能否建立環境。 如需詳細資訊,請參閱使用者和權限管理常見問題

問:為什麼我收到錯誤「工作XXXX:找不到環境XXXX。 此環境不存在或尚未被授權使用」?

答:以下是失敗的一些可能原因:

  • 當您撰寫 YAML 管線並參考 YAML 檔案中不存在的環境時,Azure Pipelines 在某些情況下會自動建立環境:

    • 您可以在 Azure Pipelines Web 體驗中使用 YAML 管線建立精靈,並參考尚未建立的環境。
    • 您使用 Azure Pipelines Web 編輯器更新 YAML 檔案,並在對不存在的環境新增參考之後儲存管線。
  • 在下列流程中,Azure Pipelines 沒有建立環境之使用者的相關信息:您可以使用另一個外部程式碼編輯器更新 YAML 檔案、新增不存在環境的參考,然後觸發手動或持續整合管線。 在此情況下,Azure Pipelines 並不知道使用者。 先前,我們藉由將所有專案參與者新增至環境的系統管理員角色,來處理此案例。 接著,專案的任何成員都可以變更這些權限,並防止其他人存取環境。

  • 您可以使用 變數 來建立環境,或使用 templateContext將屬性傳遞至範本建立環境時,運行時間參數 將無法運作,因為它們會在運行時間擴充。

  • 具有項目關係人存取層級的用戶無法建立環境,因為專案關係人無法存取存放庫。