Скомпилируйте несколько прототипов в один файл - PullRequest
0 голосов
/ 21 октября 2018

Я новичок в мире gRPC и Protocol Buffers, но я действительно хочу настроить удобную среду для разработки с gRPC.Я использую архитектуру микросервисов (в основном SOA) со стилем мульти-репо (пожалуйста, не спрашивайте почему - я не хочу обсуждать свой выбор).Итак, у меня возникли некоторые вопросы о структуре проекта с gRPC, вот что у меня сейчас:

  1. Подгруппа Schema с репозиторием Protos.Есть только файлы .proto, build script (простой сценарий оболочки, который компилирует все файлы прото и передает результат в свои собственные репозитории), файл .protolangs (чтобы build script понимал, какие языки должны быть скомпилированы) и CI configuration file
  2. Собственные репозитории для каждого сервиса с скомпилированными .proto файлами (с внутренними папками для каждого языка).ИМХО: лучше иметь только несколько submodules вместо одного, но со всеми скомпилированными .proto файлами в каждом сервисе
  3. Сервисы с git submodules репозиториями со скомпилированными .proto файлами (golang, nodejs и т. Д.).) общаться друг с другом

Так в чем же мой вопрос?

В Protos хранилище несколько папок (для каждой службы с файлами .proto) такого типа:

$ tree
.
├── README.md
├── .gitignore
├── .gitlab-ci.yml
├── build.sh
├── api
│   ├── .protolangs
│   ├── api.proto
│   └── common.proto
└── user
    ├── .protolangs
    ├── common.proto
    ├── user.info.proto
    └── user.proto

Я хочу разделить .proto файлы, чтобы у меня было common.proto и .proto для каждой внутренней логики моего сервиса (например: информация, запись и т. д.).).С nodejs все хорошо - просто скомпилируйте всю папку.Но когда я делаю компиляцию для golang - он не может импортировать по относительному пути.Теперь я думаю написать простой инструмент, который соберет все .proto файлы, сгенерирует только один, а затем скомпилирует его.Но есть ли лучший способ справиться с этим?

PS: я использую gitlab , поэтому подгруппы могут быть недоступны в некоторых git-провайдерах.

PPS: я буду очень признателен за все рекомендации по улучшению этой структуры

PPPS: я прочитал эту статью из Namely, и мне понравилось.Так что моя структура может быть похожа на структуру из статьи выше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...