将多个原始文件编译成单个文件

时间:2018-10-21 10:37:19

标签: go protocol-buffers grpc

我是gRPCProtocol Buffers的新手,但我确实想为gRPC的开发设置方便的环境。我使用具有多仓库风格的微服务(基本上是SOA)架构(请不要问为什么-我不想讨论我的选择)。因此,我遇到了一些有关gRPC的项目结构的问题,这就是我现在所拥有的:

    具有Schema存储库的
  1. 子组Protos。只有.proto个文件,build script(用于编译所有原型文件并将结果推送到自己的存储库的简单shell脚本),.protolangs个文件(以便build script将了解语言必须进行编译)和CI configuration文件
  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,因此subgroups在某些git提供程序中可能不可用。

P.P.S:我将非常感谢所有改进此结构的建议

P.P.P.S:我从Namely阅读了this条文章,我很喜欢。所以我的结构可能与上一篇文章的结构相似

0 个答案:

没有答案