管理環境中的 VM 資源
Azure DevOps Services |Azure DevOps Server 2022 |Azure DevOps Server 2020
本文說明如何在環境中使用虛擬機 (VM) 資源來管理跨多部機器的 Azure Pipelines 部署。 您也可以在自己的伺服器上安裝代理程式,以進行輪流部署。
VM 資源可以存在於 開發、測試或生產環境等環境中。 定義環境之後,您可以使用部署將 VM 新增至目標。 環境的部署歷程記錄提供每個 VM 到管線的可追蹤性。
必要條件
- 存取連線至管線的來源存放庫。
- 在您想要連線到環境的 VM 上下載和執行可執行腳本的存取權和許可權。
- 包含環境的 Azure DevOps 專案中的專案管理員或建置系統管理員 許可權 。 如需詳細資訊,請參閱 管線安全性資源。
- 部署集區的系統管理員角色,或組織可用的目標伺服器集合。 如需詳細資訊,請參閱 部署集區和環境許可權。
注意
若要設定部署群組代理程式,或在註冊 VM 環境資源時看到錯誤,請確定您已將個人存取令牌 (PAT) 範圍設定為 [所有可存取的組織]。
建立環境
使用下列程式將 VM 資源新增至環境。 您可以使用相同的程式來設定實體機器。
新增 VM 資源
在您的 Azure DevOps 專案中,移至 [管線>環境],然後選取 [建立環境] 或 [新增環境]。
在第一個 [新增環境] 畫面上,新增 [ 名稱 ] 和選擇性 [描述]。
在 [資源] 下,選取 [虛擬機],然後選取 [下一步]。
複製註冊腳本
VM 資源的代理程式腳本就像自我裝載代理程式的腳本,並使用相同的命令。 這些腳本包含登入使用者的 Azure DevOps 個人存取令牌(PAT),在產生腳本三小時後到期。
在下一個 [新增環境] 畫面上,選擇 [操作系統] 下的 [Linux]。
複製 Linux 註冊腳本。
針對新增至環境的所有 Linux VM,腳本都相同。 如需安裝代理程式腳本的詳細資訊,請參閱 自我裝載 Linux 代理程式。
執行複製的腳本
選取 [ 關閉],並記下新環境已建立。 若要再次複製腳本,例如,如果您的 PAT 到期,請選取 [ 新增資源]。
在您想要向環境註冊的每個目標 VM 上執行複製的腳本。
注意
如果 VM 上已經有另一個代理程式正在執行,請為代理程式提供唯一的名稱,以向環境註冊。
註冊 VM 之後,它就會顯示為環境 [資源] 索引標籤下的資源。
在管線中使用 VM
在 YAML 管線中,您可以藉由參考 VM 環境來鎖定 VM。 根據預設,作業會以該環境 resourceName
註冊的所有 VM 為目標。
注意
當您重試階段時,部署會在所有 VM 上重新執行,而不只是失敗的目標。
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- deployment: VMDeploy
displayName: Deploy to VM
environment:
name: VMenv
resourceName: VMenv
resourceType: virtualMachine
strategy:
runOnce:
deploy:
steps:
- script: echo "Hello world"
注意
resourceType
之類的virtualMachine
值會區分大小寫。 不正確的大小寫會導致找不到相符的資源。
您可以在 中 resourceName
指定它們,以部署至環境中的特定 VM。 下列範例只會部署到環境中名為 RESOURCE-PC
的 VMenv
VM 資源。
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- deployment: VMDeploy
displayName: Deploy to VM
environment:
name: VMenv
resourceType: virtualMachine
resourceName: RESOURCE-PC # only deploy to the VM resource named RESOURCE-PC
strategy:
runOnce:
deploy:
steps:
- script: echo "Hello world"
如需 YAML 管線部署作業的詳細資訊,請參閱 YAML 管線架構。
新增和管理標籤
標籤是一種在環境中以特定 VM 作為部署目標的方法。 標籤各限制為 256 個字元。 您可以使用的標籤數目沒有限制。
您可以在互動式註冊腳本或透過UI中新增標籤或移除 VM 的標籤,方法是選取 VM 資源的 [更多動作]。
如果您指定多個標記,管線只會使用包含所有標記的 VM。 下列範例只會以同時具有 windows
和 prod
標籤的 VM 為目標。 只有一個或沒有標記的 VM 不會設為目標。
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- deployment: VMDeploy
displayName: Deploy to VM
environment:
name: VMenv
resourceType: virtualMachine
tags: windows,prod # only deploy to VMs with both windows and prod tags
strategy:
runOnce:
deploy:
steps:
- script: echo "Hello world"
套用部署策略
您可以套用部署 strategy
來定義如何推出應用程式。 VM 同時 runOnce
支援 和 rolling
策略。 如需部署策略和生命週期攔截的詳細資訊,請參閱 部署策略。
檢視部署歷程記錄
選取 [ 部署] 索引 標籤,以完整追蹤認可和工作專案,以及每個環境和資源的跨管線部署歷程記錄。