如何获取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
相关产品推荐
相关产品推荐

