chore: establish V1.1 recovery baseline
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
param(
|
||||
[switch]$SkipBackend,
|
||||
[switch]$SkipE2E
|
||||
)
|
||||
|
||||
$ErrorActionPreference = 'Continue'
|
||||
$projectRoot = (Resolve-Path (Join-Path $PSScriptRoot '..')).Path
|
||||
$failures = [System.Collections.Generic.List[string]]::new()
|
||||
|
||||
function Invoke-Gate {
|
||||
param(
|
||||
[string]$Name,
|
||||
[scriptblock]$Action
|
||||
)
|
||||
|
||||
Write-Host "`n[$Name]" -ForegroundColor Cyan
|
||||
$gateExit = 0
|
||||
try {
|
||||
& $Action
|
||||
if ($LASTEXITCODE -ne 0) { $gateExit = $LASTEXITCODE }
|
||||
} catch {
|
||||
Write-Error $_
|
||||
$gateExit = 127
|
||||
}
|
||||
if ($gateExit -ne 0) {
|
||||
$failures.Add("$Name (exit $gateExit)")
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host 'Shanyuan Danyang V1.1 - Phase 01 baseline verification' -ForegroundColor Green
|
||||
Write-Host "Project root: $projectRoot"
|
||||
|
||||
Invoke-Gate 'Git repository' {
|
||||
git -C $projectRoot status --short --branch
|
||||
}
|
||||
|
||||
if (-not $SkipBackend) {
|
||||
Invoke-Gate 'Backend unit tests' {
|
||||
$java = Get-Command java -ErrorAction SilentlyContinue
|
||||
$maven = Get-Command mvn -ErrorAction SilentlyContinue
|
||||
if ($java -and $maven) {
|
||||
$mavenRepo = Join-Path $projectRoot 'backend/local-maven'
|
||||
& $maven.Source -s (Join-Path $projectRoot 'backend/maven-settings.xml') `
|
||||
"-Dmaven.repo.local=$mavenRepo" `
|
||||
-f (Join-Path $projectRoot 'backend/pom.xml') test
|
||||
} elseif (Get-Command docker -ErrorAction SilentlyContinue) {
|
||||
$mount = "${projectRoot}:/workspace"
|
||||
$containerCommand = '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'
|
||||
docker run --rm -v $mount -w /workspace/backend eclipse-temurin:21-jdk-alpine `
|
||||
sh -c $containerCommand
|
||||
} else {
|
||||
throw 'JDK 21 and Maven were not found, and Docker is unavailable.'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Invoke-Gate 'Admin type-check' {
|
||||
Push-Location (Join-Path $projectRoot 'admin-web')
|
||||
try { npm run type-check } finally { Pop-Location }
|
||||
}
|
||||
|
||||
Invoke-Gate 'Admin production build' {
|
||||
Push-Location (Join-Path $projectRoot 'admin-web')
|
||||
try { npm run build } finally { Pop-Location }
|
||||
}
|
||||
|
||||
Invoke-Gate 'Miniapp TypeScript' {
|
||||
$tsc = Join-Path $projectRoot 'admin-web/node_modules/.bin/tsc.cmd'
|
||||
if (-not (Test-Path -LiteralPath $tsc)) {
|
||||
throw 'TypeScript compiler is missing. Run npm ci in admin-web first.'
|
||||
} else {
|
||||
& $tsc -p (Join-Path $projectRoot 'miniapp/tsconfig.json') --noEmit
|
||||
}
|
||||
}
|
||||
|
||||
if (-not $SkipE2E) {
|
||||
Invoke-Gate 'V1.1 E2E collection and execution' {
|
||||
Push-Location $projectRoot
|
||||
try { python -m pytest tests/e2e -q } finally { Pop-Location }
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "`n[Summary]" -ForegroundColor Cyan
|
||||
if ($failures.Count -eq 0) {
|
||||
Write-Host 'All Phase 01 baseline gates passed.' -ForegroundColor Green
|
||||
exit 0
|
||||
}
|
||||
|
||||
Write-Host "Failed gates: $($failures.Count)" -ForegroundColor Red
|
||||
$failures | ForEach-Object { Write-Host "- $_" -ForegroundColor Red }
|
||||
exit 1
|
||||
Reference in New Issue
Block a user