共用方式為


建立和針對目標環境

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

本文說明如何建立和鎖定 Azure Pipelines 環境。 環境是由資源集合組成的,您可以從管線中進行部署來針對這些資源。

一個環境代表管道部署軟體的邏輯目標。 一般環境名稱包括開發、測試、QA、預備和生產環境。

注意

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

環境提供下列優點:

  • 部署歷程記錄。 管線名稱和執行詳細資訊將被記錄以進行環境及其資源的部署。 在以相同環境或資源為目標的多個管線內容中,您可以使用 環境的部署歷程記錄 來識別變更的來源。

  • 認可和工作專案的可追蹤性。 您可以檢視管線執行中的作業,這些作業以環境為目標。 您也可以檢視 新部署至環境的程式提交和工作專案 。 可追蹤性也可讓您追蹤程式代碼變更認可或功能/錯誤修正工作專案是否已到達環境。

  • 診斷資源健康情況。 您可以驗證應用程式是否在其所需狀態運作。

  • 安全性。 您可以藉由指定哪些使用者和管線允許存取環境來保護環境。

環境是資源的群組,其中資源本身代表實際的部署目標。 Azure Pipelines 環境目前支援 Kubernetes虛擬機 資源類型。

如果 YAML 管線引用一個不存在的環境:

  • 當執行作業的使用者已知且可指派許可權時,Azure Pipelines 會自動建立環境。

  • 當 Azure Pipelines 沒有執行作業之使用者的相關信息時,例如從外部程式代碼編輯器進行 YAML 更新時,管線會失敗。

必要條件

若要新增環境,您需要下列必要條件:

建立環境

若要建立您的第一個環境:

  1. 請登入您的 Azure DevOps 組織https://dev.azure.com/{yourorganization},然後開啟您的專案。

  2. 選取 管線>環境>建立環境

    顯示環境的螢幕快照。

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

    建立新環境的螢幕快照。

提示

您可以建立一個空的環境,並在部署作業中參考它,以便記錄針對該環境的部署歷程。

若要以程式設計方式建立和管理環境,請使用 Azure DevOps 環境 REST API

您可以使用 Azure Pipelines 部署至環境。 如需詳細資訊,請參閱 使用 Azure Pipelines 建置和部署至 Azure Kubernetes Service。

將環境指定為部署作業的目標

部署作業是循序執行的步驟集合。 您可以使用部署作業以整個環境群組的資源為目標,如下列範例 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

將部署作業中的特定環境資源設為目標

您可以將部署目標限定在環境內的特定資源,以便記錄特定資源的部署歷程記錄。 部署作業的步驟會自動從部署作業目標的資源繼承服務連線詳細數據。

在下列範例中,kubernetesServiceConnection 的值會自動從 environment.resource 輸入傳遞到工作。

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)

注意

如果您使用私人 AKS 叢集,請確定您已連線到叢集的虛擬網路,因為 API 伺服器端點不會透過公用 IP 位址公開。

Azure Pipelines 建議在可存取叢集虛擬網路的 VNET 內設定自我裝載代理程式。 如需詳細資訊,請參閱 連線到私人叢集 的選項。

使用手動審批檢查

為了控制生產環境的部署,Azure Pipelines 支援對環境進行手動核准檢查。 資源擁有者可以使用核准檢查,以控制管線中的階段何時耗用資源。 資源擁有者可以定義核准和檢查,這些核准必須滿足才能開始耗用該資源的階段。

環境 建立者系統管理員使用者 角色可以管理核准和檢查,但讀取者 角色則無法。 身為環境管理者,您可以使用核准檢查來手動掌控階段何時應該執行。 如需詳細資訊,請參閱 定義核准和檢查

請參閱執行明細中的環境

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

顯示執行詳細數據中的環境螢幕快照。

注意

如果您使用 Azure Kubernetes Service (AKS) 私有叢集,則 [環境] 索引標籤將無法使用。

檢視部署歷程記錄

