52 lines
1.6 KiB
PowerShell
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)"
|