2016-02-05 4 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":"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», где он должен иметь «-Method PUT»