Репозиторий для всего проекта. Использует git submodule, чтобы включить все остальные сервисы
git clone --recurse-submodules https://github.com/CorporationX/CorporationX
Следуем инструкциям в README в разделе infra. Это отдельный репозиторий, который содержит в себе все инфраструктурные компоненты (БД, Redis, Docker Compose и пр.)
Каждая папка в этом репозитории - это отдельный подрепозиторий, который тоже есть на GitHub. Т.е. user_service - это обычный Git-репозиторий, который попросту включен в большой репозиторий CorporationX в качестве подрепозитория.
CorporationX репозиторий существует лишь для удобства: можно сразу склонировать все необходимые сервисы всего одной командой git clone, которая указана выше.
Каждый подрепозиторий представляет собой отдельный сервис (Java-приложение) в экосистеме CorporationX. Например, user_service - это приложение, которое содержит в себе логику работы с пользователями, project_service - логику работы с проектами и т.д. Соответственно в зависимости от конкретной задачи вы будете работать либо в том, либо в другом сервисе. По сути просто писать там код, как в обычном проекте в IDEA.
Поэтому:
- Выкачиваем весь проект CorporationX, используя команду клонирования выше
- Из конкретной задачи в Jira определяем, в каком сервисе нужно вести разработку.
- Открываем в IDEA папку с этим сервисом
- Работаемс!
Каждая команда будет иметь свою собственную master ветку в общем репозитории. Например, команда unicorn шестого потока имеет ветку unicorn-master-stream6, которая содержит весь стабильный код этой команды в определенном сервисе, и именно туда участники должны создавать PR-ы.
Поэтому:
- Получаем задачу в Jira
- Определяем, в каком сервисе будем вести разработку
- Открываем этот сервис в IDEA
- Переключаемся на
master-ветку СВОЕЙ команды. ЭТО ОЧЕНЬ ВАЖНО. Если вы только начинаете разработку новой задачи, то убедитесь, что переключились на веткуunicorn-master-stream6илиkraken-master-stream8в зависимости от ваших команды и потока, перед тем, как создать еще одну ветку. - Из данной ветки создаем ветку для вашей конкретной задачи по шаблону, принятому в команде. Например,
feature-{номер_задачи}илиbugfix-{номер_задачи}в зависимости от того, делаете ли вы новую фичу или чините некоторый баг. ВАЖНО: в названии веток нельзя использовать слово master, иначе github не даст напрямую запушить в эти ветки. - Именно в этой ветке ведем всю разработку
- Когда разработка завершена создаем PR из этой ветки в master-ветку вашей команды, из которой изначально и создавали рабочую ветку. Убедитесь, что всегда создаете PR в правильную ветку именно для вашей команды.
- Получам аппрув от техлида.
- Мержируемся!
Каждый PR в этом репозитории обязан содержать unit-тесты на всю вашу логику. Когда команда добавит CI пайплайны на GitHub, то PR-ы с упавшими тестами, будут также отправляться обратно в работу.
Ваш PR должен быть полностью зеленым и покрыт тестами, чтобы получить аппрув. Это обязательное требование.