Модель ветвления GIT описана здесь.
Для проекта подключены авторелизы npm пакетов с помощью semantic-release. Semantic-release определяет новую версию пакета по названию коммита, а именно по его enum:
- feat - релиз minor версии пакетов
- bug - релиз patch версии пакетов
- wip (work in progress) - релиз произведен не будет
- refactor - релиз patch версии пакетов
- doc - релиз произведен не будет
- build - релиз patch версии пакетов
- chore - релиз произведен не будет
При внесении изменений в main ветку запускается релиз пакетов. При релизе происходит следующее:
- В
create_release.yml
срабатывает триггер на push в main - Semantic-release определяет новую версию пакета
- Если новая версия пакета отличается от предыдущей, то запускается билд каждого пакета и его паблишинг в npm. Все пакеты релизяться сразу с одной версией
- Semantic-release генерирует changelog и создает новый release на github, добавляя в описание сгенерированный changelog
- После успешного паблишинга пакетов, в телеграм канал отправляется уведомление о новой версии пакетов
Для коммитов и pull requests включен commitlint. Ниже описан формат.
Для enums feat, bug обязательно должен указываться номер задачи в jira.
Формат:
${ENUM}(SCOPE|COMPONENT_NAME|TASK): Что было сделано?
ENUM:
- feat - добавлена новая фича. Для этого enum будет произведен релиз minor версии пакетов
- bug - исправлена ошибка. Для этого enum будет произведен релиз patch версии пакетов
- wip (work in progress) - промежуточные изменения
- refactor - произведен рефакторинг. Для этого enum будет произведен релиз patch версии пакетов
- doc - внесены изменения в .md файлы или storybook. Для этого enum релиз произведен не будет
- build - внесены изменения в сборке пакетов. Для этого enum будет произведен релиз patch версии пакетов
- chore - внесены изменения в настройку окружения проекта (линтеры, ci...). Для этого enum релиз произведен не будет
- test - написаны или изменены тесты проекта
SCOPE разделены по пакетам:
- ui
- icons
- fonts
- form
COMPONENT_NAME - имя измененного компонента (наименование директорий из ui/src).
feat(UIKIT-200,ui,Button): Добавлен props color
feat(ui,Button): Добавлен props color
feat(UIKIT-200,ui,Button): Добавлен props color
feat(UI-KIT-200, ui, Button): Добавлен props color