您可以在 [Azure Pipelines 環境] 區段中選取 [部署] 索引卷標,以檢視部署歷程記錄。

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

    顯示部署歷程記錄清單的螢幕快照。

  • 若要向下切入至作業詳細數據,請選取部署頁面上的 [變更 ] 和 [工作專案 ] 索引標籤。 頁籤會顯示部署到環境的提交和工作項目清單。 每個清單專案都代表該部署中的新專案。

    變更索引標籤上,第一個清單項目包含該時點的所有提交,而下列清單項目只包含該作業的變更。 如果多個提交關聯至相同的作業,在變更標籤上會有多個結果。

    部署歷程記錄中提交的截圖。

  • 如果多個工作項目系結至相同的作業,則在 [工作項目] 標籤頁上會出現多個結果。

    工作項目部署歷程記錄的螢幕快照。

安全性

您可以藉由設定用戶權力和管線許可權來保護環境。

使用者權限

您可以控制誰可以使用用戶權力來建立、檢視、使用及管理環境。 有四個角色:建立者負責所有環境,讀者用戶系統管理員

若要使用環境的 [使用者許可權] 面板新增使用者,請移至您想要授權的特定環境,選取 [更多動作] 圖示,然後選取 [安全性]。

在 [安全性] 頁面的 [用戶許可權] 面板中,選取 [新增],然後選取 [使用者或群組] 和適當的 [角色]。

在 [ 用戶許可權 ] 面板中,您也可以設定繼承的許可權,並覆寫環境中的角色。

角色 描述
創作者 全域角色,可從環境中樞安全性選項取得。 此角色的成員可以在專案中建立環境。 預設情況下,參與者會被設置為成員。 當環境不存在時,必須觸發 YAML 管線。
讀取器 此角色的成員可以檢視環境。
使用者 建立或編輯 YAML 管線時,此角色的成員可以使用環境。
系統管理員 此角色的成員可以管理許可權、建立、管理、檢視和使用環境。 針對特定環境,其建立者預設會新增為系統管理員。 系統管理員也可以開放某個環境供所有管線存取。

重要

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

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

管線權限

使用 [安全性] 頁面的 [管線許可權] 面板,授權所有或選取的管線以部署至環境。

  • 若要移除環境或資源的開啟存取權,請選取 [限制管線許可權] 中的 [限制許可權]。

  • 當許可權受到限制時,您可以允許特定管線部署到環境或特定資源。 從要允許的管線清單中選取 + 並選擇 。

常見問題集

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

如果您看到拒絕存取訊息: {User} 需要建立許可權才能執行動作,請移至 [組織設定>使用者] 以檢查您是否具有專案關係人角色。 關係人角色無法建立環境,因為關係人無法存取儲存庫。

請變更您的存取層級,然後確認您能否建立環境。 如需詳細資訊,請參閱使用者和權限管理常見問題

為什麼我收到無法找到環境的錯誤?

如果您看到訊息 作業 XXXX:找不到環境 XXXX。環境不存在或尚未獲得使用授權。,失敗可能有數個原因。

  • 建立環境時,執行階段參數無法運作,因為參數只會在執行階段展開。 您可以使用變數建立環境,或使用 templateContext 將屬性傳遞至範本

  • Azure Pipelines 可能沒有建立環境之使用者的相關資訊。

    在 YAML 管線檔案中提到一個不存在的環境時,Azure Pipelines 會在下列情況自動建立該環境:

    • 您使用 Azure Pipelines Web 體驗中的 YAML 管線建立精靈,並參考尚未建立的環境。
    • 您使用 Azure Pipelines Web 編輯器更新 YAML 檔案,並且在將參考新增至環境之後儲存管線。

    在下列情況,Azure Pipelines 沒有建立環境之使用者的相關資訊,因此管線會失敗。

    • 使用另一個外部程式碼編輯器即可更新 YAML 檔案。
    • 您將一個引用新增至不存在的環境,然後觸發手動或持續整合管線。

    Azure Pipelines 先前處理這類案例的方式,是將所有專案參與者新增至環境的系統管理員角色。 接著,專案的任何成員都可以變更這些權限,並防止其他人存取環境。 為了避免這個結果,Azure Pipelines 現在會將這些作業標記為失敗。