Skip to content

Правила

Стиль кода

Вся кодовая база должна иметь единый стиль кода, который определяется с помощью соответствующих утилит в репозитории.

Тестирование

На кодовую базу должны быть написаны тесты согласно документации.

Перед релизом тесты обязательно должны успешно проходиться.

Тесты должны покрывать:

  • Основной функционал
  • Части взаимодействия с пользователями

Версии приложений

Все релизы приложений версионируются согласно SemVer.

vX.Y.Z
 │ │ │
 │ │ └─> Patch version. Backward compatible bug fixes.
 │ └─> Minor version. Add functionality in a backward compatible manner
 └─> Major version. Incompatible API changes.

Про версии

Версии делают процесс обновления проще и удобнее.

Совместимость приложений

Приложения пришутся так, чтобы минимизировать проблемы обратной совместимости на несколько версий вперед.

Основная проблема с обратной совместимостью - база данных. Это значит:

  • Все поля базы данных проектируются с учетом возможных изменений.

  • Любое удаление, переименование, обновление полей базы данных производится так, чтобы приложения старой и новой версиях могли работать без ошибок.

  • Если сделать обновление без проблем со старой версией невозможно - продукт переводится на техническое обслуживание.

Плавающее обновление

Чтобы обновлять приложения без его остановки, необходимо проектировать изменения так, чтобы старое и новое приложения могли работать без ошибок.

Это позволят сделать обновление постепенным.

Контроль версий

Единой системой контроля версий является git.

Ветки

Вся кодовая база приложений разделена на две основные ветки: main и develop.

Код в каждой из них - протестирован, может собираться и запускаться. Отличие между ними в том, что main ветка содержит выпущеный в продакшен код, а develop - тестовую сборку новых функций, которые готовятся к релизу.

Для добавление нового кода используются любые другие ветки, например: feat-add-login-api, hotfix-login-process, fix-523 и другие.

Новые ветки сливают с main (в качестве быстрого исправления бага) или в develop только с помощью Pull Request на GitHub.

Коммиты

Все коммиты пишутся согласно Сonventional Сommits.

Заголовок и его тип является обязательным, а область применения, номер issue, тело коммита и футер коммита - необязательными.

<type>(<scope>): <summary> #XXX
  │       │         │        │
  │       │         │        └─> Issue number.
  │       │         │
  │       │         └─> Summary in present tense.
  │       │             Not capitalized.
  │       │             No period at the end.
  │       │
  │       └─> Commit scope: client|server|api

  └─> Commit type: release|build|ci|feat|fix|ref|perf|style|test

[optional body]

[optional footer(s)]

Список поддерживаемых областей применения:

  • client: изменение касающиеся клиенской части
  • server: изменение касающиеся серверной части

Список поддерживаемых типов:

  • release: изменение, которое обновляет версию кода для релиза
  • build: изменение, которое влияет на систему сборки или внешние зависимости
  • ci: изменение конфигурационных файлах или скриптах CI
  • feat: добавление новой функции
  • fix: изменение, которое исправляет ошибку
  • ref: изменение, которое не исправляет ошибку и не добавляет функцию
  • test: добавление недостающих тестов или исправление существующих тестов
  • perf: изменение, которое улучшает производительность
  • style: изменение, которые стилистически меняет код
Примеры
release: v1.0.0 #234
release: v1.0.0-rc #212

build: update deps #356
build: update Nuxt 3.12.2 to Nuxt 3.12.4 #357

ci: add deploy script #359

feat(client): add auth store of user data #756
feat(server): add middleware for loading user data into context #129
feat(server): add route to get active sessions #174

fix(client): lots loader on page load #471
fix(server): url path checker for s3 proxy #431
fix(server): image type validator for WebM ext #636

ref(client): update ui of user personal account page #550
ref(server): improve user validators #79

test: add e2e test for user authentication process  #1124

perf: improve image generation process #812

style: unify coding style

Пулл реквесты

Пулл реквест пишется в свободном стиле.

Обязательно долежн содержать ссылку на issue, с которым он связан.

Примеры
Add authorization functionality
feat: add authrization functionality
feat(#123): add authrization functionality