Skip to content

ci: redesign validation and integration pipelines - #8

Merged
xiaoyumuxi merged 1 commit into
mainfrom
ci/redesign-pipeline
Sep 14, 2026
Merged

xiaoyumuxi merged 1 commit into
mainfrom
ci/redesign-pipeline

Conversation

@xiaoyumuxi

Copy link
Copy Markdown
Owner

目标

重新设计项目 CI,让 PR 上的检查稳定、快速、可解释,并把外部依赖、跨语言和性能测试从主门禁中隔离。

主 CI (ci.yml)

PR / main push 只保留必须稳定通过的检查:

  • Build:构建全部 Maven 模块,不运行测试
  • Unit Tests & Coverage:运行 rpc-core / rpc-transport-netty 单测,并上传 Surefire + JaCoCo 报告
  • RPC Integration:使用 Local Registry + Netty 跑真实端到端 RPC
  • CI Gate:聚合前三个 required checks,便于后续配置 branch protection

所有主 CI 测试显式使用 rpc.registry=local,不依赖 Docker / Nacos。

同时升级到当前 Node 24 兼容的官方 Actions:

  • actions/checkout@v7
  • actions/setup-java@v6
  • actions/upload-artifact@v7

移除原先 mvn checkstyle:check || true 这种不会真正阻塞合并的伪质量门禁。

Extended Integration (integration.yml)

仅手动或每周运行,不阻塞普通 PR:

  • Protocol Matrix:netty / http / http2 / grpc 四协议真实 E2E
  • Nacos Integration:使用 Nacos 2.5.4 容器验证真实服务注册与发现
  • Cross-language gRPC:启动 Java gRPC Provider,分别使用官方 Python gRPC 客户端和 Go gRPC 客户端调用

Benchmark (benchmark.yml)

仅手动或每周运行:

  • 构建 rpc-benchmark
  • 运行稳定、无外部依赖的 SerializationBenchmark
  • 输出 JMH JSON 并上传 artifact
  • 不把性能数字作为 PR 硬门槛,避免 Hosted Runner 抖动造成误报

测试稳定性改进

FullIntegrationTest:

  • 不再写死 9090
  • 动态选择测试端口
  • 不再 Thread.sleep(1500) 猜服务是否启动
  • 主动探测 Server readiness
  • 支持通过 -Drpc.registry / -Drpc.protocol 复用同一套 E2E 测试
  • 修复第二次调用错误断言 result1 的问题

Python / Go gRPC 客户端也改为在 RPC 错误、非 Success 响应、反序列化失败或返回值异常时返回非 0,确保 CI 能真正识别跨语言兼容性失败。

设计原则

PR 门禁只回答三个问题:

  1. 代码是否能构建?
  2. 核心组件单测是否通过?
  3. 一次真实 RPC 主链路是否可用?

外部注册中心、多协议兼容、跨语言和 benchmark 作为扩展验证独立运行,避免第三方环境问题让日常开发长期红灯。

@xiaoyumuxi
xiaoyumuxi merged commit 2eee9a6 into main Sep 14, 2026
4 checks passed
@xiaoyumuxi
xiaoyumuxi deleted the ci/redesign-pipeline branch September 14, 2026 07:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant