#azure-devops
#azure-devops
Вопрос:
У нас есть конвейер выпуска YML Azure, приведенный ниже, который мы пытаемся запустить, когда наш конвейер сборки будет завершен.
Мы заметили, что выпуск YML не запускается, когда конвейер сборки частично успешен. Хотя, когда мы используем часть триггера в конвейере выпуска для приведенного ниже фрагмента, он запускается даже при частичном успешном завершении сборки, но когда мы настраиваем триггер через пользовательский интерфейс на прилагаемый скриншот, он НЕ запускается при частичном успешном завершении конвейера сборки.
Ниже показано, когда мы выполнили настройку триггера в самом коде YML — это работает даже при частичной успешной сборке.
Ниже показано, когда мы выполняли настройку триггера только в пользовательском интерфейсе — это НЕ работает в случае частичной успешной сборки.
Пожалуйста, сообщите нам, что мы должны сделать, чтобы запустить конвейер выпуска, даже если сборка частично успешна, в случае, когда мы устанавливаем триггер через пользовательский интерфейс.
Спасибо Sharad
Ответ №1:
Согласен с Cece.
В качестве обходного пути мы могли бы добавить task power shell и вызвать сборку очереди API для запуска сборки.
Шаги:
Создайте токен PAT -> сохраните его в переменной конвейера сборки и сохраните его в секрете.
Добавьте командную оболочку управления задачами и задайте условие Even if a previous task has failed, even if the build was canceled
Сценарий Power shell:
$token = "$(pat)"
$url = "https://dev.azure.com/{Org name}/{project name}/_apis/build/builds?api-version=6.1-preview.6"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$JSON = @"
{
"definition": {
"id": {Build definition ID}
}
}
"@
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -ContentType application/json -body $JSON
write-host $response
Результат:
Ответ №2:
Пожалуйста, ознакомьтесь с документацией здесь:
Ранее вы могли перейти к классическому редактору для вашего конвейера YAML и настроить триггеры завершения сборки в пользовательском интерфейсе. Хотя эта модель все еще работает, она больше не рекомендуется. Рекомендуемый подход заключается в указании триггеров конвейера непосредственно в файле YAML. Триггеры завершения сборки, определенные в классическом редакторе, имеют различные недостатки, которые теперь устранены в триггерах конвейера.
Комментарии:
1. я НЕ могу использовать триггеры конвейера в yml, потому что я НЕ могу исправить имя конвейера сборки в исходном коде.. вот почему для каждого конвейера я пытался выбрать триггеры пользовательского интерфейса, как указано в документации, но это не поддерживает частичные завершенные сборки.
2. Не могли бы вы уточнить «НЕ исправлять имя конвейера сборки»? Как насчет обходного пути Vito, представленного ниже?
3. Это означает, что я не могу на самом деле жестко закодировать имя конвейера сборки в yml. Вот почему хотелось использовать триггер из пользовательского интерфейса, но это не работает в случае частичных успешных сборок.
4. Прошу прощения за это ограничение. Можете ли вы отредактировать конвейер сборки? Если вы можете редактировать конвейер сборки, вы можете попробовать обходной путь @Vito, который использует rest api в конвейере сборки для запуска конвейера выпуска.
5. Сиси, не могли бы вы подсказать, можем ли мы использовать переменную в имени конвейера сборки при настройке ресурса конвейера.. я не смог использовать переменную на этом уровне, и поэтому я использовал подход к настройке триггера с помощью пользовательского интерфейса.