2016-02-05 18 views
0

我使用Visual Studio在線REST API,並試圖更新現有構建定義VSO更新構建定義 - 已經存在

所以根據在文檔: 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和版本是相同的現有構建定義。

它失敗,出現以下錯誤:

{ 
     "$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

救命的小提琴手!

我想要做的是觸發一個構建,與變量。以前的問題指出唯一的方法是更新構建定義。

你不需要。在構建隊列時,您可以發送構建定義中變量的值。

所以排隊的生成,使用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: [] 
    } 

注意以下幾點:

  1. 這是稱爲參數,而不是變量;
  2. 這是一個字符串發送,而不是json元素。所以在我的NodeJS的嘲笑起來就是:

    parameters:"{\"version\":\"" + version + "\"}" 
    

現在你可以排隊一個構建,並通過API

0

如果您看到的錯誤提供值的變量「消息=構建定義TestingBuild已經存在的項目MyProj'。可能是因爲你的powershell有'-Method Post'它應該有'方法PUT'