Я работаю над серией проектов на Python, которая включает предоставление данных другим командам разработчиков (C ++ / Python) через различные сервисы с gRPC. В начале этой инициативы все файлы содержались внутри проекта сервера, включая файл прото. Кстати, я версии моего проекта с https://semver.org/.
Затем я приступил к реализации библиотеки клиент / API, поэтому я перемещаю файл Proto / сгенерированный код в проект клиента. Я также сделал сервер зависимым от клиентской библиотеки, используя пакет Python.
Сервер упаковывается в RPM из-за характера моей среды (без Docker), в то время как клиент генерирует два артефакта: 1) RPM, который может быть статически связан для проектов C ++, 2) пакет Pypi, который можно загрузить и загружается через репозиторий Pypi. сервер загружает зависимость Pypi через PIP.
Проблема, с которой я столкнулся, заключается в том, что SemVer в клиентской / API-библиотеке дает неверное значение, так как это связывает как версию интерфейса proto, так и реальную версию клиента. Это проблема, потому что если в клиентской библиотеке есть ошибка, которая вызывает увеличение номера версии, это даст преимущество, которое протокольный интерфейс изменил, когда это не соответствует действительности.
В этот момент я начинаю думать, что у меня должен быть третий проект, который содержит только файл прото и сгенерированный код. Тем не менее, это будет причиной и взрывом небольшого проекта (3х) в моем git-репо каждый раз, когда мне нужно будет внедрить новый сервис или, возможно, мне придется сгруппировать все свои прото в один проект.
Буду признателен за любые предложения или советы о том, как поделиться прототипами, сохраняя семантику за номером моей версии?