feat: add sdk isolation release gate
This commit is contained in:
38
docs/sdk/release.md
Normal file
38
docs/sdk/release.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# SDK 独立发布门禁
|
||||
|
||||
SDK 位于独立 Go module `git.yuntuo.hk/k2safe/orbit/sdk/go`。它只能依赖 Go 标准库和显式锁定的 WebSocket 客户端,不引用 Orbit 服务端模型、存储实现、迁移代码或 MySQL 驱动。业务项目通过 SDK 接入,不需要把服务端仓库加入自己的 `go.mod`。
|
||||
|
||||
## 发布前检查
|
||||
|
||||
在仓库根目录执行:
|
||||
|
||||
``@@BT@sh
|
||||
GO=/path/to/go \
|
||||
sh scripts/test-sdk-isolation.sh
|
||||
``@@BT@
|
||||
|
||||
门禁会强制 `GOWORK=off`,检查 `go.mod` 和完整依赖图,然后运行:
|
||||
|
||||
- `go test -race ./...`
|
||||
- `go vet ./...`
|
||||
- `go build ./...`
|
||||
|
||||
成功输出示例:
|
||||
|
||||
``@@BT@json
|
||||
{"sdk_module":"git.yuntuo.hk/k2safe/orbit/sdk/go","independent":true,"package_count":27,"forbidden_dependencies":0}
|
||||
``@@BT@
|
||||
|
||||
`package_count` 随示例增加而变化,不能作为兼容性版本号。门禁只证明源码在当前 Go 工具链下保持独立和可构建,不代表已经发布到远端模块代理,也不替代旧 SDK/新服务端和新 SDK/旧服务端的协议兼容矩阵。
|
||||
|
||||
## 接入方式
|
||||
|
||||
SDK 尚未发布正式标签时,开发项目可以使用本地 replace;发布候选必须使用独立 module 的版本标签和干净 checkout 验证。接入方应固定 SDK 版本,升级前先执行自己的接口和业务幂等回归:
|
||||
|
||||
``@@BT@sh
|
||||
go mod edit -require=git.yuntuo.hk/k2safe/orbit/sdk/go@v0.0.0
|
||||
go mod edit -replace=git.yuntuo.hk/k2safe/orbit/sdk/go=/absolute/path/to/orbit/sdk/go
|
||||
go mod tidy
|
||||
``@@BT@
|
||||
|
||||
替换路径只用于本地开发,不能提交到业务项目的发布分支。SDK 不负责 TLS 终止、凭据托管、对象存储或外部副作用核查;这些边界仍由平台接口手册和接入方运行手册定义。
|
||||
Reference in New Issue
Block a user