You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Azure DevOps当前运行构建的代理池名称?

获取Azure DevOps流水线运行的代理池名称

Azure DevOps确实没有直接提供获取当前代理池名称的预定义变量,但可以通过以下两种方式实现需求:

1. 静态指定池名时的简易方案

如果你的流水线已经固定了代理池(就像示例里的Self Hosted Docker (Linux)),直接把池名定义为流水线变量,后续步骤直接引用即可:

name: $(BuildID)
trigger: none

variables:
  - name: poolName
    value: 'Self Hosted Docker (Linux)'

pool: $(poolName)

steps:
- powershell: |
     Write-Host "当前运行的代理池名称:$(poolName)"

2. 动态获取池名(适用于动态分配代理池的场景)

如果代理池是动态选择的(比如通过变量模板、运行时参数指定),可以调用Azure DevOps REST API,通过当前构建ID获取代理池信息:

name: $(BuildID)
trigger: none

pool: Self Hosted Docker (Linux)

steps:
- powershell: |
    $orgUrl = "$(System.CollectionUri)"
    $projectName = "$(System.TeamProject)"
    $buildId = "$(Build.BuildId)"
    $token = "$(System.AccessToken)"

    $headers = @{
        Authorization = "Bearer $token"
        Content-Type = "application/json"
    }

    $apiUrl = "$orgUrl/$projectName/_apis/build/builds/$buildId?api-version=7.1-preview.7"
    $buildDetails = Invoke-RestMethod -Uri $apiUrl -Headers $headers -Method Get

    Write-Host "当前运行的代理池名称:$($buildDetails.queue.pool.name)"
  displayName: '获取并输出代理池名称'

需要注意:确保流水线的服务账号(或运行账号)拥有读取构建信息的权限,System.AccessToken会自动注入到流水线中,无需手动配置。

内容的提问来源于stack exchange,提问作者Lakshay Kashyap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 03:57:07