71 lines
2.2 KiB
Bash
71 lines
2.2 KiB
Bash
#!/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
|