Files
danyang-match/scripts/verify-phase01.sh
T

71 lines
2.2 KiB
Bash
Raw Permalink Normal View History

2026-09-09 22:05:00 +08:00
#!/usr/bin/env sh
set -uo pipefail
PROJECT_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
FAILURE_COUNT=0
FAILURE_NAMES=""
run_gate() {
local name="$1"
shift
printf '\n[%s]\n' "$name"
if ! "$@"; then
FAILURE_COUNT=$((FAILURE_COUNT + 1))
FAILURE_NAMES="${FAILURE_NAMES}\n- ${name}"
fi
}
backend_tests() {
if command -v java >/dev/null 2>&1 && command -v mvn >/dev/null 2>&1; then
mvn -s "$PROJECT_ROOT/backend/maven-settings.xml" \
-Dmaven.repo.local="$PROJECT_ROOT/backend/local-maven" \
-f "$PROJECT_ROOT/backend/pom.xml" test
elif command -v docker >/dev/null 2>&1; then
docker run --rm -v "$PROJECT_ROOT:/workspace" -w /workspace/backend \
eclipse-temurin:21-jdk-alpine sh -c \
'rm -rf /tmp/maven && mkdir -p /tmp/maven && cd /tmp/maven && jar xf /workspace/backend/maven.zip && chmod +x /tmp/maven/apache-maven-3.9.6/bin/mvn && /tmp/maven/apache-maven-3.9.6/bin/mvn -s /workspace/backend/maven-settings.xml -Dmaven.repo.local=/workspace/backend/local-maven -f /workspace/backend/pom.xml test'
else
printf '未找到 JDK 21 + Maven,且 Docker 不可用。\n' >&2
return 127
fi
}
admin_typecheck() {
cd "$PROJECT_ROOT/admin-web" && npm run type-check
}
admin_build() {
cd "$PROJECT_ROOT/admin-web" && npm run build
}
miniapp_typecheck() {
local tsc="$PROJECT_ROOT/admin-web/node_modules/.bin/tsc"
if [ ! -x "$tsc" ]; then
printf '缺少 TypeScript 编译器;请先在 admin-web 执行 npm ci。\n' >&2
return 127
fi
"$tsc" -p "$PROJECT_ROOT/miniapp/tsconfig.json" --noEmit
}
e2e_tests() {
cd "$PROJECT_ROOT" && python -m pytest tests/e2e -q
}
printf '善缘丹阳 V1.1 — Phase 01 基线检查\n项目目录: %s\n' "$PROJECT_ROOT"
run_gate 'Git repository' git -C "$PROJECT_ROOT" status --short --branch
run_gate 'Backend unit tests' backend_tests
run_gate 'Admin type-check' admin_typecheck
run_gate 'Admin production build' admin_build
run_gate 'Miniapp TypeScript' miniapp_typecheck
run_gate 'V1.1 E2E collection and execution' e2e_tests
printf '\n[Summary]\n'
if [ "$FAILURE_COUNT" -eq 0 ]; then
printf '全部 Phase 01 基线门禁通过。\n'
exit 0
fi
printf '失败门禁: %s\n' "$FAILURE_COUNT"
printf '%b\n' "$FAILURE_NAMES"
exit 1