如何使用 Rest API 更新 Azure DevOps 中管道的'Default agent pool for YAML'?



我曾尝试使用定义更新api来尝试更新"YAML的默认代理池",但没有成功。我一直收到"200"响应状态代码,但设置保持不变。

我还试图在通过UI手动执行更新时捕获实际的请求内容,然后将相同的内容复制到请求的正文中,但结果保持不变。

以下是我正在使用的请求示例:

调用WebRequest-URI"https://dev.azure.com/***/***/_apis/build/definitions/***?api-version=6.1-preview.7" -Method PUT -ContentType "application/json" -Headers @{ Authorization = "Basic ***" } -Body '{***}'

正文的JSON格式为:

{
...
"queue": {
"id": 882,
"name": "Azure Pipelines",
"pool": {
"id": 17,
"name": "Azure Pipelines",
"isHosted": true
}
},
...
}

更新根据Microsoft团队的建议,不支持该功能。我在这里记录了一个关于该功能的建议。

这看起来现在已经启用,但通过一组不同的属性。您可以通过以下属性设置默认池:

process.phases.target.agentSpecification.identifier

相关片段如下:

"process": {
"phases": [
{
"name": "NameGoesHere",
"target": {
"agentSpecification": {
"identifier": "windows-latest"
}
}
}
]
}

公平地警告:我发现如果我的有效负载中有错误的修订号,API将以200响应,但池不会改变。当我试图通过UI重置池以证明API调用有效时,这一点尤其值得注意。从本质上讲,做一个GET,修改有效载荷,并将其发送到PUT,而不需要执行任何其他操作,这可能是一个好主意。

最新更新