Процесс внесения изменений в репозиторий
Мы используем Conventional Commits (https://www.conventionalcommits.org/). Git commit message должен быть на английском языке.
Изменения в коммите должны затрагивать только один пакет.
Версионирование пакетов происходит автоматически, руками версию в package.json не поднимаем.
Пример коммита в пакет @sberdevices/plasma-ui:
git commit -m "feat(plasma-ui): Component X added"Пример 2:
git commit -m "fix(plasma-web): Fix component Y"Использование Conventional Commits обязательно:
fix- если вносится исправление в существующую функциональность. Приведет к выпуску патча пакета по semver;feat- если в кодовую базу добавляется новая функциональность. Приведет к выпуску минорной версии пакета;docs- если вносится изменение в контент документации, например в файлах с расширениями*.mdи*.mdx;chore- если вносимые изменения не относятся ни к кодовой базе пакетов, ни к документации;build- сборка пакетов и утилит;ci- для всех коммитов в папке .github
Для корректной работы, необходимо использовать node версии v12.x, а также npm версии 6.x. Или же воспользоваться командой nvm use в корне репозитория.
Для внесения правок в нескольких пакетах одновременно, необходимо выполнение команды npx lerna bootstrap или npx lerna bootstrap --scope [имя пакета 1] --scope [имя пакета 2]. Первый способ установит зависимости и слинкует все пакеты, а второй - только указанные.
- Создаем PR в ветку
master, дожидаемся успешного завершения работы ci. Если последний commit-message содержит[skip ci]- ci запущен не будет. - По завершению должны выпуститься canary-версии затронутых пакетов.
- Дожидаемся аппрува от всех ревьюеров ПРа.
- Мержим ПР.
После успешного завешения работы ci для каждого затронутого пакета будет:
- Поднята версия
- Собран
CHANGELOG.md(+ общий для всего монорепозитория) - Выпущена новая версия в npm-registry
- Получен положительный результат после проведения тестов
- Собрана документация и Storybook по адресу (https://plasma.sberdevices.ru/)
Для запуска тестов со скриншотами с помощью Cypress может понадобиться Docker.
На примере пакета @sberdevices/plasma-ui прогон тестов выглядит следующим образом:
- необходимо установить все пакеты в монорепозитории, для этого в корне монорепозитория выполните команды
npm ci, а потомnpx lerna bootstrap; - запустите прогон тестов, в корне монорепозитория выполните команду
npm run cy:ui:run-ct(для остальных пакетов команды будут соответствующими); - обновите скриншоты, если это необходимо, для этого выполните
npm run cy:ui:run-ct-update-diffs; - для отладки тестов, используйте команду
npm run cy:ui:open-ct