Continuous Integration в связке с DVCS — как?

Дано:

* DVCS — Git

* CI сервер — Hudson

* Используем модель ветвления GitFlow


Теперь вопрос — на какие события в origin репозитории и что должен собирать CI?

Поделитесь опытом, пожалуйста.



Понятно, что любой коммит в master должен собирать релиз.


Скорее всего, коммит в develop также должен собрать билд, прогнать тесты и задеплоить на демо сервер.


А вот с feature бранчами возникают непонятки. CI нам нужен что бы интегрироваться часто. То есть в идеале на каждый коммит в feature-* надо смерджиться с develop и, при успехе, собрать и протестировать билд. Нужно ли при успехе коммитить изменения обратно в develop на origin (вроде hudson это умеет)?


Если да, то увеличивается риск сломать develop. В любом случае, в нём оказываются незавершённые фичи. Если нет, то интеграция с работой других разработчиков/команд откладывается до завершения фичи и окончательного её мерджа в origin/develop. А к этому моменту конфликты могут накопиться.


И в какой момент делаем code review?

  • Вопрос задан
  • 3491 просмотр
Пригласить эксперта
Ответы на вопрос 2
kentilini
@kentilini
В продакшн
Не знаю, у нас коммиты в develop делаются только руками и только после ручного тестирования. Да, hudson умеет делать post-build push, но успешная прогонка тестов не означает абсолютно правильную работу программы.
Ответ написан
@1nd1go
feature бранч — это вообще говоря вещь для локальной разработки девелопером. Иногда надо поделится с другим девелопером кодом из этой бранчи, тогда, как неизбежное зло, эта бранча попадает на центральный репозиторий вашей команды. Но вообще говоря, ее для остального мира не существует. А функциональность для мира начинает существовать только когда бранча смерджена в develop, а сама она уже прибита.

Так вот исходя из вышесказанного, CI собирает только develop и master. Остальных бранчей для него не существует.

Решением сложностей при мердже бранчи в девелоп после длительного периода является периодический бэкпортинг изменений из девелопа в бранчу, чтобы бранча была как бы все время up-to-date с изменениями в девелопе.

Код ревью делается при мердже бранчи в девелоп, т.е. когда можно посмотреть изменения между результатом git merge --no-ff --no-commit и develop baseline.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы