Когда использовать закрытую регистрацию?

Я использую TFS 2010. В настоящее время я использую сборку Gated Check-in только в магистральной (MAIN) ветке. И я использую CI в ветках DEV и RELEASE.

  • Почему бы не использовать сборку Gated Check-in во всех филиалах?
  • В каких сценариях не следует использовать сборку Gated Check-in в ветвях DEV и RELEASE?
  • Лучше ли всегда использовать сборку Gated Check-in в каждой ветке?

person H A    schedule 30.09.2011    source источник
comment
Можете ли вы объяснить своими словами разницу между Инициированной сборкой и НЕПРЕРЫВНОЙ ИНТЕГРАЦИЯМИ?   -  person kroonwijk    schedule 30.09.2011
comment
Крунвейк; Я исправил свой вопрос. Там должно быть написано Gated Check-in, а не Triggered.   -  person H A    schedule 30.09.2011
comment
Спасибо! Теперь понятно.   -  person kroonwijk    schedule 30.09.2011
comment
связанные: stackoverflow.com/questions/31681746   -  person tkruse    schedule 26.07.2018


Ответы (3)


В нашей очень большой команде мы также делаем гейт в основной ветке и CI в ветках dev/feature (многие из них).

Gated предлагает большую защиту для ветки, но с очень большой командой и большой базой кода он может создать резервную копию очереди, если вся команда разработчиков вносит изменения в эту ветку.

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

В обоих случаях разработчики запускают модульные тесты и проверяют код, который они изменяют. CI (влияет на команду) и Gated (потребляет время в очереди) не должны заменять тестирование — должно быть правдоподобное объяснение более сложное, чем я не пробовал.

Вся команда находится в ветках feature/dev, использующих CI в течение большей части цикла, и в ветках более высокого уровня с гораздо большим количеством людей во время стабилизации конечной игры — оба этих последних условия поддерживают случай для gated.

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

person bryanmac    schedule 01.10.2011
comment
Если закрытые очереди резервируются, похоже, команде было бы полезно объединить заявки. Предполагая, что большинство изменений не будут отклонены, проверка 2 или более изменений одновременно может сократить время ожидания в очереди. - person Carl Walsh; 20.02.2016

На самом деле я не знаю причин, по которым не выполнять закрытую регистрацию при каждом вносимом вами изменении. Однако существует (в общем) предварительное условие для выполнения Gated Check-in: общее время сборки не должно превышать нескольких минут, включая любой (модульный) тест, который вы хотели бы выполнить до того, как регистрация будет принята. . В противном случае потребуется много времени, чтобы регистрация была принята, или, что еще хуже, разработчику пришлось бы отклоняться. Для команды разработчиков это также немного сложнее, или, по крайней мере, к этому нужно привыкнуть.

Непрерывная интеграция (на мой взгляд, оптимизированная в виде скользящих сборок) позволяет разработчику проверять свой код, не имея неуверенности, будет ли он принят или нет. Важно то, что разработчику всегда придется как можно скорее сталкиваться с отрицательными конечными результатами проверки. Если вы можете добиться этого, мне это нравится больше, чем закрытая регистрация.

person kroonwijk    schedule 30.09.2011
comment
В очень большой команде с большой базой кода гейтирование гарантируется только в ветвях типа выпуска более высокого уровня. Команда не может позволить себе закрыться в ветках feature/dev. Из-за размера команды и кодовой базы это резервное копирование. Смотрите мой пост ниже. - person bryanmac; 01.10.2011

Я предпочитаю закрытую регистрацию везде, потому что она ограничивает боль от регистрации разработчика, а не разделяет эту боль со всей командой, когда кто-то (неизбежно) совершает ошибку.

Как упоминалось выше, важно, чтобы Gated Check-In были быстрыми. Иногда у меня будет закрытая проверка, которая запускает наиболее важные проверки, а затем сборка CI, которая запускается после успешной закрытой проверки, которая выполняет более трудоемкие проверки.

person Dylan Smith    schedule 23.03.2012
comment
Я не уверен, что это решает проблему. У меня на работе полная сборка + все тесты занимают 24 часа на новом железе. У нас есть дымовые тесты, которые мы можем запустить примерно за 30 минут, но проблема в том, что, естественно, более тщательные или просто более трудоемкие тесты (например, тестирование того, что вы можете успешно перейти с одной версии базы данных на другую с большим количеством данных) получить переведен в категорию длинных. Часто дым ничего не поймает, тогда CI запустит длинную категорию, и дюжина тестов провалится. К тому времени рецензент часто уже утверждает код, и в любом случае остальная часть команды страдает. - person Mike; 09.02.2014