Страницы

Поиск по вопросам

понедельник, 1 октября 2018 г.

Git для программиста-одиночки

Работаю с небольшим проектом, в моем распоряжении:
Рабочая станция, на которой я пишу код Тестовый сервер, куда я автоматическим аплоудом загружаю код и смотрю результат, а также запускаю тесты Боевой сервер, на который я загружаю изменения после тестрирования
Хочу работать через Git чтобы была возможность быстро создавать ветки и переключаться между ними.
Я хочу работать примерно так:
Пришел отчёт о баге или запрос на добавление функционала Я создал ветку для этого фикса и переключился в неё Написал код, периодически загружая его на тестовый сервер чтобы посмотреть что получилось Код написан, тесты пройдены, делаю коммит и сливаю готовый код в ветку master Оттуда (желательно автоматически) код забирает боевой сервер.
Прочёл много материалов и не понял, как достичь нужного мне воркфлоу. Прежде всего мне непонятно где должен располагаться репозиторий и как с ним работать через Phpstorm.


Ответ

Если я правильно понял, то с git вы пока не знакомы. Git отличается от систем предыдущего поколения своей децентрализованностью, т.е. каждый репозиторий действует сам по себе, поэтому вся работа, теоретически, может производиться на одной машине без поднятия каких-либо серверов. После выполнения команды git init (в PHPStorm делается через меню) репозиторий сам создастся в корне проекта в виде папки .git. Она нам еще пригодится. Что до "центрального сервера", то я рекомендую завести аккаунт на bitbucket - это сервис по хранению и управлению гит-репозиториями, который позволяет заводить любое количество приватных репозиториев. Он нам тоже еще понадобится.
Тот воркфлоу, который вы описали, за исключением развертывания и тестов - это практически копия описания git-flow. git-flow предполагает существование ветки master, в которой лежит продакшен-код, и ветки dev, в которой лежит текущая версия. Для создания новых фич создаются ветки feature/some-name, которые по окончании мерджатся в dev; при фиксе багов создаются ветки hotfix/some-name, которые мерджатся как в dev, так и в master.Все это дело, конечно, уже автоматизировано пакетом gitflow, для которого существует плагин в PHPStorm, благодаря которому все эти действия еще упростятся.
С развертыванием есть два (три) пути. Во-первых, гит поддерживает так называемые хуки, которые позволят вам запускать скрипты при различных действиях с репозиторием, что позволит вам прицепить рукописные скрипты к каким-то действиям. Но это не очень правильно, так как на каждый коммит у вас будет запускаться этот самый скрипт. В случае, если вы завели аккаунт на битбакете, есть альтернативный путь - хуки в самой системе битбакета, которые исполняются при каждой заливке новых коммитов и позволяют сделать HTTP-запрос по определенному URL. Сюда можно прицепить staging и production сервера, заставив их обновляться по подобному запросу. В этом случае придется выписать этим серверам в битбакете по deploy key (самые обычные ssh-ключи), которые будут необходимы для того, чтобы эти сервера могли стянуть свежий код.
Однако, по-хорошему, нужен дженкинс, который будет всем этим делом оперировать, иначе, конечно, постоянно придется что-то делать вручную. Дженкинс - это сервер постоянной интеграции, который специально предназначен для автоматизации такого рода процессов. В этом случае хук с битбакета будет посылатсья на дженкинс, который сам будет фильтровать обновленные ветки и на основании их запускать внутренние проекты. В этом случае надо будет сконфигурировать подключение дженкинса по ssh к серверам и создать два проекта - деплой и запуск тестов на staging-сервере и деплой на production-сервере; первый должен запускаться по хукам и выкатывать самую свежию загруженную ветку, а второй - только по кнопке, либо по обновлению ветки мастер.
Если какие-то вещи вы все-таки не знаете, а я подумал обратное, пишите, я дополню ответ.

Комментариев нет:

Отправить комментарий