Repository navigation
[0.5.1] - 2026-09-17
Changed
-
将 CLI 与新服务模板使用的
protoc-gen-grpc-gateway、protoc-gen-openapiv2和 Docker include 源升级到v2.30.0,生成项目的 grpc-gateway runtime 依赖同步升级到v2.30.0与grpc-kit/pkg v0.5.1(含 OTelv1.45.0、gRPCv1.83.2):v2.30.0 要求的otelgrpc v0.70.0删除了pkg v0.5.0仍使用的StreamClientInterceptor,runtime 升级以pkg v0.5.1完成向 stats handler 的迁移为前提;CI 模板门禁的生成工具安装同步对齐v2.30.0。 -
grpc-kit/pkg v0.5.1:客户端 OpenTelemetry 接入从已被上游移除的otelgrpc.StreamClientInterceptor()迁移到grpc.WithStatsHandler(otelgrpc.NewClientHandler(...)),装配点统一收敛到LocalConfig.GetClientDialOption();依赖对齐grpc-gateway v2.30.0、otelgrpc/otelhttp v0.70.0与 OpenTelemetry Gov1.45.0,并升级google.golang.org/grpc v1.83.2修复 GO-2026-6443 server panic(govulncheck 符号级命中rpc.StartBackground调用链)。- 客户端遥测覆盖面扩大:普通客户端 unary RPC 与 grpc-gateway 到 gRPC Server 的内部调用新增 OTel client span/metric,streaming client 改由同一 stats handler 观测;unary/stream 共用
grpcTracingEnableFilter,HealthCheck与配置命中的方法在 client 侧同样被过滤;observability 关闭时不装配框架 OTel client handler - 调用方自定义 stats handler 与框架 handler 可共存(grpc v1.83.x 的
WithStatsHandler为追加语义),应避免再注册另一个otelgrpc.NewClientHandler()产生重复 span/metric GetClientStreamInterceptor()保留为通用流拦截器扩展入口且未废弃,但默认不再返回 OTel interceptor;只调用该方法、不使用GetClientDialOption()的外部项目在otelgrpc v0.70.0依赖图下无法编译,需改用GetClientDialOption()- OTel 依赖族对齐到 v1.45.0/v0.70.0 一代:
contrib/instrumentation/runtime v0.70.0、otlp exporters(5 个)v1.45.0、stdoutmetric v1.45.0、exporters/prometheus v0.67.0(连带prometheus/client_golang v1.24.1);go指令保持1.25.13 - govulncheck 符号级漏洞清零;未调用级漏洞随间接依赖升级修复
x/mod v0.40.0(GO-2026-6180/6179)、oras-go v2.6.2(GO-2026-5880)、go-ntlmssp v0.1.1(GO-2026-5543),x/crypto(GO-2026-6355/6354,修复版要求 go 1.26)、etcd/client/pkg(GO-2026-6107,修复需 v3.5.33)与上游暂无修复版的 GO-2026-5932 留待后续版本处理
- 客户端遥测覆盖面扩大:普通客户端 unary RPC 与 grpc-gateway 到 gRPC Server 的内部调用新增 OTel client span/metric,streaming client 改由同一 stats handler 观测;unary/stream 共用
-
project migrate的迁移目标基线保持pkg v0.5.0不变:v0.5.1被定义为v0.5.0的补丁兼容候选,CI 迁移门禁在v0.5.0基线之外增加v0.5.1候选验证,不改写历史迁移夹具与冻结兼容资产。 -
project migrate将存量项目的scripts/generate.sh纳入托管同步:服务模板自本版本起在该文件第二行携带# Code generated by "grpc-kit-cli/...". DO NOT EDIT.生成标记(首行保留 shebang)。存量副本没有该标记,迁移以"路径精确 + 全文 SHA-256 匹配冻结历史版本"的内容证据窄例外授权(与public/embed.go既有先例同规则),命中 v0.3.8 冻结摘要的副本被整文件改写为最新模板并补上标记;迁移产物与 0.5.1 起新脚手架的generate.sh从此携带 marker,后续版本可改用 marker 规则托管。本地修改过或内容不明的副本只输出generate_script_modified人工核对提示,不自动覆盖;文件缺失不创建。
Fixed
-
修复 d454cd6 工具链固化迁移遗漏:
template/service/scripts/generate.sh.tmpl第二个protoc调用仍单独引用旧安装位置/usr/local/include,在新工具链(binaries.sh安装到${GOPATH}/include)下第二个protoc调用找不到 well-known types。两个protoc调用现在统一按-I "${GOPATH}"/include/(优先)+-I /usr/local/include/(旧安装位置兜底)的顺序包含双路径,新旧工具链及存量外部 CI 工作流均无需改动;generate.sh模板同时在第二行新增生成标记。 -
修复服务模板在
protoc-gen-openapiv2 v2.30.0下生成的 4xx/5xx 公共ErrorResponse$ref无法解析的问题:生成脚本启用allow_merge,显式输入${GOPATH}/src/github.com/grpc-kit/api/known/status/v1/response.proto,并将合并后的microservice.swagger.json直接输出到public/openapi/;新增$ref完整性与关键公共 schema 回归门禁。 -
该问题的已知版本边界为 grpc-gateway
v2.27.5起;v2.27.4仅用于说明问题边界,不作为实施或应急回滚方案,模板生成工具升级并固定使用当前v2.30.0。 -
HTTP 路由继续独立维护在
microservice.gateway.yaml,运行时错误响应契约不变;v2.30.0 重新生成的 gateway 代码仅包含上游请求体清理顺序调整,并已由生成项目与 gochat 测试覆盖。官方protoc-gen-openapiv3当前不读取该外部配置,因此 OpenAPI v3 条件生成延后,不随本次修复发布。