鉴于:
- 数十个 PR 构建代理
- 有时 PR 构建在某些代理上会变得流氓
我们的解决方案 - 在该代理上排队完整构建,而不是默认增量
现在我们将经典 PR 构建迁移到 YAML,突然我们不再能够在给定代理上排队完整的 PR 构建 - 需求从 GUI 消失了,REST API 也不起作用。
我们可以在 YAML 中指定需求这一事实无济于事——这些需求被硬编码到 YAML 中,并且似乎无法在排队时提供它们。
那么,我错过了什么?我们如何在 YAML 构建中在排队时提供需求?
编辑 1
我使用构建 - 队列API。我没有传递代理队列信息,因为没有必要——它已经在构建定义中指定了。但是,我确实通过了要求 - Agent.Name =
它适用于经典构建,不适用于构建排队的 YAML 构建,但适用于池中的第一个可用代理,而不是需求中指定的代理。需求被完全忽略。就像我之前提到的 - YAML 构建 GUI 中也没有它。
编辑 2
这是 Fiddler 捕获的请求会话:
POST https://ourserver/tfs/DefaultCollection/SharpTop/_apis/build/builds?api-version=5.0 HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT; Windows NT 10.0; en-US) WindowsPowerShell/5.1.19041.610
Content-Type: application/json
Host: ourserver
Content-Length: 76
{"demands":["Agent.Name -equals MyAgentName"],"definition":{"id":7821}}
(我用我们的服务器替换了真实的服务器名称,用MyAgentName替换了代理名称)
响应没有错误,构建已排队,但不在正确的代理上。