Azure DevOps服务
GitHub 托管的代理为 Azure Pipelines 提供采用即用即付(PAYG)计费的高性能虚拟机。 与采用基于并发的池的 Microsoft 托管代理 不同,GitHub 托管代理按使用分钟计费,并提供更强大的机器配置。 费用取决于所使用代理的操作系统和规格。
Prerequisites
若要启用GitHub托管代理,必须满足以下先决条件:
| 类别 | 要求 |
|---|---|
| Permissions | 你必须有权在Azure DevOps组织中配置计费设置。 有关所需权限的完整列表,请参阅 “管理计费:先决条件”。 |
| Subscription | 一个与您的 Azure DevOps 组织位于同一 Microsoft Entra ID 下的 Azure 订阅。 |
启用 GitHub 托管智能体计费
GitHub 托管智能体使用即用即付计费。 根据计算机大小,按每分钟管道执行时间收费。 有关定价信息,请参阅 Azure DevOps 定价。
注释
GitHub托管代理不提供免费层或免费分钟数。 所有使用量按分钟计费。 此即用即付计费模式与用于 Microsoft 托管智能体的并行作业并发计费是分开的。
如果尚未在Azure DevOps组织中启用计费,请按照 设置组织的计费中的说明启用计费。
在 计费设置中启用即用即付计费。 将 Enable GitHub 托管的代理设置为 On,然后选择页面底部的 Save。
使用GitHub托管代理
启用即用即付计费模式后,Azure DevOps 会在你的组织中创建一个新的GitHub 托管代理池。 此池提供按分钟计费的额外图像标签。
若要在 YAML 管道中使用GitHub托管代理,请使用以下属性配置 pool 节:
-
name:'GitHub-hosted Agents' -
vmImage:要使用的 VM 映像标签。 有关可用的映像标签,请参阅 GitHub 托管的代理映像。
pool:
name: 'GitHub-hosted Agents'
vmImage: 'macos-26-arm64'
steps:
- bash: |
echo Hello from macOS Tahoe arm64
uname -a
sw_vers
其他示例:
pool:
name: 'GitHub-hosted Agents'
vmImage: 'macos-26-arm64-xl'
steps:
- bash: |
echo Hello from XL macOS Tahoe arm64
uname -a
hostinfo | grep memory
pool:
name: 'GitHub-hosted Agents'
vmImage: 'ubuntu-24.04-8-core'
steps:
- bash: |
echo Hello from Ubuntu 24.04 8 core
lsb_release -d
echo "# cores: $(nproc)"
free -h
- pwsh: |
Write-Host "`$PSVersionTable.OS"
$PSVersionTable.OS
Write-Host "Number of logical processors: $([Environment]::ProcessorCount)"
Get-Content /proc/meminfo | Select-String '^Mem(Total|Available):'
pool:
name: 'GitHub-hosted Agents'
vmImage: 'windows-2025-vs2026-16-core'
steps:
- pwsh: |
Write-Host "(Get-ComputerInfo).WindowsProductName"
Get-ComputerInfo | Select-Object WindowsProductName
Write-Host "`$PSVersionTable.OS"
$PSVersionTable.OS
Write-Host "Number of logical processors: $([Environment]::ProcessorCount)"
Write-Host "Installed memory (MB): $([Math]::Round((Get-ComputerInfo).CsTotalPhysicalMemory / 1MB))"
GitHub托管的代理映像
与标准Microsoft托管代理配置相比,GitHub托管代理提供更高的性能配置。 GitHub 托管代理池提供以下硬件规格和虚拟机映像。
Important
在公开预览期间,每个组织每个 SKU 最多只能使用八个 GitHub 托管代理。 如果根据硬件规范排队的管道作业超过 8 个,则前 8 个作业将运行,其余作业将排队,直到初始作业完成。 如果在公开预览版期间,每个硬件规范需要 8 个以上的智能体,请创建一个支持案例。
GitHub托管代理为以下 macOS 版本提供映像:
| macOS 版本 | 包含的软件 |
|---|---|
| macOS 26 ARM 64 | 链接。 |
| 具有 Xcode 27(公共预览版)的 macOS | 链接。 |
注释
无论Azure DevOps组织的位置如何,GitHub托管的 macOS 代理始终在美国运行。
此 macOS 镜像可使用以下硬件配置运行流水线:
| 硬件规范 | vCPU | RAM | 存储 (SSD) | Architecture |
|---|---|---|---|---|
| 标准 | 3 | 7 GB | 14 GB | arm64 (M1) |
| XLarge | 5(+ 8 GPU 硬件加速) | 14 GB | 14 GB | arm64 (M2) |
若要使用 GitHub 托管代理运行管道,请从以下列表中指定与所需操作系统和硬件规范匹配的映像标签:
| 操作系统 (OS) | 硬件规范 | 图像 | YAML VM 映像标签 |
|---|---|---|---|
| macOS 26 | 标准 | macOS ARM64 | macos-26-arm64 |
| macOS 26 | XLarge | macOS ARM64 XL | macos-26-arm64-xl |
| 具有 Xcode 27 的 macOS | 标准 | macOS ARM64 | xcode-27 |
| 具有 Xcode 27 的 macOS | XLarge | macOS ARM64 XL | xcode-27-xlarge |
基于 Xcode 的 macOS 镜像命名约定
随着具有 Xcode 27(公共预览版)映像的 macOS 的发布,Microsoft引入了 macOS 映像的新命名约定。 每个新映像名称都基于主要 Xcode 版本,而不是基础操作系统。 每个映像版本都支持一个主要的 Xcode 版本。
这种命名模式使开发人员能够以所需的 Apple 工具链为目标。 它反映了 macOS CI 作业的常见定义方式,该作业由所需的 Xcode 工具链而不是基础操作系统定义。 操作系统可能会在映像的生存期内发生更改。 若要查看 Xcode 27 映像中包含的软件(包括 macOS 操作系统版本),请按照上表中映像包含的软件链接进行操作。
监视使用情况
可以通过两种方式监视管道使用情况:使用池上的“分析”选项卡或使用Azure 成本管理。
分析视图
在 GitHub 托管的代理池中,选择 Analytics 选项卡。选择想要显示的代理 SKU 和使用情况周期。 此选择呈现一个图形,并列出使用所选代理 SKU 的顶级项目。 可以向下钻取到项目级别,进而到管道级别,以查看使用该智能体 SKU 的作业。
Azure 成本管理
若要筛选即用即付管道使用情况,请选择:
- 计量类别:Azure DevOps
- 计费项子类别:Azure Pipelines
- 度量单位:1/分钟
此外,还可以筛选以下项:
- 标记:
_organizationname_ - 标记:
_projectname_
以下屏幕截图显示了Azure 成本管理中典型的成本分析视图:
网络
GitHub托管代理具有与Microsoft托管代理类似的网络功能。
GitHub 托管的代理程序与 GitHub Actions 更大规格的运行器运行在相同的基础架构上。 GitHub托管代理与服务器之间的网络流量通过公用网络。
Important
不能使用专用连接(如 ExpressRoute 或 VPN)将GitHub托管的代理连接到企业网络。
安全性
GitHub托管的代理具有与Microsoft托管代理相同的安全功能。
GitHub 托管智能体在隔离的虚拟机上运行,这些虚拟机在每次作业后都会重置映像。 每个代理专用于单个组织,每个 VM 仅托管一个代理。
- 代理没有公共 IP 地址,因此外部实体无法直接定位它们。
- 每个作业在全新预配的 VM 上运行,因此作业之间不会保留任何数据。
- 托管映像不符合 CIS 强化基准。 若要使用 CIS 强化映像,请考虑自托管智能体或托管 DevOps 池。
功能和限制
GitHub 托管的代理与 Microsoft 托管的代理具有类似的 功能和限制,例如每个作业都会使用全新的虚拟机,以及包含最新软件并会自动更新的映像,但有以下几个主要区别。
GitHub托管代理:
- 提供比标准 Microsoft 托管代理具有更多 vCPU、内存和磁盘空间的更大规格虚拟机。
- 按分钟计费,没有免费层。
比较代理池选项
| 功能 | Microsoft 托管代理 | 由 GitHub 托管的代理 (PAYG) | 自托管代理 |
|---|---|---|---|
| 账单 | 并行作业(基于并发) | 每分钟 (即用即付) | 你自己的基础结构 |
| 免费套餐 | 是(有限) | 否 | 不适用 |
| 计算机大小 | 标准 | 各种(比 Microsoft 托管的更大) | 习惯 |
| 维护 | 自动 | 自动 | Manual |
| 自定义软件 | 在管道运行期间安装 | 在管道运行期间安装 | Preinstalled |
| 公司网络 | 无直接访问 | 无直接访问 | 直接访问 |