test(ci): 第5刀c e2e-smoke CI job + 文档 L4 状态更新

- ci.yml 新增 e2e-smoke job(golang:1.25 + apt openssl/curl/python3);容器内无
  docker daemon → 脚本走内嵌 miniredis 兜底,无需 docker-in-docker——CI 走的
  正是本机已验证绿的同款路径
- docs/test-architecture.html:L4 从「完全缺·最大缺口」更新为已落地
  scripts/e2e-smoke.sh + server/test/e2e/
- 注:本机无 docker,e2e job 未在真 nas runner 实跑;逻辑等同本机已绿的
  miniredis 路径,首次 CI 运行需观察 apt 包/go module 下载

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-06-25 07:06:35 +08:00
parent fd82d82fe3
commit 6bd5c04cba
2 changed files with 19 additions and 1 deletions
+18
View File
@@ -125,3 +125,21 @@ jobs:
-v "$PWD/server:/app" -w /app \
golang:1.25 \
bash -c "go build ./... && go test ./..."
# ── Job 8: E2E Smoke (L4 进程级端到端,含 gRPC 全链路)───────────────────
# 真起打包的 server 二进制(sqlite 临时库 + 内嵌 miniredis,无需 docker-in-docker)
# → enroll(mTLS)→ ReportUsage 注入用量 → /v1/usage 断言统计真入库真读出。
# 详见 scripts/e2e-smoke.sh + server/test/e2e/。
e2e-smoke:
name: E2E Smoke — L4 进程级端到端
runs-on: nas
steps:
- name: Checkout
uses: actions/checkout@v4
- name: 进程级端到端冒烟 (server 二进制 + miniredis + gRPC 全链路)
run: |
docker run --rm \
-v "$PWD:/repo" -w /repo \
golang:1.25 \
bash -c "apt-get update -qq && apt-get install -y -qq openssl curl python3 >/dev/null 2>&1 && bash scripts/e2e-smoke.sh"
+1 -1
View File
@@ -272,7 +272,7 @@
<li><b>测什么</b>:起真控制面 + agent + sing-box + DB,发真流量,断言按租户/按设备 bytes 入库、限流触发、实时数值 &gt;0。</li>
<li><b>工具</b>docker-compose + 探针驱动脚本(见图 5)。</li>
<li><b>量化</b>:实测 vs 期望容差、限流是否触发、连上耗时、时延 ms。</li>
<li><b>现状</b><span class="tag t-bad">完全缺——最大缺口</span><code>local_test.sh</code> 只构建启动、<code>deploy.sh</code> 只部署,均无连通性自检</li>
<li><b>现状</b><span class="tag t-ok">已落地</span> <code>scripts/e2e-smoke.sh</code> + <code>server/test/e2e/</code>——进程级:真 server 二进制 + sqlite + 内嵌 miniredis + gRPC enroll/ReportUsage → <code>/v1/usage</code> 断言统计真入库真读出(CI job <code>e2e-smoke</code>)。真 sing-box 出网流量留后续</li>
<li><b>边界(建议)</b>:先做 <b>(a) 后端全链路</b>(可全自动、进一台 Linux runner);<b>(b) desktop 真连</b>(需常驻 Mac)与 <b>(c) iOS/Android 真机</b> 作本地按需后续。</li>
</ul>
</div>