【发布时间】:2018-02-14 17:26:10
【问题描述】:
我正在尝试使用 TFS 2015.3 REST API 对新构建进行排队,我关注了许多文章但无法使其正常工作。
我在 PowerShell 中执行此操作,标准队列新构建调用仅在传递定义 ID 时有效,但传递除 id 之外的任何其他内容似乎都不起作用。
我的代码:
$buildDef = Invoke-RestMethod -Method Get -UseDefaultCredentials -Uri "$($tfsRoot)/_apis/build/definitions?api-version=2.0&name=$buildDefintionName"
$detailedResults = Invoke-RestMethod -Uri $buildDef.Value[0].Url -Method Get -ContentType "application/json" -UseDefaultCredentials
if ($buildDef.Value[0].Id)
{
$agentDemandString = "Agent.Name -equals $agent"
$demands = $detailedResults.Demands
$json = "definition: { id:$($buildDef.Value[0].Id) }, demands: $demands"
$bodyjson = $json | ConvertTo-Json
Write-Host "Queuing build $buildDefintionName on agent $agent with parameters $json"
$build = Invoke-RestMethod -Method Post -UseDefaultCredentials -ContentType application/json -Uri "$($tfsRoot)/_apis/build/builds?api-version=2.0" -Body $bodyjson
}
我尝试了许多不同的传递要求的变体,但看起来它甚至没有达到那一点,因为它抱怨“构建”参数。
Invoke-RestMethod : {"$id":"1","innerException":null,"message":"值不能为空。\r\n参数名称: build","typeName":"System.ArgumentNullException , mscorlib, 版本=4.0.0.0, 文化=中性
如果我是对的,构建参数包含要执行的构建步骤。这让我认为排队构建正在删除所有现有配置并试图仅依赖于 JsonBody 中传递的内容,这当然不是我想要的。
我应该传递什么以及如何传递才能将新构建排队但有更新/额外的需求。
【问题讨论】:
标签: tfs