Вывод сборки запроса на выход VSTS
Моя команда использует механизм сборки и выпуска VSTS, в сочетании с настройками безопасности ветвления запроса запроса, так что код можно объединить только тогда, когда запрос на перенос завершен.
Мы сталкиваемся с чем-то нечетным, потому что когда создается запрос pull-запроса (и создается сборка для подтверждения фиксации) - завершение этой сборки, вызванное запросом pull, также косвенно вызывает выпуск, потому что у нас есть релиз.
Это само по себе, вероятно, нормально, но тогда также происходит "завершение" запроса на извлечение, происходит другой цикл сборки и выпуска!
Есть ли способ заставить триггеры релиза VSTS запускаться только тогда, когда запрос на растяжение завершен и объединен с ветвью релиза?
Спасибо!
Ответы
Ответ 1
Мы можем указать фильтр ветвления для триггера выпуска, чтобы только сборки master запускали выпуск. Сборки проверки PR выполняются в другой ветке. Когда одобрено и ветка объединена с master, то сборка, которую вы хотите, запускает релиз.
Раздражительно, они продолжают перемещать вещи вокруг. На момент написания этой статьи при редактировании выпуска в разделе "Конвейер", в разделе "Артефакты" артефакта находился круг с молнией внутри, подсказка подсказывает "Триггер непрерывного развертывания" - щелкните по нему. Справа, если триггер включен, вы увидите "Построить фильтры веток". Нажмите "+ Добавить" и выберите основную ветку. Сохраните определение выпуска.
Что касается сборки, выполняющей разные вещи, теперь мы можем задавать условия для задач так, чтобы вы могли запускать задачу только в сборках проверки PR или только в основных сборках.
https://docs.microsoft.com/en-us/vsts/build-release/concepts/process/conditions
Ответ 2
Вам просто нужно клонировать ваше текущее определение сборки и отключить сборку CI, а затем использовать клонированную сборку для проверки созданного PR.
Сначала измените настройки ниже, как показано ниже:
1. Clone build.
Нажмите кнопку ...
в CI build → Clone → отредактируйте определение клонированной сборки → отключите CI build → save.
![введите описание изображения здесь]()
2. Замените клонированную сборку для политики ветвей.
Откройте политику ветвления → измените политику проверки сборки → вместо этого выберите определение клонированной сборки → сохранить.
![введите описание изображения здесь]()
Таким образом, рабочий процесс будет:
- Клонированная сборка будет инициирована при создании/изменении запроса на перенос.
- При успешном завершении работы клонированной сборки вы можете завершить PR.
- Когда PR завершен (изменения были объединены), сборка CI будет запущена.
- Когда сборка CI будет успешной, релиз CD будет запущен.
Теперь только PR завершается и объединяется в ветвь release
, будет выведено определение выпуска.
Ответ 3
Используйте условные операторы для задачи Build, чтобы проверить, является ли Build.Reason "Запросом извлечения".
Перейдите к своей Задаче> Разверните "Параметры управления"> "Запустить эту задачу"> Под этим выберите "Пользовательские условия"
В пользовательских условиях укажите ниже условие для фильтрации сборок PullRequest и ( successeded (), ne (переменные ['Build.Reason'], 'PullRequest'))