У меня есть проект .Net, в котором используются конвейеры Azure DevOps. Настройка заключается в том, что у меня есть конвейер сборки, который создает артефакт. Затем артефакт автоматически публикуется через конвейер выпуска. Это работает отлично.
Проблема заключается в том, что после того, как я включил проверку сборки политики, запросы на вытягивание теперь запускают конвейер сборки, который затем запускает конвейер выпуска. Таким образом, каждый запрос на включение публикуется. Шаг сборки правильный, но релиза быть не должно. Триггер перед развертыванием «Развертывание запроса на вытягивание» отключен.
Что я сделал, чтобы попытаться решить эту проблему, так это то, что я добавил условие на шаг сборки, на котором создается артефакт. Таким образом, запросы на вытягивание не создают артефакты, в отличие от слияний. Это также работает по назначению. Тем не менее, выпускной канал по-прежнему срабатывает, но на этот раз без артефакта (который выходит из строя).
TLDR:
Триггеры канала выпуска для запросов на вытягивание, настройки для этого поведения отключены. WTD?
Мои настройки CI/CD:
Ваш релиз срабатывает на любой из ваших сборок и веток (у PR тоже есть ветка). Вы должны добавить фильтр ветки: Триггеры непрерывного развертывания. Ограничьте свой фильтр основной веткой или любой другой. Кроме того, вы можете определить 2 определения сборки:
Кроме того, я думаю, что это ошибка. Потому что триггер PR не включен. Давайте проверим комментарии сообщества разработчиков: https://developercommunity.visualstudio.com/content/problem/1292039/release-pipelines-ignore-pull-request-settings.html
Здесь мы настроили конвейеры сборки, привязанные к файлам YAML, хранящимся в репозитории, вместе с исходным кодом. И конвейеры выпуска имеют свой источник, настроенный для каждого из конвейеров сборки.
Это часть основной сборки:
trigger:
batch: false
branches:
include:
- master
И это часть сборки запроса на слияние:
trigger: none
pr:
- master
У нас есть конвейеры выпуска для каждой из исходных сборок, триггеры запросов на вытягивание включены только в одном из них, но вы можете иметь только один для своих основных артефактов, поэтому PR не будут опубликованы.