Как и Дженкинс, может ли TeamCity получать уведомления от GIT, когда происходит коммит?
Когда есть коммит на git, я хочу автоматически запустить сборку на этой конкретной ветке.
1 ответ
Есть 2 способа обработки коммитов - со стороны сервера Git и со стороны клиента. Если вы хотите обрабатывать коммиты немедленно, вам нужно использовать GitHook. Это ваш код, который выполняется Git-сервером при особых событиях (например, коммит сделан). Это обработка со стороны сервера. Минусы в том, что вы увеличиваете размер очереди на сборку, что очень важно, когда у вас активная разработка и большая команда.
Со стороны клиента (включая TeamCity и Jenkins) у вас нет другого выбора, кроме как опросить сервер на предмет изменений. Минусы в том, что у вас нет немедленного ответа, но это относительный недостаток (вам не нужно ловить изменения, сделанные каждую секунду). Плюсы в том, что вы не увеличиваете нагрузку на Git-сервер.
Это естественный баланс, который не относится к системе КИ. Дженкинс и TeamCity работают одинаково.
Использование системы CI для запуска сборки сразу после каждой фиксации означает частый опрос. Это очень плохо, так как нагрузка на VCS(Git) очень большая. Вместо этого следует использовать GitHook. Это прямой ответ на ваш вопрос.