2017 年 TFS API;使用变量排队构建
TFS 2017 API; Queuing a build with variables
我正在尝试创建构建请求并为 TFS 构建定义中定义的自定义变量指定新值。我假设我可以在不先更新构建定义的情况下执行此操作。我将以下 JSON 发布到 URL:http://<server-name>/tfs/DefaultCollection/<project-name>/_apis/build/builds?api-version=3.1
。构建排队但传入的变量值没有覆盖默认值。我错过了什么?我是否需要以不同方式指定变量名称?
{
"definition": {
"id": 24,
"variables": {
"IssueNumber": {
"value": "98765"
}
}
}
}
您提供的 JSON 结构有误。它是 parameters
,而不是 variables
,您指定 key/value 对的方式不正确。
此 PowerShell 代码段应该为您指明正确的方向:
$url = 'http://test-tfs-instance:8080/tfs/myCollection'
$body = @{
definition = @{
id = 1435
}
parameters = '{"MyParam":"OverriddenValue","system.debug":"false"}'
}
Invoke-RestMethod -Uri "$($url)/TeamProject/_apis/build/builds?api-version=3.1" -UseDefaultCredentials -Method Post -ContentType 'application/json' -body ($body | convertto-json -Compress -Depth 10)
对于它的价值,通过在浏览器中打开开发人员工具并查看 TFS UI 进行的 REST 调用,很容易发现这种事情。有时文档不清楚(在这种情况下就是这样),但是当您复制应用程序进行的相同 REST 调用时,很难搞混。
我正在尝试创建构建请求并为 TFS 构建定义中定义的自定义变量指定新值。我假设我可以在不先更新构建定义的情况下执行此操作。我将以下 JSON 发布到 URL:http://<server-name>/tfs/DefaultCollection/<project-name>/_apis/build/builds?api-version=3.1
。构建排队但传入的变量值没有覆盖默认值。我错过了什么?我是否需要以不同方式指定变量名称?
{
"definition": {
"id": 24,
"variables": {
"IssueNumber": {
"value": "98765"
}
}
}
}
您提供的 JSON 结构有误。它是 parameters
,而不是 variables
,您指定 key/value 对的方式不正确。
此 PowerShell 代码段应该为您指明正确的方向:
$url = 'http://test-tfs-instance:8080/tfs/myCollection'
$body = @{
definition = @{
id = 1435
}
parameters = '{"MyParam":"OverriddenValue","system.debug":"false"}'
}
Invoke-RestMethod -Uri "$($url)/TeamProject/_apis/build/builds?api-version=3.1" -UseDefaultCredentials -Method Post -ContentType 'application/json' -body ($body | convertto-json -Compress -Depth 10)
对于它的价值,通过在浏览器中打开开发人员工具并查看 TFS UI 进行的 REST 调用,很容易发现这种事情。有时文档不清楚(在这种情况下就是这样),但是当您复制应用程序进行的相同 REST 调用时,很难搞混。