历史缘由我司的后端团队在同时使用 3 种语言:Python、Go、Java。为了实现团队的水平拆分和业务逻辑的收敛,咱们会在不一样的业务线间使用 unary 模式的 gRPC 来进行同步通讯。 例如报名业务中会存在一个查询某个用户全部报名记录的接口,这个接口是 Python 语言开发的,在不一样的业务场景上 Go、Java 都会调用这个接口。这就致使该接口的 protobuf 文件由 Python 开发者维护,同时 Go 和 Java 的 client 须要同步变动以使用最新版本的接口。一旦接口须要升级,协调 server 端有发布和升级,proto 文件仓库的变动,client 端变动发布就变成了一个很麻烦的事情。咱们须要一个方便透明的规范来协调各端。git
A. 在不一样的 server / client 代码项目中复制 proto 文件并各自生成
B. 使用 git submodule 使用同一个仓库的 proto 文件
C. 使用 semantic version 并使用第三方的方式管理 proto 文件segmentfault
`
import (
gitlab.company.com/proto/abc v1.1.3243
)
`后端
`
pip install https://gitlab.mycompany.com/...
`并发
`
git config --global url."git@git.mycompany.com".instead of "http://git.mycompany.com"
git config --global url."git@git.mycompany.com".instead of "https://git.mycompany.com"
`maven
设置 Go 环境 工具
` GOPROXY="https://goproxy.io,direct" GOPRIVATE="git.mycompany.com" `
---------------------------------EOFgitlab
相关文章:
使用 gitlab 实现 proto 文件的 semantic version 管理(2) - 配置 Gitlab CI 实现自动打包ui
使用 gitlab 实现 proto 文件的 semantic version 管理(3) - Go App 的 Dockerfile 配置url