# Порядок работы с корпоративным GitLab репозиторием

Для корректного процесса CI/CD, структуризации и прослеживаемости разработки для всех кодовых репозиториев разрабатываемых проектов применяется следующий набор правил:

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