From 4d67a9065982b31d2c437c4f454bfee9a639ad1c Mon Sep 17 00:00:00 2001 From: wangjia <809946525@qq.com> Date: Mon, 6 Jul 2026 16:59:52 +0800 Subject: [PATCH] =?UTF-8?q?fix(ci):=20deploy-server=20=E9=9A=A7=E9=81=93?= =?UTF-8?q?=20healthcheck=20=E6=94=B9=E9=9D=9E=E8=87=B4=E5=91=BD(=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=20healthz=20=E6=89=8D=E6=98=AF=E6=9D=83=E5=A8=81?= =?UTF-8?q?=E9=97=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 隧道 /healthz 依赖 cloudflared/CF 边缘,与本次二进制是否健康是两回事; CF 边缘抖动或隧道尚未 provision 不应判整次部署失败。改为失败仅告警。 (最终 whole-branch review 的 Minor A 决议) Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u --- scripts/ci/deploy-server.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/ci/deploy-server.sh b/scripts/ci/deploy-server.sh index 90f7406..4d56a1b 100644 --- a/scripts/ci/deploy-server.sh +++ b/scripts/ci/deploy-server.sh @@ -54,8 +54,16 @@ systemctl start pangolin-server systemctl is-active pangolin-server REMOTE -# 8080 现仅 loopback(经 cloudflared 隧道对外):ssh 内本地校验 + 经隧道校验对外真实可达。 +# 8080 现仅 loopback(经 cloudflared 隧道对外)。 +# 本地 /healthz 是本次二进制部署成败的**权威闸**:新 server 起来即通过。 $SSH "root@${DEPLOY_HOST}" 'curl -fsS -m 10 --retry 5 --retry-connrefused http://127.0.0.1:8080/healthz >/dev/null && echo "healthz(local) OK"' -curl -fsS -m 10 --retry 5 "https://api.yanmeiai.com/healthz" >/dev/null && echo "healthz(tunnel) OK" +# 隧道 /healthz 是端到端冒烟(最贴近真实客户端路径),但**非致命**:它依赖 cloudflared/CF 边缘, +# 与「本次二进制是否健康」是两回事——CF 边缘抖动或隧道尚未 provision 不应判整次部署失败 +# (本地闸已证明 server 健康)。失败只告警,不 exit。 +if curl -fsS -m 10 --retry 3 "https://api.yanmeiai.com/healthz" >/dev/null; then + echo "healthz(tunnel) OK" +else + echo "==> deploy-server: 警告 —— 隧道 https://api.yanmeiai.com/healthz 不通(CF 边缘抖动/隧道未就绪?);本地 healthz 已通过,不阻断部署。" >&2 +fi echo "==> deploy-server: done"