建立和目標環境
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 更新時,管線會失敗。
必要條件
若要新增環境,您需要下列必要條件:
- Azure DevOps 組織與專案。
- 項目中環境的建立者角色。
建立環境
若要建立您的第一個環境:
在 登入您的 Azure DevOps 組織
https://dev.azure.com/{yourorganization}
,然後開啟您的專案。選取 [管線>環境>建立環境]。
輸入環境的信息,然後選取 [ 建立]。 您稍後可以將資源新增至現有的環境。
提示
您可以建立空的環境,並從部署作業參考它,以便針對環境記錄部署歷程記錄。
您可以使用 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)
使用手動核准檢查
為了控制生產環境的部署,Azure Pipelines 支援對環境進行手動核准檢查。 資源擁有者可以使用核准檢查,以控制管線中的階段何時耗用資源。 資源擁有者可以定義核准和檢查,這些核准必須滿足才能開始耗用該資源的階段。
環境 建立者、 系統管理員和 使用者 角色,但無法 管理讀取者 角色,可以管理核准和檢查。 身為環境擁有者,您可以使用核准檢查,手動控制階段何時應該執行。 如需詳細資訊,請參閱 定義核准和檢查。
請參閱執行詳細數據中的環境
在管線執行詳細數據的 [ 環境] 索引標籤下,您可以看到管線執行部署作業所鎖定的所有環境。
注意
如果您使用 Azure Kubernetes Service (AKS) 私人叢集,則無法使用 [ 環境 ] 索引卷標。
檢視部署歷程記錄
您可以在 [Azure Pipelines 環境] 區段中選取 [部署] 索引卷標,以檢視部署歷程記錄。
從以特定環境為目標的所有管線檢視作業。 例如,每個都有其管線的兩個微服務可以部署到相同的環境。 部署歷程記錄有助於識別影響環境的所有管線,也有助於將每個管線的部署順序可視化。
若要向下切入至作業詳細數據,請選取部署頁面上的 [變更 ] 和 [工作專案 ] 索引標籤。 索引標籤會顯示部署至環境的認可和工作項目清單。 每個清單專案都代表該部署中的新專案。
在 [ 變更 ] 索引標籤上,第一個清單包含該點的所有認可,而下列清單只包含該作業的變更。 如果多個認可系結至相同的作業,[ 變更 ] 索引標籤上有多個結果。
如果多個工作項目系結至相同的作業,[工作專案] 索引卷標上有多個結果。
安全性
您可以藉由設定用戶權力和管線許可權來保護環境。
使用者權限
您可以控制誰可以使用用戶權力來建立、檢視、使用及管理環境。 有四個角色: 建立者 具有所有環境、 讀者、 用戶和 系統管理員的範圍。
若要使用環境的 [使用者許可權] 面板新增使用者,請移至您想要授權的特定環境,選取 [更多動作] 圖示,然後選取 [安全性]。
在 [安全性] 頁面的 [用戶許可權] 面板中,選取 [新增],然後選取 [使用者或群組] 和適當的 [角色]。
在 [ 用戶許可權 ] 面板中,您也可以設定繼承的許可權,並覆寫您環境的角色。
角色 | 描述 |
---|---|
建立者 | 全域角色,可從環境中樞安全性選項取得。 此角色的成員可以在專案中建立環境。 參與者預設會新增為成員。 環境不存在時觸發 YAML 管線的必要專案。 |
讀取者 | 此角色的成員可以檢視環境。 |
使用者 | 建立或編輯 YAML 管線時,此角色的成員可以使用環境。 |
系統管理員 | 此角色的成員可以管理許可權、建立、管理、檢視和使用環境。 針對特定環境,其建立者預設會新增為 Admininistrator。 系統管理員也可以開啟所有管線環境存取權。 |
重要
當您建立環境時,只有建立者具有系統管理員角色。
角色 | 描述 |
---|---|
建立者 | 全域角色,可從環境中樞安全性選項取得。 此角色的成員可以在專案中建立環境。 參與者預設會新增為成員。 環境不存在時觸發 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 現在會失敗這些作業。