管理环境中的 VM 资源
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
本文介绍如何在环境中使用虚拟机(VM)资源来管理跨多台计算机的 Azure Pipelines 部署。 还可以在自己的服务器上安装代理,以便进行滚动部署。
VM 资源可以存在于 开发、测试或生产等环境中。 定义环境后,可以通过部署将 VM 添加到目标。 环境的部署历史记录提供从每个 VM 到管道的可跟踪性。
先决条件
注意
若要配置部署组代理,或者在注册 VM 环境资源时看到错误,请确保将个人访问令牌(PAT)范围设置为 所有可访问的组织。
创建环境
使用以下过程将 VM 资源添加到环境。 可以使用相同的过程来设置物理计算机。
添加 VM 资源
在 Azure DevOps 项目中,转到 Pipelines>环境,然后选择“创建环境”或“新建环境”。
在第一个“新建环境”屏幕上,添加名称和可选说明。
在“资源”下,选择“虚拟机”,然后选择“下一步”。
复制注册脚本
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 来部署到环境中的特定 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 个字符。 可以使用的标记数量没有限制。
可以通过为 VM 资源选择“更多操作”,在交互式注册脚本中或通过 UI 为 VM 添加标记或删除标记。
如果指定多个标记,则管道仅使用包含所有标记的 VM。 以下示例仅面向同时具有标记和prod
标记的 windows
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
策略。 有关部署策略和生命周期挂钩的详细信息,请参阅 部署策略。
查看部署历史记录
选择“部署”选项卡可查看提交和工作项的完整跟踪信息,以及每个环境和资源的跨管道部署历史记录。