Порядок работы с корпоративным GitLab репозиторием
Для корректного процесса CI/CD, структуризации и прослеживаемости разработки для всех кодовых репозиториев разрабатываемых проектов применяется следующий набор правил:
- Все проекты должны быть группированы по принципу <подсистема/мастер проект>[/подпроект]/<frontent/backend> или <подсистема/мастер проект>/подпроект, например: cok/lms/backend или cok/video-store
- Все проекты имеют три обязательные ветки: main (по умолчанию), stage и production.
Ветка main используется для сборки ПО в репозиторий testing
Ветка stage используется для сборки ПО в репозиторий staging
Ветка production используется для сборки ПО в репозиторий stable - Все три обязательных ветки являются защищенными (protected) ветками репозитория. Прямая фиксация изменений (Push) в эти ветки разрешена только мейтнерам (владельцам) проекта. Запрос на слияние (Merge request) другим разработчикам разрешен только в ветку main.
- Репозиторий может содержать дополнительные служебные ветки имеющие формат именования stand/<feature>. Такие ветки используются для автоматической сборки и развертывания стенда в среде Kubernetes. По окончанию сборки, разработчику осуществляющему фиксацию изменений отправляется сообщение с адресом стенда или ошибкой сборки контейнера на электронную почту, указанную в свойствах профиля GitLab, как Private Email.
- Репозиторий может содержать иные ветки с наименованием разрабатываемого функционала. Наименование должно состоять из 1-2 слов на английском языке, разделенных символом тире.
- Каждая фиксация изменений должна сопровождаться комментарием со сведениями о вносимом изменении. Если изменения не значительны, проводятся только для форматирования кода или для запуска процесса сборки стенда, допускается указывать прочерк (символ тире) в качестве текста комментария. Комментарии, за исключением служебных, попадают в журнал изменений проекта (changelog).
- Если требуется провести очистку базы данных и постоянных томов стенда, используется слияние изменений с ключевым словом CleanStand в качестве значения комментария.