Ошибка при обновлении определения выпуска VSTS из powershell - PullRequest
0 голосов
/ 29 июня 2018

Я использую API, перечисленные в документации VSTS API здесь . При изменении переменной и сохранении определения я получаю сообщение об ошибке с сервера: VS402982: Retention policy is not set for the environment 'environmentName'.

Часть сценария PS, который выполняет обновление, -

$c = Invoke-WebRequest 'https://accountname.vsrm.visualstudio.com/projectname/_apis/release/definitions/definitionId' -Method Get -Headers @{Authorization = 'Bearer ' + $authtoken} 
$jsonObj = $c | ConvertFrom-Json
$url3 = "https://accountname.vsrm.visualstudio.com/projectname/_apis/release/definitions/definitionId?api-version=4.1-preview.3";

$contentType3 = "application/json"      
$headers3 = @{
    Authorization = 'Bearer ' + $authtoken
};

$d = $jsonObj | ConvertTo-Json;
Invoke-RestMethod -Method PUT -Uri $url3 -ContentType $contentType3 -Headers $headers3 -Body $d;

Что здесь может быть не так?

1 Ответ

0 голосов
/ 29 июня 2018

Об этой проблеме пару раз сообщалось в разных формах, и в основном она связана с небольшой проблемой с кодом powershell в вопросе.

Если вы видите ошибку, подобную той, которая упоминалась в этом вопросе, или это - VS402903: The specified value is not convertible to type ReleaseDefinition. Make sure it is convertible to type ReleaseDefinition and try again, это означает, что есть проблема в объекте JSON, который вы публикуете на сервере. Самой простой проблемой будет захват полезных данных запроса и анализ их на наличие проблем.

Однако в коде, упомянутом в вопросе, проблема заключается в методе PowerShell ConvertTo-JSON . Обратите внимание, что определение выпуска имеет несколько слоев вложенных объектов, определение -> окружение -> шаги / утверждения и т. Д., А ConvertTo-JSON по умолчанию имеет глубину всего 2 уровня, образуя объект JSON , что означает, что вы при вызове API-интерфейсов VSTS отсутствуют некоторые важные свойства. Исправление будет состоять в том, чтобы задать большое значение для параметра -Depth , чтобы вы не пропустили никаких свойств при вызове службы.

например. ConvertTo-Json-Глубина 100

Подробнее о проблеме и о том, как она исправлена ​​в скрипте, можно прочитать здесь .

...