diff --git a/scripts/criteria/config-startup.sh b/scripts/criteria/config-startup.sh index a429ddd..a9ea422 100755 --- a/scripts/criteria/config-startup.sh +++ b/scripts/criteria/config-startup.sh @@ -37,6 +37,21 @@ assert_died_before_listen() { fi } +# ---- 0. 前端嵌入产物 ---- +# internal/httpapi 用 //go:embed all:dist 嵌入前端,而 dist 是构建期产物、 +# 被 .gitignore 排除。干净 clone 上不先构建前端,go build 会直接报 +# "pattern all:dist: no matching files found"——那是基线既有状态,与本判据 +# 无关,所以这里先补齐,让判据在任何 checkout 上都能复现。 +if [ ! -f internal/httpapi/dist/index.html ]; then + command -v npm >/dev/null 2>&1 \ + || fail "缺少前端构建产物 internal/httpapi/dist 且没有 npm;请在有 node 的环境跑,或先手工 cd web && npm ci && npm run build && cp -r dist ../internal/httpapi/dist" + ( cd web \ + && { [ -d node_modules ] || npm ci --no-audit --no-fund >/dev/null 2>&1; } \ + && npm run build >/dev/null 2>&1 ) || fail "前端构建失败(cd web && npm run build)" + rm -rf internal/httpapi/dist && mkdir -p internal/httpapi/dist + cp -r web/dist/. internal/httpapi/dist/ || fail "拷贝前端产物失败" +fi + # ---- 1. 构建与全量测试 ---- go build ./... || fail "go build ./..." go test ./... > "$WORK/test.log" 2>&1 || { cat "$WORK/test.log"; fail "go test ./..."; }