Как правильно выстроить процесс разработки?

Здравствуйте!
Есть 3 сервера.

1 - production. Боевой сервер.
2 - test. Показываем клиенту промежуточные результаты.
3 - dev. Разрабатываем новые фичи.


..а также репозиторий на bitbucket с которым работаю через sourcetree.

Как правильно реализовать такой процесс работы?
В IDE пишу код, gulp собирает фронтенд, все автодеплоится на сервер dev, там смотрю. Есть какой-то промежуточный результат. (условно: делаем блок новости, сделано добавление и чтение новостей)
Делаем коммит в ветку dev. После этого у нас автоматически с гита деплоится на сервер test.
Потом такими коммитами мы сделали новый функционал (удаление, добавление, модерация, чтение, редактирование новостей).
Все проверили, все работает. Отправляем все коммиты из dev на production. У нас автоматически на боевой сервер из гита последняя версия подгрузилась.

Какие инструменты могут понадобится для реализации такой системы?
Правильно ли я представляю себе этот процесс?
Как это реализовать?

Заранее благодарю)
  • Вопрос задан
  • 1806 просмотров
Решения вопроса 1
flr
@flr
Какие инструменты могут понадобится для реализации такой системы?

Вопрос скорее всего не совсем уместен. Вам могут перечислить инструменты, которые нужны для постройки дома, однако дом вам построить это не поможет. Но, чтобы не быть голословным, вам понадобятся:
1. Git server (Bitbucket, Gitlab, etc). Если работаете один или проект очень простой, то достаточно будет gitolite.
2. CI server (Bamboo, Jenkins, etc).
3. Любой язык программирования для написания pre-receive/post-receive хуков и задач для CI.

Правильно ли я представляю себе этот процесс?

Вне зависимости от того, будете ли вы работать один или в команде, с моей точки зрения процесс выглядит усложненным и надуманным. Я бы начал с простого процесса и усложнял бы его только по мере появления каких-то проблем. Если вы начнете со сложного, то вы сразу создадите себе проблемы. И будете создавать новые, решая старые.
Как я вижу простой процесс:
1. Возьмите одну ветку, которая будет стабильна, например, master.
2. Для каждой фичи создавайте отдельную ветку из стабильной. Например, ivan-news-block или ivan-search-bug-fix. Правила нейминга придумать можно любые.
3. Тестируйте код на своей виртуалке. Обычный vagrant + virtualbox. Если у вас добавляется второй разработчик, то он просто берет Vagrantfile и у него на машине появляется виртуалка с готовым окружением для работы. Зачем вам общий dev сервер?
4. Процессом деплоя управляет или CI сервер, или ansible/puppet, или самописные скрипты.
5. Когда ветка готова к релизу, то запускайте процесс деплоя на тестовый стенд, где вы можете показать это заказчику или кому-то еще. Там же CI может прогонять тесты.
6. Когда фича аппрувнута заказчиком или ПО задачи, то запускайте процесс деплоя на бой.

Как это реализовать?

Вопрос явно требует уточнения. Сейчас ваш вопрос звучит так: "Как нарисовать сову?".
Но что-то могу порекомендовать:
Начать надо с построения процесса с проделыванием всех действий вручную. Далее постепенно каждую ручную операцию переводить на автоматику. Не стоит сразу пытаться сделать какой-то идеальный механизм.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Elizavetta
Matroid: gamedev/js-разработка
Почти. Вместо
Все проверили, все работает. Отправляем все коммиты из dev на production.

накатываем этот функционал из dev на основную ветку (мастер), в продакшн только с основной.
На тест отправляем только то, что готово для передачи условным тестировщикам.
gitflow для разных людей.
достаточно что-то типа gitlab+jenkins
Ответ написан
Комментировать
ruFelix
@ruFelix
Предсказание будущего по руке, таро, кофе.
sourcetree в последней версии глючен, в течении последних двух неделю отказались от него полностью.

так и возьмите hg/git flow , будет ветка для продакшена (деплоется на боевой), для последних версий разработки develop ветка, которая деплоется на test, ну и по ветке на каждую фичу которую каждый разработчик расзрабатывает на своём dev сервере, когда закончил закрывает ветку фичи и она сливается в develop ветку и автоматом разворачивается на test сервере. Когда на тестовом сервере видим, что то вменяемое дев ветка сливается в мастер и мастер деплоется на боевой сервер.

гуглить hg/git flow
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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