Можно ли пометить выпуск как успешный, если задача ручного вмешательства отклонена? - PullRequest
1 голос
/ 05 июня 2019

В настоящее время я пытаюсь создать конвейер выпуска Azure для развертывания сервисной фабрики.У меня есть один этап для нашей тестовой среды, который содержит несколько заданий / задач.

После успешного развертывания в среде мы запускаем интеграционные и дымовые тесты.

После моих дымовых тестоввставил задачу ручного вмешательства, чтобы дать возможность разработчикам запускать регрессионные тесты (возобновить) или выйти из процесса (отклонить). Я хотел бы отметить конвейер деблокирования как успешный, если все предыдущие задачи (развертывание, интеграция и копирование) пройдены, а ручное вмешательство отклонено.

Если на ручное вмешательство ответили возобновлением, тогда результат следующих задач должен определить результат конвейера освобождения.

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

1 Ответ

0 голосов
/ 06 июня 2019

Когда пользователь отклоняет вмешательство, статус деблокирования становится «Неудачным».

Я подумал, как обойти эту проблему:

1) Пользователь всегда «возобновляет» вмешательство, но «комментарии» будут другими.

2) После этого,перед регрессионным тестом добавьте задачу PowerShell для проверки предыдущего комментария и установите новую переменную со значением «true», если комментарии являются своего рода «запустите тесты».

3) В наборе задач регрессионных тестовпользовательское условие для запуска, только если новая переменная равна «true».

Например, если утверждение возобновит вмешательство с помощью «Выполнить тесты», будут выполнены тесты регрессии.поэтому вам нужен сценарий PowerShell, который проверяет, что написано в утверждении, если текст утверждения «Выполнить тесты», мы устанавливаем новую переменную runTest = true:

$url = $(System.TeamFoundationServerUri)$(System.TeamProject)/_apis/Release/releases/$(Release.ReleaseId)/manualinterventions?api-version=5.0
$header = @{ Authorization = "Bearer $env:System_AcessToken" }
$release = Invoke-RestMethod -Uri $url -Method Get -ContentType application/json -Headers $header
$comment = $release.value.comments
if($comment -eq "Run Tests")
{
    Write-Host "##vso[task.setvariable variable=runTest]true"
}

enter image description here

Затем в задаче «Регрессионные тесты» необходимо настроить пользовательское условие для запуска, только если переменная runTest равна true:

and(succeeded(), eq(variables['runTests'], 'true'))

enter image description here

Теперь, если в утверждении написано «Выполнить тесты», тесты будут выполнены:

enter image description here

Если нет, тотесты будут пропущены, но выпуск будет «успешным»:

enter image description here

Примечание: для сценария PowerShell вам необходимо разрешить сценариям доступ к токену OAuth(установите флажок в параметрах задания агента):

enter image description here

...