代理软件版本 3
管道团队正在将代理软件从版本 2.x(使用 .NET Core 3.1)升级到版本 3.x(使用 .NET 6)。 新的代理版本支持新的 Apple 芯片硬件和较新的操作系统,如 Ubuntu 22.04 或 ARM64 上的 Windows。
注意
此功能从 Azure DevOps Server 2022.1 开始提供。
在支持的操作系统上升级到 3.x 代理
如果你在 .NET6 支持的较新操作系统上运行自托管代理,则会自动升级到新代理版本。
3.x 代理支持以下操作系统。
- Linux
- X64
- Debian 10+
- Fedora 36+
- openSUSE 15+
- Red Hat Enterprise Linux 7+
- 不再需要单独的包
- SUSE Enterprise Linux 12 SP2 或更高版本
- Ubuntu 22.04、20.04、18.04、16.04
- Azure Linux 2.0
- Oracle Linux 7 及更高版本
- ARM64
- Debian 10+
- Ubuntu 22.04、20.04、18.04
- Alpine x64
- Alpine Linux 3.13 及更高版本(需要代理 3.227 或更高版本)
- X64
- macOS
- X64
- macOS 10.15“Catalina”
- macOS 11.0“Big Sur”
- macOS 12.0“Monterey”
- macOS 13.0 "Ventura"
- macOS 14.0 "Sonoma"
- macOS 15.0 “Sequoia”
- ARM64
- macOS 11.0“Big Sur”
- macOS 12.0“Monterey”
- macOS 13.0 "Ventura"
- macOS 14.0 "Sonoma"
- macOS 15.0 “Sequoia”
- X64
- Windows
- 客户端操作系统
- Windows 7 SP1 ESU
- Windows 8.1
- Windows 10
- Windows 11
- 服务器操作系统
- Windows Server 2012 或更高版本
- 客户端操作系统
在不支持的操作系统上升级到 3.x 代理
如果在 .NET 6 不支持的操作系统上运行自托管代理,则必须更新计算机以使用 .NET 6 支持的较新的操作系统。
以下操作系统列表通常用于自托管 2.x 代理。 .NET 6 不支持这些操作系统,不能用于运行基于 .NET 6 的新版本 3.x 代理。
系统/分发 | .NET 6 不支持的版本 |
---|---|
Debian | <= 4.9 |
Fedora | < = 32 |
RedHat Enterprise Linux 7 | <= 6 |
Ubuntu | < 18.04 LTS |
macOS | < 10.15 |
可以使用脚本 来预测自承载池中的代理是否能够从 2.x 升级到 3.x。
尝试在代理版本 2.218(或 RHEL 6 上的 2.214)上运行管道时,在此处列出的不受支持的操作系统之一上运行的管道将失败,并显示以下错误消息:This operating system will stop receiving updates of the Pipelines Agent in the future. To be able to continue to run pipelines please upgrade the operating system or set an environment variable or agent knob "AGENT_ACKNOWLEDGE_NO_UPDATES" to "true". See https://aka.ms/azdo-pipeline-agent-v2-eos for more information.
可通过以下任一方法解决该错误:
- 将代理计算机升级或移动到本文前面列出的受支持操作系统之一。 这是首选解决方案,可用于获取将来的代理更新,
- 通过设置环境变量或管道变量,在代理上设置
AGENT_ACKNOWLEDGE_NO_UPDATES
变量。
可以通过在代理上配置环境变量来设置
AGENT_ACKNOWLEDGE_NO_UPDATES
,例如 /etc/environment 或 etc/profile.d:AGENT_ACKNOWLEDGE_NO_UPDATES=true
。可以设置管道变量。
jobs: - job: 'agentWithVariables' displayName: 'Agent with variables' variables: AGENT_ACKNOWLEDGE_NO_UPDATES: 'true' # Required to not fail job on operating system that is not supported by .NET 6
常见问题解答
2.x 与 3.x 代理有什么区别?
2.x 代理(例如 2.212)是 .NET Core 3.1,3.x 代理(例如 3.212)是 .NET 6。 在 I 和 II 阶段期间,这两个版本都可用,3.x 版本处于预发行版中。
如何检查代理以确认代理是否可以升级到 3.x?
可以使用脚本 来预测自托管池中的代理是否能够从 2.x 升级到 3.x。
今后将如何修补代理中的安全问题?
当 .NET 6 代理在 2023 年第 1 季度正式可用于自托管池时,通常不会为 2.x 代理完成修补程序。 仅针对 3.x 代理执行修补程序。 然而,我们也有一些 Azure DevOps 服务器客户仍依赖于 2.x 代理。 因此,我们将根据具体情况审查安全问题,以做出决定。
使用不受支持的 OS 时,需要执行什么操作?
现在应迁移到 .NET 6 支持的较新的操作系统。 否则,代理可能会尝试升级,并且该代理会失败,因为 OS 上无法安装 .NET 6。 我们将在后续博客文章中发布一些指南,以防止自动升级代理。 但是,这只是一个临时解决方案,以便有更多时间来升级代理计算机。
如果我不再处理项目中的任何更改,是否可以继续使用 2.x 代理?
否。 管道团队会定期向 Azure Pipelines 添加新功能,其中一些功能可能需要对代理进行更新,即使管道不显式依赖于该功能。 如果你根据后续博客中的指导措施来阻止代理自动升级,则代理不能用于计划管道。 如果找不到具有所需功能的代理,则管道执行将失败。
在安装 3.x 代理软件之前,是否必须安装 .NET 6?
在安装和配置 3.x 代理软件之前,无需在代理计算机上安装 .NET 6。 3.x 代理所需的所有 .NET 依赖项都是代理本身的一部分。
如果使用 3.x 代理,是否必须使用 .NET 6 生成代码?
用于运行 3.x 代理的 .NET 版本在代理安装中是自包含的,不会用于生成代码。 用于生成代码的 .NET 版本取决于管道以及已安装到代理计算机上的 .NET 版本。
我使用 Azure DevOps Server,而不是 Azure DevOps Services。 此更改是否会影响我?
是,如果使用的是下节列出的任意 Azure DevOps Server 版本。
如果你计划在未来更新到 Azure DevOps 服务器版本,管道团队建议你从现在开始将代理计算机更新到 .NET 6 支持的较新操作系统。
Azure DevOps Server 是否支持 3.x 代理
Azure DevOps Server 版本支持随该版本一起部署的代理版本。 下表列出了每个受支持的 Azure DevOps Server 版本及其支持的代理版本。
Azure DevOps Server 版本 | 代理版本 |
---|---|
Azure DevOps Server 2022.2 | 3.238.0 |
Azure DevOps Server 2020.1.2 | 3.225.0 |
Azure DevOps Server 2019.1.2 | 3.225.0 |
通过安全或服务修补程序向 Azure DevOps Server 提供服务,从而为产品中的现有功能提供有针对性的累积 bug 修复。 为获得最佳和最安全的产品体验,我们强烈支持并建议所有客户使用最新、最安全版本的 Azure DevOps Server。 可以从 Azure DevOps Server 下载页面下载最新版本的产品。
安装 Azure DevOps Server 更新或新版本后,更新代理。
下表列出了最先包含 3.x 代理版本的 Azure DevOps Server 版本。
- Azure DevOps Server 2022 Update 2
- Azure DevOps Server 2022 Update 1
- Azure DevOps Server 2022 Update 0.1 Patch 4 及更高版本
- Azure DevOps Server 2020 Update 1.2 Patch 9 及更高版本
- Azure DevOps Server 2020 Update 0.2 Patch 4 及更高版本
- Azure DevOps Server 2019 Update 1.2 Patch 5 及更高版本
- Azure DevOps Server 2019 - patch 15 及更高版本
代理版本 3 部署时间线是怎样的?
代理版本 3 已于 2023 年 3 月发布。
当任务需要将代理更新到代理版本 3 时,会发生什么情况?
通常,当任务需要较新版本的代理时,代理将自动更新自身。 目前,尽管代理版本 2 会继续更新,但我们已禁用从代理版本 2 到代理版本 3 的自动更新。 启用后,对于与代理版本 3 不兼容的操作系统,代理版本 2.217 及更高版本不会尝试将自身更新到 v3 代理。 相反,会显示一条警告,告知用户需要先升级操作系统:The operating system the agent is running on is <OS>, which will not be supported by the .NET 6 based v3 agent. Please upgrade the operating system of this host to ensure compatibility with the v3 agent. See https://aka.ms/azdo-pipeline-agent-version