Процесс внесения изменений в проект SDDS iOS,
На каждом PR происходит прогон тестов и статических анализаторов. Влить PR не удастся без успешно пройденых тестов и валидных результатов анализаторов. Поэтому перед коммитом рекомендуется запустить этот процесс локально, чтобы поберечь время и избежать повторного запуска пайплайна.
Если в процессе разработки выяснилось, что необходимо сделать какое-то изменение в будущем или встретился какой-либо баг,
то требуется создать новый Issue, добавить в нём описание и требования,
а также отметить данный участок кода комментарием с ключевым словом TODO
и ссылкой на issue:
// TODO: https://github.com/salute-developers/plasma/issues/438
Мы используем Conventional Commits (https://www.conventionalcommits.org/). Git commit message должен быть на английском языке. Для удобства генерации release notes каждый коммит должен относиться к одному target и указывать его в скобках как скоуп. Target - это то, что мы собираем и выпускаем в релиз (:sdds-core:sandbox, :sdds-core:uikit, :sdds-core:plugin_theme_builder и т.д.). Допустимые скоупы:
- sdds-icore/uikit
- sdds-icore/uikit-swift
- sdds-icore/theme-builder
- sdds-icore/sandbox
- sdds-ios/build-system (не target, но нужно указывать, если есть изменения в build-system)
- sdds-ilibs/${libName} - где libName - это библиотеки для вертикалей
Примеры коммитов:
git commit -m "feat(sdds-acore/uikit): Component Button was added"
git commit -m "fix(sdds-acore/sandbox): Buttons screen was fixed"
Использование Conventional Commits обязательно:
fix
- если вносится исправление в существующую функциональность;feat
- если в кодовую базу добавляется новая функциональность;docs
- если вносится изменение в контент документации;chore
- если вносимые изменения не относятся ни к кодовой базе пакетов, ни к документации;build
- сборка пакетов и утилит;test
- для добавления / обновления тестов и снапшотов;ci
- для всех коммитов в папке .github
- Создаем PR в ветку
develop
, дожидаемся успешного завершения работы CI. - Дописываем в главный коммент описание того, что было сделано и для чего.
- Дожидаемся аппрува от всех ревьюеров ПРа.
- Добавляем PR в очередь на merge.
- Разработка ведется в
feature/
ветках, которые отводятся из веткиdevelop
- Каждые 2 недели
feature-freeze
, когда отводится веткаrelease/
, а версияdevelop
поднимается - Ветка
release/
стабилизируется (вливаются только исправления дефектов) 2 недели - По окончанию стабилизации
release/
ветки происходитcode-freeze
и публикация релиза - Во время
code-freeze
, пока веткаrelease/
вливается вdevelop
иmain
, запрещено вливать любой код - При необходимости из
main
ветки может создаваться веткаhotfix
, которая потом тоже вливается вmain
иdevelop