mirror of
https://github.com/nexu-io/open-design.git
synced 2026-10-27 09:51:12 +01:00
Harden release-beta-s self-hosted beta lane (#3641)
* Fix Windows smoke launcher payload layout
* Harden release-beta-s runner probe
* Use cmd shell for release-beta-s probe
* Add win beta build script for self-hosted lane
* Keep release-beta-s checkout lightweight
* Use explicit local beta version for release-beta-s
* Install dependencies in beta build script
* Repair Electron dist before Windows beta build
* Add release-beta-s timings and diagnostics
* Polish release-beta-s observability guardrails
* Trace tools-pack cache materialization
* Reuse materialized workspace build cache
* Trace Windows packaging segments
* Trace Windows archive process details
* Reuse installer unpacked materialization
* Preserve reusable Windows unpacked projection
* Add fast smoke telemetry for self-hosted beta
* Cache Windows archive outputs for beta lane
* Tighten fast Windows smoke lane
* Scope Windows beta artifact reporting by target
* Clean stale Windows target artifacts
* Wire Windows Authenticode signing
* Expose self-hosted beta validation modes
* Add core Windows smoke profile
* Decouple core smoke from updater fixture version
* Trace Windows smoke lifecycle steps
* Skip unpacked materialization on NSIS cache hit
* Add Nexu S3 beta publisher
* Harden self-hosted Windows beta lane
* Use Windows PowerShell for publish probe
* Run publish probe via repo script
* Require explicit self-hosted S3 public origin
* Run real installer acceptance for external feeds
* Skip ready-prompt checks for external feeds
* Relax optional self-hosted update inputs
* Tolerate BOM in self-hosted publish probe
* Converge self-hosted beta metadata and signing flow
* Run self-hosted beta metadata prep on the runner lane
* Use Windows PowerShell for self-hosted beta metadata checks
* Bypass execution policy in self-hosted beta metadata checks
* Split self-hosted beta metadata publish
* Suppress mc output in beta publish helpers
* Split Windows NSIS payload cache layers
* Require fresh tool dist metadata
* Preserve Windows overlay payload paths
* Default beta-s gate to core
* Optimize win beta packaging reuse
* simplify windows full smoke lifecycle
* preserve onboarding state after windows upgrade smoke
* fix windows tools-pack test portability
* recover stale tools-pack locks
* Allow auto signing fallback for beta builds
* Add self-hosted beta mac arm64 lane
* Quote self-hosted signing choices
* Run self-hosted beta metadata on mac lane
* Use shallow metadata checkout on self-hosted beta
* Use sparse beta metadata checkout
* Make mac release profile bash-compatible
* Allow file sparse metadata checkout
* Isolate self-hosted metadata checkout
* Clear sparse skip-worktree before mac build
* Isolate self-hosted mac build checkout
* Run self-hosted beta publish without aws cli
* Use unsigned beta prefix for mixed platform publish
* Sparse checkout self-hosted beta publish
* Publish mac beta platform before metadata
* Pass mac publish release profile
* Probe mac signing keychain import
* Expand mac signing preflight variants
* Use sudo keychain helper for self-hosted mac signing
* Route self-hosted mac codesign through sudo wrapper
* Normalize mac signing identity name
* Harden self-hosted mac notarization
* Optimize self-hosted mac release cache
* Fix mac signing helper cleanup
* Retry transient mac notarization uploads
* Keep mac notarization fail-fast
* Reduce mac symlink diagnostics noise
* Normalize self-hosted beta platform inputs
* chore: bump beta base version to 0.9.1
* chore: tune release tools-pack cache retention
* test: add temporary cache validation marker
* chore: key windows nsis base payload by content
* Revert "test: add temporary cache validation marker"
This reverts commit e8487bfd3e.
* chore: probe windows nsis payload cache before materializing
* chore: align self-hosted beta smoke modes
* chore: skip mac smoke report upload when disabled
* chore: default self-hosted beta to publish both platforms
* chore: make beta signing modes explicit
* Add release report artifacts and metatool metadata
* Fix Windows release report zip publishing
* Remove artifact handoff from release beta self-hosted lane
* Fix release beta merge follow-ups
* Fix release beta install regressions
* Restore web build dependencies
* Route Windows beta downloads through mirrors
* Use PowerShell 7 for Windows beta lane
* Fix release beta preflight gates
Generated-By: looper 0.9.4 (runner=fixer, agent=codex)
* Fix Windows beta smoke update reuse
Generated-By: looper 0.9.4 (runner=fixer, agent=codex)
* Fix release beta review follow-ups
* Refresh Nix pnpm dependency hashes
Generated-By: looper 0.9.4 (runner=fixer, agent=codex)
* Fix Windows signtool fallback resolution
* Reject stale beta platform manifests
* Validate beta platform manifest run identity
Generated-By: looper 0.9.4 (runner=fixer, agent=codex)
* Validate beta manifest commit identity
Generated-By: looper 0.9.4 (runner=fixer, agent=codex)
* Allow beta metadata publish reruns
Generated-By: looper 0.9.4 (runner=fixer, agent=codex)
* Build tools-pack fully in beta Windows bootstrap
Generated-By: looper 0.9.4 (runner=fixer, agent=codex)
* Emit r2 metadata for Windows beta publish
Generated-By: looper 0.9.4 (runner=fixer, agent=codex)
* Stabilize beta publish browser test
Generated-By: looper 0.9.4 (runner=fixer, agent=codex)
* Stabilize Windows beta metadata smoke test
Generated-By: looper 0.9.4 (runner=fixer, agent=codex)
* Restore multi-platform Vela CLI package
* Refresh Nix pnpm dependency hashes
Generated-By: looper 0.9.5 (runner=fixer, agent=codex)
---------
Co-authored-by: Looper <looper@noreply.github.com>
This commit is contained in:
@@ -12,51 +12,69 @@ if (!(Test-Path $cacheRoot)) {
|
||||
|
||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue (Join-Path $cacheRoot "locks")
|
||||
|
||||
$maxBytes = 3GB
|
||||
$maxBytes = if ([string]::IsNullOrWhiteSpace($env:TOOLS_PACK_CACHE_MAX_BYTES)) {
|
||||
24GB
|
||||
} else {
|
||||
[int64]$env:TOOLS_PACK_CACHE_MAX_BYTES
|
||||
}
|
||||
$keepPerNode = if ([string]::IsNullOrWhiteSpace($env:TOOLS_PACK_CACHE_KEEP_PER_NODE)) {
|
||||
5
|
||||
} else {
|
||||
[int]$env:TOOLS_PACK_CACHE_KEEP_PER_NODE
|
||||
}
|
||||
$entryRoot = Join-Path $cacheRoot "entries"
|
||||
if (!(Test-Path $entryRoot)) {
|
||||
"tools-pack cache entries root does not exist; nothing to prune"
|
||||
exit 0
|
||||
}
|
||||
|
||||
$discardedBytes = 0L
|
||||
$discardedCount = 0
|
||||
$packagedAppRoot = Join-Path $entryRoot "win.packaged-app"
|
||||
if (Test-Path $packagedAppRoot) {
|
||||
$packagedAppEntries = Get-ChildItem -Path $packagedAppRoot -Directory -ErrorAction SilentlyContinue |
|
||||
Where-Object { Test-Path (Join-Path $_.FullName "manifest.json") }
|
||||
foreach ($entry in $packagedAppEntries) {
|
||||
$size = (Get-ChildItem -Path $entry.FullName -Recurse -File -Force -ErrorAction SilentlyContinue |
|
||||
Measure-Object -Property Length -Sum).Sum
|
||||
Remove-Item -Recurse -Force -LiteralPath $entry.FullName
|
||||
$discardedBytes += [int64]($size ?? 0)
|
||||
$discardedCount += 1
|
||||
}
|
||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue $packagedAppRoot
|
||||
}
|
||||
|
||||
$priorityByNode = @{
|
||||
"win.electron-builder-dir" = 0
|
||||
"win.workspace-build" = 1
|
||||
"win.resource-tree" = 2
|
||||
"win.workspace-tarballs" = 3
|
||||
"win.workspace-build" = 0
|
||||
"win.electron-builder-dir" = 1
|
||||
"win.nsis-payload-base" = 2
|
||||
"win.packaged-app" = 3
|
||||
"win.nsis-installer" = 4
|
||||
"win.nsis-payload-overlay" = 5
|
||||
"win.resource-tree" = 6
|
||||
"win.workspace-tarballs" = 7
|
||||
"win.portable-zip" = 8
|
||||
}
|
||||
|
||||
$entries = Get-ChildItem -Path $entryRoot -Directory -Recurse |
|
||||
$entries = @(Get-ChildItem -Path $entryRoot -Directory -Recurse |
|
||||
Where-Object { Test-Path (Join-Path $_.FullName "manifest.json") } |
|
||||
ForEach-Object {
|
||||
$size = (Get-ChildItem -Path $_.FullName -Recurse -File -Force -ErrorAction SilentlyContinue |
|
||||
Measure-Object -Property Length -Sum).Sum
|
||||
if ($null -eq $size) {
|
||||
$size = 0
|
||||
}
|
||||
$node = Split-Path (Split-Path $_.FullName -Parent) -Leaf
|
||||
$priority = $priorityByNode[$node]
|
||||
if ($null -eq $priority) {
|
||||
$priority = 100
|
||||
}
|
||||
[pscustomobject]@{
|
||||
Path = $_.FullName
|
||||
Node = $node
|
||||
Priority = [int]($priorityByNode[$node] ?? 100)
|
||||
Size = [int64]($size ?? 0)
|
||||
Priority = [int]$priority
|
||||
Size = [int64]$size
|
||||
LastWriteTimeUtc = $_.LastWriteTimeUtc
|
||||
}
|
||||
} |
|
||||
Sort-Object Priority, @{ Expression = "LastWriteTimeUtc"; Descending = $true }
|
||||
})
|
||||
|
||||
$rankByPath = @{}
|
||||
$entries | Group-Object Node | ForEach-Object {
|
||||
$rank = 0
|
||||
$_.Group | Sort-Object @{ Expression = "LastWriteTimeUtc"; Descending = $true } | ForEach-Object {
|
||||
$rank += 1
|
||||
$rankByPath[$_.Path] = $rank
|
||||
}
|
||||
}
|
||||
|
||||
$sortByProtectedRank = @{ Expression = { if ([int]$rankByPath[$_.Path] -le $keepPerNode) { 0 } else { 1 } } }
|
||||
$sortByLastWrite = @{ Expression = "LastWriteTimeUtc"; Descending = $true }
|
||||
$entries = $entries |
|
||||
Sort-Object $sortByProtectedRank, Priority, $sortByLastWrite
|
||||
|
||||
$keptBytes = 0L
|
||||
$removedBytes = 0L
|
||||
@@ -71,4 +89,4 @@ foreach ($entry in $entries) {
|
||||
$removedCount += 1
|
||||
}
|
||||
|
||||
"keptBytes=$keptBytes removedBytes=$removedBytes removedCount=$removedCount discardedBytes=$discardedBytes discardedCount=$discardedCount maxBytes=$maxBytes"
|
||||
"keptBytes=$keptBytes removedBytes=$removedBytes removedCount=$removedCount maxBytes=$maxBytes keepPerNode=$keepPerNode"
|
||||
|
||||
Reference in New Issue
Block a user