Я предварить мой ответ с подробностями, что я бегу на GitHub и Дженкинс.
Зачем разработчику приходится выполнять все тесты локально до совершения. Особенно в парадигме Git, которая не является требованием. Что, если, например, для выполнения всех тестов требуется 15-30 минут. Вы действительно хотите, чтобы ваши разработчики или вы лично сидели, ожидая, что тесты будут выполняться локально до вашего фиксации и нажмите ваши изменения?
Наш процесс, как правило, выглядит следующим образом:
- Внести изменения в местное отделение.
- Запустите все новые тесты, которые вы создали.
- Commit изменяется на локальную ветвь.
- Надавите локальные изменения удаленно на GitHub и создайте запрос на pull.
- Имейте процесс сборки, чтобы получить изменения и выполнить модульные тесты.
- Если тесты не удались, затем исправьте их в локальной ветви и нажмите их локально.
- Получить код изменения, рассмотренный в запросе на тяну.
- После одобрения и всех проверок, нажмите на мастер.
- Повторить все юнит-тесты.
- Нажмите артефакт в хранилище.
- Нажимайте изменения в среде (например, DEV, QA) и выполните любые интеграционные/функциональные тесты, которые основаны на полной среде.
- Если у вас есть облако, то вы можете нажать ваши изменения в новый узел, и только после того, как все тесты окружающей среды проходят перенаправит VIP на новый узел (ы)
- Repeat 11 до тех пор, пока протолкнули все предустановленные среды.
- Если вы практикуете непрерывное развертывание, то все ваши изменения доходят до PROD, если все испытания, проверки и т. Д. Проходят.
Я считаю, что разработчики не используют время для тестирования, локально препятствуя их прогрессу, когда вы можете отключить эту работу на сервере непрерывной интеграции и получать уведомления о проблемах, которые необходимо исправить позже. Кроме того, некоторые тесты просто не могут выполняться до тех пор, пока вы их не зафиксируете и не поместите артефакт в среду. Если среда нарушена, потому что у вас нет облака, и, возможно, у вас есть только один сервер, тогда исправьте его локально и быстро нажмите на изменения, чтобы стабилизировать среду.
Вы можете выполнять тесты локально, если это необходимо, но это не должно быть нормой.
Что касается проблемы с несколькими разработчиками, проекты с открытым исходным кодом уже давно имеют дело с этим. Они используют вилки в GitHub, чтобы позволить вкладчикам предлагать новые исправления и функциональные возможности, но это на самом деле не так отличается от разработчика в команде, создающей локальный филиал, отталкивая его удаленно и получая участие в бай-ине с помощью проверки кода перед нажатием , Если кто-то подталкивает изменения, которые нарушают ваши изменения, вы сначала пытаетесь исправить их, а затем попросите их о помощи. Вы должны следовать принципу «слияния рано и часто», а также периодическому слиянию обновлений от мастера к вашей отрасли.
Это вопрос, который люди задавали МНОГО - и теперь, по крайней мере, Дженкинс и TeamCity поддерживают «предварительно проверенные коммиты». :-) –