Вывод сборки запроса на выход 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'))