如何使用Dev Ops Rest Api将构建排入队列。
到目前为止我尝试过的事情:
工作:
`https://${config.azureEndpoints.instance}/${config.azureEndpoints.collection}/${config.azureEndpoints.project}/_apis/build/builds?api-version=5.1
body:
definition: {
id: 448
},
queue: {
id: buildId,
name: 'Hosted VS2017',
pool: {
id: 4,
name: 'Hosted VS2017',
isHosted: true
}
},
parameters: `{"parameters":"${parameters}"}`,
不起作用:
Body:
id: 546
name: "Azure Pipelines"
pool: {id: 25, name: "Azure Pipelines", isHosted: true}
id: 25
isHosted: true
name: "Azure Pipelines"
Error:
Provisioning request delayed or failed to send 3 time(s). This is over the
limit of 3 time(s).
[Warning 1]
There was a failure in sending the provision message: Unexpected response
code from remote provider InternalServerError
这些值来自:
https:// $ {config.azureEndpoints.instance} / $ {config.azureEndpoints.collection} / $ {config.azureEndpoints.project} / _apis / build / definitions?$ {definitionId}&api-version = 5.1 < / p>
当手动触发时,我捕获了来自dev ops gui的请求。它执行相同的操作,但是添加:
agentSpecification: {identifier: "ubuntu-16.04"}
但是此值不在“定义”中,也没有端点来获取可能的agentSpecifications。
TLDR:如何使用Dev Ops中的现有定义在Dev Ops中对构建进行排队?
答案 0 :(得分:0)
如何在Dev Ops Rest Api中将Dev Ops中的版本排队?
只需在请求正文中指定内部版本 definitionId ,即可通过API对该内部版本进行排队。
这是示例脚本,对我而言效果很好,您可以尝试以下方法:
$headers = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }
$body = '
{
"definition": {
"id": {build definition id}
}
}
$Uri = "https://{instance}/{collection}/{project}/_apis/build/builds?api-version=5.1-preview.2"
$buildresponse = Invoke-RestMethod -Method Post -UseDefaultCredentials -ContentType application/json -Uri $Uri -Body $bodyString -Headers $headers
您可以看到,如果该构建成功通过API排队,您将看到有关排队时间和排队的用户的详细信息。
答案 1 :(得分:-1)
您可以只使用VSTeam来为您排队构建,也可以使用review the code of VSTeam来查看它是如何完成的。 API的官方文档为here。