From ebb1040559ea505192aa9c8ab8fc5771c6f4905c Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Mon, 14 Sep 2026 20:24:09 +0800 Subject: [PATCH] =?UTF-8?q?fix(install):=20go=20vet=20/=20go=20test=20?= =?UTF-8?q?=E6=8F=90=E5=88=B0=20--check=20=E7=9B=B8=E4=BD=8D=20=E2=80=94?= =?UTF-8?q?=E2=80=94=20=E5=8E=9F=E6=8E=AA=E8=BE=9E"=E6=89=80=E6=9C=89?= =?UTF-8?q?=E4=BC=9A=E7=BA=A2=E7=9A=84=E9=97=A8=E7=A6=81=E9=83=BD=E8=B7=91?= =?UTF-8?q?=E8=BF=87=E4=BA=86"=E4=B8=8E=E8=87=AA=E5=B7=B1=E4=B8=8B?= =?UTF-8?q?=E4=B8=80=E6=AE=B5=E7=9F=9B=E7=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pi 读出来的(实测确认):干跑末尾写"**所有会红的门禁都跑过了**(前端 typecheck/test/build、 共用模块同源、各插件测试、插件构建)",而紧接着那段就把 `go vet + go test` 列进 "下面这些步骤干跑**没有执行**" —— **那两条正是会红的门禁**。 两段话自相矛盾,而读者只会读那句加粗的结论。 采用 pi 倾向的方案①(把它提进 `--check` 相位)而不是只改措辞,理由: 这两道门**最容易在别人的机器上红**(Go 版本、模块缓存、平台), 而"第一个拿到 root 的人第一次跑门禁"正是 `--check` 要解决的场景。 它们不写系统目录(只写 go 缓存),放进这个相位没有副作用。 顺带把措辞改准:结论句改成"**除了"构建 Gateway 二进制"之外**,所有会红的门禁都跑过了"。 实测(本机,`HOME=/root GOPATH=/root/go`):`go vet ./...` 与 `go test ./...` 都是 **真退出码 0**(gateway 各包全绿)⇒ 新增的这一相位不会造成"一跑就红"。 ⚠️ 我的沙箱里 `$HOME` 为空 ⇒ 直接跑 go 会报 `go: module cache not found: neither GOMODCACHE nor GOPATH is set` —— **这是环境问题不是代码问题**(`/root/go/pkg/mod` 存在,正式走 root 不受影响)。 --- deploy/install.sh | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/deploy/install.sh b/deploy/install.sh index 2fa92df..88027dd 100755 --- a/deploy/install.sh +++ b/deploy/install.sh @@ -176,15 +176,30 @@ if [[ -d "$PI_SDK" ]]; then fi if [[ $CHECK_ONLY -eq 1 ]]; then + # ★ `go vet`/`go test` 提到这个相位来跑(pi 评审 2026-09-14)。 + # + # 原先的措辞是"**所有会红的门禁都跑过了**(前端 typecheck/test/build、共用模块同源、 + # 各插件测试、插件构建)",而紧接着的一段就把 `go vet + go test` 列进"干跑没有执行" + # —— **那两条正是会红的门禁**,两段话自相矛盾,而读者只会读那句加粗的结论。 + # 更实际的理由:这两道门恰恰最容易在**别人的机器上**红(Go 版本、依赖、平台), + # 而"第一个拿到 root 的人第一次跑门禁"正是 `--check` 要解决的场景。 + # 它们不写系统目录(只写 go 缓存),所以放进这个相位没有副作用。 + echo "==> 校验 Gateway 源码(go vet + go test)" + if ! ( cd "$REPO/server" && go vet ./... && go test ./... ); then + echo " [FAIL] go vet / go test 不过 —— 先修好再安装" >&2 + exit 1 + fi + echo " [ OK ] go vet + go test 通过" cat <<'EOF' -==> 干跑结束:**所有会红的门禁都跑过了**(前端 typecheck/test/build、共用模块同源、 - 各插件测试、插件构建)。干跑的成功只能说明"门是好的",不能说明"装得上"。 +==> 干跑结束:**除了"构建 Gateway 二进制"之外,所有会红的门禁都跑过了** + (前端 typecheck/test/build、共用模块同源、各插件测试、插件构建、 + **go vet + go test**)。 + 干跑的成功只能说明"门是好的",不能说明"装得上"。 下面这些步骤干跑**没有执行**(它们要写工作区外的目录,正式安装需要 root 或先放行): · 前端产物 → server/internal/static/static/ - · 构建 Gateway(go vet + go test + go build -trimpath -o server/agentmail-gateway) - · install -m 0755 server/agentmail-gateway → /opt/agentmail/agentmail-gateway + · 构建 Gateway(go build -trimpath -o server/agentmail-gateway;vet/test 上面已跑) · 生成 /etc/agentmail/*.env(已存在的不覆盖)+ chmod 0600 · 装 systemd unit → /etc/systemd/system/,daemon-reload + enable --now · 把邮件工具扩展注册进 ~/.pi/agent/settings.json