Дано:
* DVCS — Git
* CI сервер — Hudson
* Используем модель ветвления
GitFlow
Теперь вопрос — на какие события в origin репозитории и что должен собирать CI?
Поделитесь опытом, пожалуйста.
Понятно, что любой коммит в master должен собирать релиз.
Скорее всего, коммит в develop также должен собрать билд, прогнать тесты и задеплоить на демо сервер.
А вот с feature бранчами возникают непонятки. CI нам нужен что бы интегрироваться часто. То есть в идеале на каждый коммит в feature-* надо смерджиться с develop и, при успехе, собрать и протестировать билд. Нужно ли при успехе коммитить изменения обратно в develop на origin (вроде hudson это умеет)?
Если да, то увеличивается риск сломать develop. В любом случае, в нём оказываются незавершённые фичи. Если нет, то интеграция с работой других разработчиков/команд откладывается до завершения фичи и окончательного её мерджа в origin/develop. А к этому моменту конфликты могут накопиться.
И в какой момент делаем code review?