Кажется, это довольно распространенная тема, чтобы иметь этот трехуровневый рабочий процесс.Вот как мы это сделали.Мы магазин Ruby, поэтому здесь тоже есть упоминание о тестировании.
Мы все работаем над отдельными "историями" (из Pivotal Tracker) отдельно друг от друга.Это означает, что если бы мы все выполняли ветку master , то мы бы постоянно наступали друг другу на ноги.Чтобы решить эту проблему, каждый из нас создает новую ветвь (на основе последней master ) для этой конкретной части работы.
Когда мы завершим эту часть работы, мы запустим тестымы сами, и если они проходят, они объединяются с веткой master , где тесты запускаются снова, чтобы убедиться, что не было никаких поломок.Если это так, мы пытаемся использовать git bisect
, чтобы выяснить, что это было, и это работает в 99% случаев.
В большинстве случаев (потому что мы действительно классные *) тесты проходят успешно,Когда все тесты пройдут в основной ветке, мы развернем наш промежуточный сервер.Итак, я думаю, это означает, что master является staging ответвлением.Когда эта функция (или, более вероятно, функции) была одобрена, мы объединяем эти изменения в ветку production и затем перемещаем эту ветвь на рабочую площадку.
С этой настройкойотдельные разработчики могут иметь работающую копию приложения для себя, команда QA получает рабочую копию, чтобы перейти к ней, когда у них есть время (это «самая веселая» часть моей работы, собирать людей - это какскотоводство) и в реальном мире есть идеальный сайт.
В теории все равно.Люди делают ошибки.