Командный триггер запускает новую ветку без новой фиксации

Я использую TeamCity 2017.1.4 вместе с GitVersion.

Сам проект teamcity состоит из многих конфигураций сборки, первым из которых является запуск GitVersion, а затем все последующие шаги принимают зависимость моментального снимка от этого шага и вытаскивают версию из ее параметров.

В большинстве сценариев это работает отлично, однако, если мы создадим новую ветвь, например. /release -foo и нажимаем это, teamcity не будет вызывать сборку, потому что ранее уже построенная команда commit, к сожалению, нам нужно, чтобы она запускалась снова, даже если фиксация не изменилась в новой ветки, означает, что она будет отличаться Номер GitVersion.

Я попытался заставлять зависимости моментальных снимков от конфигурации сборки GitVersion всегда перестраиваться, но это кажется уродливым, как разрывает все другие сценарии, где это не проблема. Я также знаю, что могу вручную запустить сборку, рассказывая ей, чтобы перестроить все зависимости, и это сработает, однако мне любопытно, есть ли более удобный способ заставить teamcity автоматически запускать сборку для фиксации на ветке, если эта ветка не ранее существовал, или даже каким-либо другим способом я мог бы подходить к этому.

Ответ 1

Вы можете попробовать настроить TeamCity для включения в сборку различных/более переменных версии GitVersion, включая название ветки и, возможно, теги версии. Это обеспечит способ для вашего процесса сборки различать одну и ту же фиксацию в разных ветвях.

См. шаги 1-5 из этот пост CD, а также подробное сообщение в блоге об использовании GitVersionTask для некоторых примеров того, как использовать дополнительную информацию в TeamCity.

Ответ 2

Вы можете добиться этого, вызвав сборку с крюка git.

Как объяснено здесь, вы можете использовать крюк update для идентификации нажатых ветвей (даже если несколько нажаты в одну операцию), и для каждой ветки (при условии, что она проходит ваши правила запуска) запускает сборку TeamCity с помощью REST API.

Ответ 3

Если вы просто измените фиксацию на новой ветке, не изменяя ничего, она получит новый хеш из-за изменений метки времени. Я бы не счел это хорошим решением, но имхо лучше, чем запуск вручную.