Я использую стратегию ветвления GitFlow. Мне нравится иметь 3 конфигурации сборки для каждого проекта:
- Integration - builds from develop, feature/* and hotfix/* with branch specification
- +:refs/heads/(develop)
- +:refs/heads/feature/(*)
- +:refs/heads/develop/(*)
- +:рез/головы/(исправление/*)
Beta — сборка из beta/* со спецификацией ветки
- +:refs/heads/(release/*)
Релиз - сборка из мастера со спецификацией ветки
- +:refs/heads/(master)
Обратите внимание на использование квадратных скобок для установки моих предпочтительных имен ветвей. Причина, по которой у меня есть эти 3 сборки, заключается в том, что я использую имя конфигурации сборки как часть имени сборки, поэтому, например, я получаю сборки в формате 1.2.3-Integration.27, а последнее число «27» — это общий для всего проекта общий счетчик сборки. Я также выполняю различные действия после сборки в разных конфигурациях, например, конфигурация выпуска выполняет действия по развертыванию.
В качестве примера того, что я называю «недетерминизмом», я только что объединил функциональную ветку с помощью запроса на включение в разработку. Я получаю сборку в моей конфигурации сборки интеграции, которая создает ветку разработки. Но затем я также получаю сборки для двух других конфигураций сборки, хотя в спецификациях их веток ничего не изменилось; это определенно не то, что я хочу, потому что моя конфигурация выпуска, например, развертывает вещи. Вот снимок экрана с выделенными сборками-нарушителями:
Обновление — дополнительная информация Вот обзор "нарушающей сборки" А вот и конфигурация триггера
Я явно чего-то не понимаю в том, как TeamCity должен работать с Git. У меня сложилось впечатление, что конфигурации сборки предназначены только для создания вещей, подпадающих под их спецификацию Branch. Откуда берутся два других? Почему эти сборки запускаются, когда спецификация ветки не включает разработку (или refs/heads/develop)? Есть ли способ предотвратить это?
Я пытался поднять этот вопрос на форуме поддержки JetBrains, но, похоже, у меня не было там никакой поддержки, поэтому я решил обратиться к сообществу StackOverflow.