2015-07-28 7 views
21

Я всегда работал с сборкой непрерывной интеграции (CI) в TFS. Однако в моем последнем проекте мы начали использовать триггер с закрытой регистрацией.Недостатки закрытой регистрации в TFS

Есть ли недостатки при использовании закрытой регистрации? Потому что, если это мешает команде проверять сломанный код, какова цель триггера CI?

ответ

33

Gated checkin - это форма построения непрерывной интеграции. В TFS он создает шкаф , содержащий код, который проверяется, затем запускает сборку этого кода. Только если этот код будет успешно создан, и все сконфигурированные модульные тесты пройдут, код действительно будет зафиксирован.

Непрерывная интеграция отличается - в CI код совершается независимо от того, что происходит в результате сборки. Если CI-сборка завершилась неудачей из-за того, что код не был зафиксирован, код все еще присутствует в исходном контроле, доступном для всех.

Теперь для мнений: Gated checkin is great, если у вас есть большое количество разработчиков с разным уровнем мастерства/опыта, поскольку он предотвращает попадание неработающего кода в исходный код. Недостатком является то, что он увеличивает время между передаваемым кодом и кодом, доступным для других, и, следовательно, может привести к ситуациям, когда люди сидят вокруг, сжимая большие пальцы, ожидая завершения сборки.

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

+0

Дополнительное рассмотрение. Если инфраструктура сборки недоступна, закрытая проверка запретит разработчикам публиковать свой код; поэтому я предлагаю иметь план B (может быть несколько сценариев, которые меняют тип сборки с Gated на CI и обратно) –

+2

Если вы используете Git, вы можете использовать политики сборки для достижения аналогичного стробированного рабочего процесса checkin: https : //msdn.microsoft.com/Library/vs/alm/Code/git/branch-policies#Requirethepullrequesttobuild –

+0

Уточните, людям не нужно ждать, пока GC закончится («twiddling их большие пальцы ждут»). Они могут не сохранять свои изменения локально и продолжать свою следующую задачу. Конечно, если они зависят от этой части, они могут сохранять свои локальные изменения и продолжать, и после завершения GC они могут получить последние и согласовать свои серверные/локальные изменения. Мы делаем это таким образом, и это заставляет людей ждать, и удерживает GC как стоп-зазор, как указано. – SnapJag