Все команды описанные в документации и запускаемые в консоли выполняются от корня проекта
Стенд - Сервер на котором работает приложение (vps, docker, etc...)
/api документация на api приложения (link: host:port/api/docs/index.html)
/cmd дополнительные служебные точки входа в приложения (main, golang)
/data служебные данные для ведения проекта
/docs всевозможная документация на проект
/internal основной код проекта реализующий бизнес логику (golang)
/config конфигурации
/graphql GraphQL
/grpcserver GRPC server для взаимодействия с другими сервисами
/handlers контроллеры обработчики запросов
/model (типы высокого уровня)
модели реализующие бизнес логику приложения
работа с БД
/workers Фоновые задачи приложения
... возможно какие-то дополнительные функциональные пакеты
/migrations папка миграций БД проекта
/pkg вспомогательный (служебный) (модульный - пакеты) код проекта (golang)
/typ (типы низкого уровня)
пользовательские примитивные типы
функции и методы по работе с ними (конвертации...)
/pkg/models (типы среднего уровня)
типы отражающие структуру БД и реализующие непосредственную работу с ней в парадигме ОРМ
/proto protobuf files (должен быть вынесен в отдельный служебный репозиторий)
/static статичные данные проекта (выкладываются на сервер)
/test вспомогательный для тестирования
Ветки
master бой
stage релиз кандидат
dev разработка
username ветка разработчика
234 ветка задачи
Регламент деплоя:
Бой http://domain.ru/ Выкладывается по обнаружению нового классического тега без префиксов. Код должен быть в ветке master Релиз кандидат http://stage.domain.ru/ Выкладывается по обнаружению нового тега с префиксом. Код должен быть в ветке release Разработка http://dev.domain.ru/ Выкладывается по обнаружению пуша в ветку dev и из ветки dev
Для запуска приложения в различных режимах используются флаги, разные конфиги и как вариант автоматизации "Makefile.Sample". Он может быть скопирован и переименован для использования в "Makefile" (добавлен в .gitignore)
Для выполнения задачи создается ветка от ветки dev. Имя ветки это номер задачи. Ветка пробрасывается на origin и связывается с ней В ней ведется работа над задачей. Создаются миграции. Пишутся тесты и т.д. В процессе работы коммитим, пушим в репозиторий. После заверешния работы возвращаемся на dev. Забираем измнения сделанные за время работы над задчей в ветке dev. Возвращаемся обратно в ветку с задачей. Делаем merge с dev. Решаем конфликты если они появляются. Пушим законченную задачу на сервер. Формируем request.
git checkout -b 234
git push --set-upstream origin 234
...it`s work
git add .
git commit -am "comment"
git push
...
git checkout -b dev
git pull
git checkout 234
git merge dev
...conflict resolve if exists
Важно: если есть миграция БД она должна быть самой последней. И стоять после всех полученных миграций от дургих разработчиков!
git push
Создаем merge request
- Исправлены ошибки и улучшен инструмент generate (grpc type)
- Завершена концепция структур бизнес моделей
- Модели (БД) вернулись ан свое место.
- Реализована обертка и обработка ошибок GRPC
- Переработка инструментария по работе с GRPC (контекст, обработка ошибок, конвертация типов)
- Реализован инструмент по созданию сервисов и методов взаимодействия типов по GRPC
- Пакет typ перенесен в подпакет работы с grpc
- Немного переработана структура internal (middleware & websocket вынесены в отдельные пакеты)
- Работа над концепцией бизнес модели
- Реализована концепция работы с типа ENUM
- Исправление мелких недочетов
- Обновлена либа по работе с дробными числами (была ошибка при работе с БД).
- Написан заготовка примера бизнес модели
- Обновление документации (мелкие неточности)
- Проработана работа с контекстом в grpc и конвертация типов
- Обновлен пример миграции
- Переезд в свою отедльную ветку (v1)
- Обновлена, расширена и исправлена работа с вебсокетом
- Оптимизирована и улучшена работа планировщика задач (scheduler)
- Изменена структура и инициализация хендлеров
- Добавлен пример работы с grpc
- Первая стабильная версия