Этот пакет содержит proto-файлы для gRPC клиентов и сервера, а также скрипты для их генерации в следующих языках: Python, Dart и Go. Этот пакет используется всеми клиентами системы Dictum для взаимодействия с основным gRPC бекендом tortuga_backend.
Makefile предоставляет несколько удобных команд для управления проектом, такими как сборка, обновление версии и генерация кода.
Обновление версии:
Для обновления версии в файлах pubspec.yaml (Dart) и setup.py (Python) необходимо выполнить команду с указанием новой версии.
make update_version X.Y.ZАргумент X.Y.Z можно заменить на любую возможную версию, см. 2. Разработка proto, go и dart.
Например:
make update_version 1.0.0Makefile автоматически определяет операционную систему (Linux, macOS, Windows) и выполняет соответствующие команды для генерации gRPC-кода.
[!WARNING] Примечание Если после генерации на LINUX нет прав на редактирования сгенерированных файлов:
sudo chmod -R 777 $(pwd)/go
Чтобы компилировать .proto файлы для Go, запустите Docker из корня:
docker build -t dictum_proto_generator -f go/Dockerfile .После запустите контейнер:
docker run --rm -v $(pwd)/:/go dictum_proto_generatorЧтобы компилировать .proto файлы для Dart, запустите Docker из корня:
docker build -t dictum_proto_generator -f dart/Dockerfile .После запустите контейнер:
docker run --rm -v $(pwd)/dart:/dart dictum_proto_generatorЧтобы компилировать .proto файлы для Python, запустите Docker из корня:
docker build -t dictum_proto_generator -f python/Dockerfile .После запустите контейнер:
docker run --rm -v $(pwd)/python/dictum_proto:/python/dictum_proto dictum_proto_generatorВерсия должна быть в формате MAJOR.MINOR.PATCH[-PRERELEASE.VERSION], где:
MAJOR: основной номер версии.MINOR: минорный номер версии.PATCH: номер патча.PRERELEASE: дополнительная информация для обозначения предварительных выпусков (например,alphaилиbeta).VERSION: номер предварительной версии, который увеличивается с каждой итерацией.
Примеры: v1.2.3-alpha.1, v1.3.0-beta.2
-
Инкремент PATCH:
Инкрементируйте
PATCHдля обратно совместимых исправлений ошибок и небольших изменений. Пример:v1.2.3 -> v1.2.4 -
Инкремент MINOR:
Инкрементируйте
MINORдля добавления новой функциональности в программное обеспечение, которая является обратно совместимой. Пример:v1.2.3 -> v1.3.0(обнулитеPATCHпри инкрементеMINOR) -
Инкремент MAJOR:
Инкрементируйте
MAJORдля внесения значительных изменений, которые делают ваше ПО несовместимым с предыдущими версиями. Пример:v1.2.3 -> v2.0.0(обнулитеMINORиPATCHпри инкрементеMAJOR) -
Использование PRERELEASE:
alpha: используйте для первых предварительных версий.beta: используйте для версий, приближающихся к стабильному релизу, но всё ещё находящихся в стадии тестирования.
Пример:
v1.2.0-alpha.1 -> v1.2.0-alpha.2 -> v1.2.0-beta.1 -> v1.2.0
При внесении изменений в .proto файлы и перекомпилировании их для Go или Dart, рекомендуется использовать git tags для версионирования:
-
Сделайте коммит с изменениями.
-
Создайте новый тег:
git tag v[new_version]
-
Отправьте тег в удаленный репозиторий:
Для отправки в main:
git push origin v[new_version]Для отправки в другие ветки:
git push origin v[new_version] stageЧтобы использовать ваш приватный модуль Go в другом проекте:
-
В зависимом проекте выполните:
go get github.com/AlexKenbo/dictum_proto@your_tag_version
-
Теперь вы можете импортировать пакет Go в вашем коде.
Для подключения вашего Dart пакета из приватного репозитория:
-
В
pubspec.yamlвашего проекта добавьте:dependencies: dictum_proto: git: url: git@github.com:AlexKenbo/dictum_proto.git path: dart ref: vYOUR.TAG.VERSION
-
Выполните команду для получения зависимостей:
dart pub get
Конечно, дополним инструкцию:
-
Перейдите в папку
go:cd go -
Инициализируйте новый Go модуль:
go mod init github.com/AlexKenbo/dictum_proto/go
-
При добавлении новых зависимостей или при изменении имеющихся файлов, обновите модуль:
go mod tidy
-
В папке
dart, создайте или отредактируйте файлpubspec.yaml:name: dictum_proto version: 1.0.0 description: Буффер между протоколами бекенда и фронтенда Dictum. environment: sdk: '>=2.12.0 <3.0.0' dependencies: protobuf: ^2.0.0 grpc:
-
Чтобы установить все зависимости, перейдите в директорию
dartи выполните:dart pub get