我正在使用Visual Studio Online rest api,并尝试更新现有的构建定义
所以根据以下文件: https://www.visualstudio.com/en-us/integrate/api/build/definitions#Updateabuilddefinition
它表示您可以更新现有的构建定义。
所以我将以下JSON提供给帖子:
{
id: 43,
name: 'Test Build',
revision: 10,
variables: {
version: { value: '20', allowOverride: true }
},
comment: 'New version added: 20'
}
因此id和revision与现有的构建定义相同。
失败并出现以下错误:
{
"$id":"1",
"innerException":null,
"message":"Build definition Test Build already exists for project TestProject.",
"typeName":"Microsoft.TeamFoundation.Build.WebApi.DefinitionExistsException, Microsoft.TeamFoundation.Build2.WebApi, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a",
"typeKey":"DefinitionExistsException",
"errorCode":0,
"eventId":3000
}
任何想法我做错了什么?
答案 0 :(得分:0)
小提琴手救援!
我试图做的是用变量触发构建。以前的问题指出唯一的方法是更新构建定义。
你不必。对构建进行排队时,可以在构建定义中为变量发送值。
因此,使用API在以下位置对构建进行排队: https://www.visualstudio.com/en-us/integrate/api/build/builds#Queueabuild
将以下内容发送到帖子正文中:
{
queue: { id: 5 },
definition: { id: 43 },
project: { id: 'aaa12345-a1b2-1a23-123a-1234a56789ab' },
parameters: '{"version":"20"}',
reason: 1,
demands: []
}
请注意以下事项:
这是一个发送的字符串,而不是json元素。所以在我的nodejs中它被模拟为:
parameters:"{\"version\":\"" + version + "\"}"
现在您可以对构建进行排队,并通过API为变量提供值
答案 1 :(得分:0)
如果您看到错误' message =构建定义,则项目MyProj已存在TestingBuild。'可能是你的powershell有' -Method Post'应该在哪里使用' -Method PUT'