Как мне автоматически отменить выпуск, ожидающий утверждения ПОСЛЕ РАЗВЕРТЫВАНИЯ, когда доступен новый выпуск?
Я понимаю, как это сделать для выпусков, ожидающих утверждения ПРЕДВАРИТЕЛЬНОГО РАЗВЕРТЫВАНИЯ. Это в Условиях перед развертыванием> Параметры очереди развертывания> Последующие выпуски> Развернуть последние и отменить другие. И есть много существующих сообщений StackOverflow, в которых спрашивается, как это сделать для утверждения ПРЕДВАРИТЕЛЬНОГО РАЗВЕРТЫВАНИЯ. Но для ПОСЛЕ РАЗВЕРТЫВАНИЯ, похоже, нет.
Наш текущий рабочий процесс включает развертывание выпуска в нашей среде контроля качества, а затем ожидание утверждения после развертывания от группы контроля качества, прежде чем выпуск перейдет в среду PROD.
Но по мере того, как команда QA находит ошибки и устраняет их, выпуск в QA необходимо заменить. Единственный способ сделать это на данный момент - вручную отменить выпуск, который в настоящее время ожидает утверждения после развертывания, чтобы можно было развернуть последний выпуск.
Это становится довольно утомительно, так как я должен следить за этим сам и делать все вручную. Нет возможности автоматизировать это?
1 ответ
Вы можете обратиться к этому билету: Невозможно утвердить последний выпуск Azure devOps
Опция :
Deploy latest and cancel others
поддерживает только ожидаемое одобрение ПРЕДВАРИТЕЛЬНОГО РАЗВЕРТЫВАНИЯ.
Нет возможности автоматизировать это?
Вы можете добавить задачу PowerShell на этапе конвейера выпуска, чтобы запустить следующие API-интерфейсы Rest, чтобы получить выпуск (ожидает утверждения POST-DEPLOYMENT) и отменить выпуск .
Вот пример PowerShell:
$token = "PAT"
$url=" https://vsrm.dev.azure.com/{ORG}/{PROJECT}/_apis/release/deployments?api-version=6.0"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
Foreach($status in $response.value.postDeployApprovals)
{
echo $status.status
$compare = "pending"
if($status.status -eq $compare )
{
echo $status.release.id
$releaseid = $status.release.id
echo $status.releaseEnvironment.id
$environmentid = $status.releaseEnvironment.id
$url1="https://vsrm.dev.azure.com/{org}/{project}/_apis/Release/releases/$($releaseid)/environments/$($environmentid)?api-version=6.0-preview.6"
echo $url1
$JSON = @'
{
"status": "canceled",
"scheduledDeploymentTime": null,
"comment": null,
"variables": {}
}
'@
$response = Invoke-RestMethod -Uri $url1 -Headers @{Authorization = "Basic $token"} -Method PATCH -Body $JSON -ContentType application/json
}
}
Когда вы создаете новый выпуск, новый этап запускает задачу Powershell для отмены всех этапов (ожидающих утверждения POST-DEPLOYMENT).
Примечание: вам необходимо установить максимальное количество параллельных развертываний как минимум на 2.