Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020
Azure Pipelines 环境 是一组 资源 ,可以使用管道中的部署作为目标。 典型环境包括开发、测试或生产环境。
若要向环境添加物理或虚拟机(VM)资源,请在计算机上安装代理。 然后,环境的部署历史记录从每台计算机提供可跟踪性。 本文介绍如何定义和使用环境来管理跨 VM 或服务器资源的部署。
注意
Azure DevOps 环境仅适用于 YAML 管道。 对于经典管道, 部署组 提供类似的功能。
先决条件
若要执行本文中的过程,需要满足以下先决条件:
- 访问可在其中创建管道的源存储库。 有关详细信息,请参阅 支持的源存储库。
- 部署池的管理员角色,即可供 Azure DevOps 组织使用的目标服务器集。 有关详细信息,请参阅 在 Azure Pipelines 中设置部署组安全性。
- 包含环境的 Azure DevOps 项目中的项目管理员或生成管理员 权限 。 有关详细信息,请参阅 资源安全性。
- 在要连接到环境的 VM 上下载和运行可执行脚本的访问权限和权限。
创建环境并添加 VM
使用以下过程将 VM 或物理计算机添加到环境。
使用 VM 资源创建环境
在 Azure DevOps 项目中,转到管道>环境,然后选择创建环境或新建环境。
在 “新建环境 ”屏幕上,输入 名称和 可选 说明。
在“资源”下,选择“虚拟机”,然后选择“下一步”。
复制注册脚本
VM 资源的代理脚本类似于自承载代理的脚本,并使用相同的命令。 这些脚本包括已登录用户的 Azure DevOps 个人访问令牌(PAT),该令牌在生成脚本三小时后过期。 只需 PAT 才能安装代理。
注意
若要配置部署组代理,或者在注册 VM 环境资源时收到错误,请尝试将 PAT 访问范围设置为用户设置>中的所有可访问组织。
在 虚拟机资源 屏幕上,选择 作系统下的 Linux。
选择图标以复制 Linux 注册脚本。
对于添加到环境的所有 Linux VM,该脚本是相同的。 有关安装代理脚本的详细信息,请参阅 自承载 Linux 代理。
在 VM 上运行复制的注册脚本
选择 关闭。 将创建新环境。 若要再次复制脚本,例如,如果 PAT 过期,请在环境的页面上再次选择 “添加资源 ”。
在要向环境注册的每个目标 VM 上运行复制的脚本。
注意
如果 VM 上已运行另一个代理,请为新
agent代理提供唯一名称,以便向环境注册。注册 VM 后,请验证它是否显示在 Azure Pipelines 环境页的“ 资源 ”选项卡上。
在 YAML 管道中使用环境
可以通过引用其环境,在 YAML 部署作业中定位 VM 资源。 有关 YAML 部署作业的详细信息,请参阅 YAML 管道架构参考中的部署作业和 jobs.deployment 定义。
以下管道部署作业仅在环境中的 VM VMEnv 上运行。
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- deployment: VMDeploy
displayName: Deploy to VMenv
environment: VMenv
strategy:
runOnce:
deploy:
steps:
- script: echo "Hello world"
可以通过将 VM 资源名称追加到环境名称,将环境中的特定 VM 作为目标。 以下示例仅部署到环境中命名 RESOURCE-PC 的 VMenv VM 资源。
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- deployment: VMDeploy
displayName: Deploy to RESOURCE-PC in VMenv
environment: VMenv.RESOURCE-PC # only deploy to the VM resource named RESOURCE-PC
strategy:
runOnce:
deploy:
steps:
- script: echo "Hello world"
还可以使用 jobs-deployment-environment 关键字的完整语法,并通过列出 resourceName这些关键字部署到特定的环境 VM。
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- deployment: VMDeploy
displayName: Deploy to RESOURCE-PC in VMenv with full syntax
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"
注意
- 值
resourceType(如virtualMachine区分大小写)。 大小写不正确会导致找不到匹配的资源。 - 如果重试某个阶段,则部署将重新运行在所有指定的 VM 上,而不仅仅是在失败的目标上运行。
部署策略
在部署作业中,应用部署 strategy 来定义如何推出应用程序。 VM 支持策略 runOnce 和 rolling 策略。 有关部署策略和生命周期挂钩的详细信息,请参阅 部署策略。
Permissions
首次运行使用环境的管道时,必须向管道的所有运行授予访问代理池和环境的权限。 在管道运行摘要屏幕上选择作业旁的“等待”符号,然后选择“允许”授予必要的权限。
添加和管理标记
标记是针对一组特定的环境 VM 进行部署的方法。 在关键字中tags指定environment时,管道仅部署到应用了标记的环境 VM。
可以应用于 VM 的标记数没有限制。 每个标记名称限制为 256 个字符。
可以通过在环境的“资源”选项卡上选择 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"
查看部署历史记录
选择环境页的“ 部署 ”选项卡,获取提交和工作项的完整可跟踪性,以及每个环境和资源的跨管道部署历史记录。