chore: establish V1.1 recovery baseline
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user