Как получить статус релиза (успех, сбой) с PowerShell, используя Azure DevOps Rest API во время выпуска - PullRequest
0 голосов
/ 22 октября 2019

Я использую API $releaseUri = "https://vsrm.dev.azure.com/{Org}/{Project}/_apis/Release/deployments?definitionId=$releaseDefinitionId&definitionEnvironmentId=$envId?api-version" rest для определения состояния развертывания релиза. Предостережение заключается в том, что я делаю это как задачу в самой версии. Это всегда говорит, что релиз находится в процессе. Моя цель состоит в том, чтобы пометить сборку только в случае успешного выпуска. Хотите знать, как я смогу получить статус релиза во время релиза до его завершения?

Ценим любые вклады в это!

1 Ответ

1 голос
/ 22 октября 2019

В нем всегда говорится, что выпуск находится в процессе.

Если вы запускаете этот API в качестве задачи во время выпуска, in progress будет ожидать поведения. Поскольку для конвейерного сервера релизов он содержит много поведений, в дополнение к заданиям развертывания он также включает в себя утверждение, шлюз и т. Д. Для сервера выпуск является настоящим завершением только после завершения всех поведений. Или он будет рассматриваться как in progress.

. В своей операции вы устанавливаете этот API как часть процесса выпуска, он никогда не получит реальное состояние развертывания, потому что завершенный процесс выпуска еще не завершен.

Помечайте сборку только в случае успешного выпуска

Чтобы достичь того, чего вы хотите, прямой подход не поможет вам в этом. В качестве обходного пути вы можете создать одну переменную уровня выпуска, чтобы помочь вам сделать это.

Сценарии: Существует конвейер выпуска, в котором есть этап для выполнения задания развертывания. Моя логика работы с логикой состоит в том, чтобы создать переменную уровня выпуска с новой задачей на последнем шаге задания агента, только после того, как все предыдущие задачи, выполняемые в одном и том же задании агента, выполнены успешно. Теперь, если переменная уровня выпуска успешно создана, это будет означать, что задание агента успешно выполнено.

Для API переменной create в выпуске вы можете использовать:

PUT https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}?api-version=5.0

И завершенный скрипт, вы можете обратиться к этому blog script .


С этой логикой одна новая созданная переменная уровня выпуска означает, что ее соответствующее задание агента выполнено успешно. Таким образом, независимо от того, сколько заданий агента существует в конвейере выпуска, просто нужно определить, существуют ли эти переменные или установлено ли значение, как вы ожидаете (например, true или false). Если оно выполнено, выполните операцию добавления тега в сборку.

Добавьте одно задание агента, которое будет выполнено в конце процесса выпуска. В этой агентской работе просто нужно добавить одну задачу, используемую для пометки сборки. Используйте выражение условия на уровне задания агента, чтобы определить, нужно ли выполнять задачу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...