Hogyan vannak beállítva a protobuf szerződései: hol találhatók, hogyan szerkeszti őket, hogyan fordítja le, hol tárolódik a generált kód?
sobes.tech MI
Válasz az MI-től
В нашей практике protobuf-контракты организованы следующим образом:
-
Где лежат: Все
.protoфайлы хранятся в отдельном репозитории или в выделенной директории внутри монорепозитория, чтобы обеспечить единый источник правды для всех сервисов. -
Как правим: Изменения в
.protoфайлах проходят через код-ревью и согласование, так как они влияют на множество сервисов. Используем версионирование контрактов, чтобы избежать несовместимостей. -
Как компилируем: Для генерации кода используем официальные инструменты
protocс плагинами для Go (protoc-gen-go). Компиляция интегрирована в CI/CD пайплайн, чтобы автоматически обновлять сгенерированный код при изменениях в.proto. -
Где хранится сгенерированный код: Сгенерированный Go-код хранится рядом с исходными
.protoфайлами или в отдельных директориях внутри сервисов, которые их используют. В некоторых случаях сгенерированный код публикуется как отдельный артефакт или библиотека, чтобы другие сервисы могли подключать его как зависимость.
Пример команды генерации:
protoc --go_out=./gen --go_opt=paths=source_relative \
--go-grpc_out=./gen --go-grpc_opt=paths=source_relative \
path/to/file.proto
Такой подход обеспечивает единообразие, удобство поддержки и минимизирует ошибки при работе с protobuf-контрактами.