歷史緣由我司的後端團隊在同時使用 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