Files
getDomain/prepare_final_release.ps1
2026-04-18 23:52:51 +08:00

52 lines
1.6 KiB
PowerShell

$ErrorActionPreference = "Stop"
$root = Split-Path -Parent $MyInvocation.MyCommand.Path
$releaseRoot = Join-Path $root "release"
$reportPath = Join-Path $releaseRoot "final_release_report.json"
New-Item -ItemType Directory -Force -Path $releaseRoot | Out-Null
& (Join-Path $root "package_domain_release.ps1")
$latestJsonPath = Join-Path $releaseRoot "latest_release.json"
if (-not (Test-Path -LiteralPath $latestJsonPath)) {
throw "latest_release.json not found"
}
$latest = Get-Content -LiteralPath $latestJsonPath -Raw | ConvertFrom-Json
$archivePath = if ($latest.archive_path) { $latest.archive_path } else { $latest.zip_path }
$verifyOutput = & (Join-Path $root "verify_domain_release.ps1") `
-ZipPath $archivePath `
-HashPath $latest.sha256_path
$verify = $verifyOutput | ConvertFrom-Json
$verifyOk = [bool]$verify.ok
$smokeOk = [bool]$latest.smoke_test_ok
$blockedReasons = @()
if (-not $verifyOk) {
$blockedReasons += "verify_failed"
}
if (-not $smokeOk) {
$blockedReasons += "smoke_test_failed_or_skipped"
}
$report = [ordered]@{
generated_at = (Get-Date).ToString("s")
ok = ($verifyOk -and $smokeOk)
latest_release = $latest
verify = $verify
release_gate = [ordered]@{
verify_ok = $verifyOk
smoke_test_ok = $smokeOk
blocked_reasons = $blockedReasons
decision = if ($blockedReasons.Count -eq 0) { "ready" } else { "blocked" }
}
}
$report | ConvertTo-Json -Depth 8 | Set-Content -LiteralPath $reportPath -Encoding UTF8
Write-Host "final release prepared"
Write-Host "report: $reportPath"
Write-Host "ok: $($report.ok)"