#!/usr/bin/env bash # 本地一键验收:起 Docker MySQL → 空库则建表 → 建本地管理员 → 启动 API 与 worker → 跑全部真实链路脚本 → 停进程。 # 用法:VOKO_TEST_EMAIL=you@gmail.com bash tools/scripts/verify-local.sh set -euo pipefail cd "$(dirname "$0")/../.." : "${VOKO_TEST_EMAIL:?请设置 VOKO_TEST_EMAIL(一个能收信的邮箱)}" node -e 'if (Number(process.versions.node.split(".")[0]) < 24) { console.error("需要 Node 24+,当前 " + process.version); process.exit(1) }' pnpm install pnpm mysql:up if [ "$(node apps/voko-server/tools/db-is-empty.mjs)" = "empty" ]; then pnpm --filter @voko/server db:init else pnpm --filter @voko/server db:migrate fi pnpm dev:user admin@example.test admin123 node apps/voko-server/src/main.js > tmp-voko-server.log 2>&1 & SERVER_PID=$! node apps/voko-server/src/voko-worker-main.js > tmp-voko-worker.log 2>&1 & WORKER_PID=$! trap 'kill $SERVER_PID $WORKER_PID 2>/dev/null || true' EXIT for _ in $(seq 1 30); do curl -sf http://localhost:9201/healthz >/dev/null && break sleep 1 done curl -sf http://localhost:9201/healthz >/dev/null || { echo "API 未启动,日志:"; cat tmp-voko-server.log; exit 1; } VOKO_ADMIN_EMAIL=admin@example.test VOKO_ADMIN_PASSWORD=admin123 \ pnpm --filter @voko/server verify:skeleton export VOKO_ADMIN_EMAIL=admin@example.test VOKO_ADMIN_PASSWORD=admin123 for scenario in f0 f1 f2 concurrency timers; do pnpm --filter @voko/server "verify:$scenario" done