Я нахожусь в процессе преобразования некоторых задач внутри многочисленных групп задач, которые у нас есть, в разные задачи. Вместо того, чтобы делать это вручную, я выбрал использование Powershell вместе с API отдыха Azure DevOps для обновления тел JSON этих групп задач и отправки их в API. Конвертация задач работает отлично, софар.
отправка PUT в остальные API для обновления текущей группы задач из набора работ, но я хочу встроить некоторую историю хранения / историю версий, если некоторые новые задачи в итоге будут работать не так, как ожидалось. Поэтому просто откровенно обновить существующую группу задач под той же основной версией невозможно.
Пользовательский интерфейс Azure DevOps обладает функциональностью, позволяющей сохранять изменения в группе задач как «черновик», а затем публиковать sh этот черновик либо в виде совершенно новой версии (основная версия + 1), либо в качестве предварительного просмотра
Я попытался отправить PUT в API отдыха и вытащить основную версию, используя следующий URI:
PUT https://dev.azure.com/{organization}/{project}/_apis/distributedtask/taskgroups/{taskGroupId}?api-version=5.1-preview.1
Наряду с настройками:
JSONObject.version.major = $currentversion + 1
JSONObject.preview = true
В результате API возвращает сообщение об ошибке:
Invoke-WebRequest : {"$id":"1","innerException":null,"message":"Task group {TaskGroupID} not found.","typeName":"Microsoft.TeamFoundation.DistributedTask.WebApi.MetaTaskDefinitionNotFoundException, Microsoft.TeamFoundation.DistributedTask.WebApi","type
Key":"MetaTaskDefinitionNotFoundException","errorCode":0,"eventId":3000}
Затем я попытался увидеть если бы я мог создать черновую версию. При отправке сообщения POST на следующий URI я смог создать черновик:
POST https://dev.azure.com/{organization}/{project}/_apis/distributedtask/taskgroups?api-version=5.1-preview.1
, используя следующие настройки в JSON:
JSONObject.version.major = 1
JSONObject.version.istest = true
JSONObject.id = $null
JSONObject.parentDefinitionId = {TaskGroupID of the taskgroup of which i am trying to make a draft}
Это объединяет в новой группе задач в черновом состоянии, которое я могу просматривать в пользовательском интерфейсе и изменять и публиковать sh (с предварительным просмотром или без него). Когда я экспортирую созданный JSON из пользовательского интерфейса из созданного вручную черновика и сравниваю его с полученным из powershell, я не вижу различий.
Этот последний шаг - то, где я застрял. Я не могу преобразовать созданный черновик в новую версию группы задач {parentdefintionid}. Я пробовал следующие настройки:
Вызов URI группы задач родительского элемента с положением пут при наличии черновика
JSONObject.version.major = $currentversion + 1
JSONObject.version.isTest = false
JSONObject.preview = true
Removing ParentDefinitionID from JSONObject
приводит к той же ошибке, в которой говорится, что не может найти Идентификатор родительского элемента:
Invoke-WebRequest : {"$id":"1","innerException":null,"message":"Task group {TaskGroupID} not found.","typeName":"Microsoft.TeamFoundation.DistributedTask.WebApi.MetaTaskDefinitionNotFoundException, Microsoft.TeamFoundation.DistributedTask.WebApi","type
Key":"MetaTaskDefinitionNotFoundException","errorCode":0,"eventId":3000}
То же самое действует с вышеуказанными настройками и вызовом URI draftD
Когда я пытаюсь вызвать URI группы задач draftID со следующими настройками:
JSONObject.version.major = $currentversion + 1
JSONObject.version.isTest = false
JSONObject.preview = true
JSONObject.id = $ParentDefinitionID
Removing ParentDefinitionID from JSONObject
это приводит к следующей ошибке:
Invoke-WebRequest : {"$id":"1","innerException":null,"message":"The request specifies task group ID {parentTaskGroupID} but the supplied task group has ID {DraftTaskGroupID}.","typeName":"Microsoft.TeamFoundation.DistributedTask.WebApi.Task
GroupIdConflictException, Microsoft.TeamFoundation.DistributedTask.WebApi","typeKey":"TaskGroupIdConflictException","errorCode":0,"eventId":3000}
Я проверил фактический JSONObject для экспорта опубликованной группы задач в пользовательском интерфейсе, и они точно совпадают, поэтому я ' Я совершенно уверен, что контент здесь не является проблемой.
В документации MS серьезно не хватает использования API, так что я действительно в неведении и надеюсь найти здесь некоторые подсказки / решения