记录 Pingora dev 正式发布验收

补充 dev API release 正式路径部署证据

记录 current release 自审、runtime-only 门禁和 shadow WSS 验收结果

明确公网入口仍由 Nginx 承接且临时发布包已清理
This commit is contained in:
2026-06-17 22:15:15 +08:00
parent 68bf3b698a
commit 206ea48878
@@ -359,6 +359,24 @@ dev 根盘空间在安装后曾接近满盘;2026-06-17 进入 canary 前已清
- `node /tmp/check-pingora-canary-access-log-parity.mjs --realpath --nginx-log-file /var/log/nginx/genarrative-pingora-realpath-canary.access.log --pingora-log-file /var/log/genarrative/pingora-gateway.access.log ... --json` 对账 `6/6 matched``missingCount=0``mismatchCount=0`;除 healthz 探针映射到 `__genarrative_pingora/healthz` 外,API config、SpacetimeDB identity、WSS subscribe、静态代表路径和 generated 拒绝路径的 Nginx path 与 Pingora path 完全一致。
- 恢复后 `grep genarrative-pingora-realpath-canary /etc/nginx/conf.d/genarrative.conf` 无匹配,`ss -ltnp | grep :18083` 无监听,证明临时 realpath canary server 已移除;`genarrative-pingora-gateway.service` 仍为 `active``NRestarts=0`
## dev API release 正式路径验收记录
2026-06-17 已在 dev 机用正式 API release 路径部署包含 Pingora 的发布包 `dev-pingora-api-20260617140915`。发布包由分支 `codex/pingoranginx``68bf3b698a885ee2cd248dcba81e4b57460000f8` 构建,包含 `api-server``api-server.sha256``pingora-gateway``pingora-gateway.sha256``release-manifest.json` 和随包部署 / 自审脚本。部署命令从上传到 `/tmp/dev-pingora-api-20260617140915` 的发布包内执行 `scripts/deploy/production-api-deploy.sh`,目标 release root 为 `/opt/genarrative/releases`current link 为 `/opt/genarrative/current`
本阶段验收只证明 API release 的正式打包、复制、current 切换、服务重启和 shadow Pingora 随 current 重启可用,不切 `80/443` 到 Pingora。验收结果:
- `production-api-deploy.sh` 进入维护模式后完成 `api-server.sha256``pingora-gateway.sha256` 校验,复制二进制、checksum、manifest 和 Pingora 直连依赖到新 release,再把 `/opt/genarrative/current` 切到 `/opt/genarrative/releases/dev-pingora-api-20260617140915`,最后退出维护模式。
- 部署时 `genarrative-pingora-gateway.service` 已为 `active`,脚本在 current 切换后执行 `systemctl try-restart genarrative-pingora-gateway.service` 并复核 active`genarrative-api.service`、外部生成 worker 和 worker controller 也完成重启和 active 等待。
- `/opt/genarrative/current/release-manifest.api-server.json` 记录 `api-server``pingora-gateway` 两个 artifact`cd /opt/genarrative/current && sha256sum -c api-server.sha256 && sha256sum -c pingora-gateway.sha256` 均为 `OK`
- `/opt/genarrative/current/scripts/ops/pingora-current-release-audit.mjs --release-root /opt/genarrative/current --require-pingora-gateway --systemd-show` 返回 `summary.status=OK`,确认 current release 自包含、checksum 匹配、`pingora-gateway` 可执行,且 systemd `ExecStart` 指向 `/opt/genarrative/current/pingora-gateway`
- `/opt/genarrative/current/scripts/check-pingora-release-readiness.mjs --release-runtime-only` 通过,证明目标机可以只依赖 current release 运行 runtime-only 发布自审,不需要源码 checkout 或 Jenkins 工作区。
- 部署后 `nginx``genarrative-api``genarrative-pingora-gateway``spacetimedb``genarrative-external-generation-controller.service``genarrative-external-generation-worker@1.service` 均为 `active`API / Pingora / worker 相关服务 `NRestarts=0`
- `GET http://127.0.0.1:8082/readyz` 返回 `{"ok":true,"ready":true}``GET http://127.0.0.1:8082/api/creation-entry/config` 返回 `200`
- `GET http://127.0.0.1:18081/api/creation-entry/config` 经 Pingora shadow 返回 `200``GET http://127.0.0.1:18081/v1/identity` 返回真实 SpacetimeDB 语义 `405`
- 使用完整 WebSocket 握手头 `Sec-WebSocket-Protocol: v2.bsatn.spacetimedb` 访问 `http://127.0.0.1:18081/v1/database/genarrative-prod/subscribe?compression=Brotli`HTTP code 为 `101`;curl 的超时退出只发生在 WebSocket 升级后连接保持阶段。少传该子协议时 SpacetimeDB 会返回 `400 no valid protocol selected`,不能作为网关失败证据。
- Nginx 仍监听公网 `80/443`Pingora 仍只监听 `127.0.0.1:18081``127.0.0.1:18083` 无监听。`https://dev.genarrative.world/``https://dev.genarrative.world/api/creation-entry/config` 通过本机 `--resolve` 验收均为 `200`,证明正常公网入口仍由 Nginx 承接。
- 上传到 `/tmp/dev-pingora-api-20260617140915` 的临时发布包已删除;新 release 目录约 `57M`,清理后 dev 根盘约 `92%` 使用率。后续正式证据归档前仍需复核磁盘余量。
## 环境变量
| 变量 | 默认值 | 说明 |