Процесс внесения изменений в проект 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
