audit / bun-audit (plugin-kit) (push) Successful in 25s
audit / bun-audit (sdk) (push) Successful in 25s
audit / bun-audit (web) (push) Successful in 37s
audit / docs-site-audit (push) Successful in 36s
audit / pnpm-audit (push) Successful in 29s
audit / cargo-audit (push) Successful in 2m57s
decky / build-publish (push) Successful in 43s
deb / build-publish-client-arm64 (push) Failing after 1m9s
deb / build-publish-host (push) Failing after 1m16s
ci / rust-arm64 (push) Failing after 1m35s
ci / web (push) Successful in 1m2s
ci / docs-site (push) Successful in 1m11s
apple / swift (push) Successful in 5m32s
docker / apps (., web/Dockerfile, punktfunk-web) (push) Successful in 2m3s
docker / builders (ci/rust-ci-noble.Dockerfile, punktfunk-rust-ci-noble) (push) Successful in 2m53s
docker / builders (ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 3m30s
audit / license-gate (push) Successful in 7m50s
docker / apps (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 2m38s
docker / builders (ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 9m43s
flatpak / build-publish (push) Successful in 10m55s
android / android (push) Successful in 21m25s
windows-host / package (push) Successful in 20m6s
windows-host / winget-source (push) Skipped
rpm / build-publish (43, bazzite, punktfunk-fedora-rpm) (push) Failing after 13m57s
docker / deploy-docs (push) Successful in 57s
rpm / build-publish (44, fedora-44, punktfunk-fedora44-rpm) (push) Failing after 13m36s
docker / builders (--build-arg FEDORA_VERSION=44, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm, -f44) (push) Successful in 9m32s
windows-msix / package (arm64, C:\Users\Public\ffmpeg-arm64, --no-default-features, aarch64-pc-windows-msvc, C:\t-a64) (push) Failing after 3m20s
deb / build-publish (push) Successful in 16m37s
docker / builders-arm64cross (push) Successful in 2m27s
apple / screenshots (push) Successful in 21m3s
windows-msix / package (x64, C:\Users\Public\ffmpeg, , x86_64-pc-windows-msvc, C:\t) (push) Failing after 3m12s
ci / rust (push) Canceled after 10m44s
windows / build (aarch64-pc-windows-msvc) (push) Successful in 5m42s
windows / build (x86_64-pc-windows-msvc) (push) Successful in 7m29s
arch / build-publish (push) Successful in 15m41s
Backend = the existing RustFS (storage.unom.io, S3, region home-central; LAN-pinned to home-central's address by ci-core's unbound so cache traffic never hairpins the router). Repo secrets SCCACHE_ACCESS_KEY_ID/SECRET carry a keypair scoped to the unom-ci-sccache bucket; keys embed compiler hash + target + flags, so the Ubuntu, Fedora, cross-arm64 and MSVC universes share one bucket without ever colliding. Wired: ci (rust, rust-arm64), deb (all three), rpm, bench, linux-client-screenshots, windows, windows-msix, windows-host. CARGO_INCREMENTAL=0 alongside (sccache and incremental are mutually exclusive, and incremental artifacts are what bloated the persistent Windows target dirs anyway). The binary is baked into the builder images; a per-job ensure-step (same pattern as the GTK4 packages step) keeps jobs green while the running :latest predates the bake, and ensure-windows-toolchain.ps1 self-provisions sccache.exe on the Windows runner. windows-drivers stays unwrapped (wdk-build owns its build env), arch/android/apple are follow-ups. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
66 lines
3.5 KiB
PowerShell
66 lines
3.5 KiB
PowerShell
# Idempotent pre-flight for punktfunk's Windows CI dependencies: WDK + cargo-wdk (driver builds),
|
|
# FFmpeg x64/ARM64 trees, Inno Setup, and the aarch64-pc-windows-msvc rustup target. Run at the
|
|
# start of every Windows CI job so ANY runner - freshly built from unom/infra's windows-runner/
|
|
# template, rebuilt, or a new one added later - self-provisions on first real use, instead of
|
|
# needing a human to remember to dispatch a separate provisioning workflow first (and instead of
|
|
# racing which runner a manually-dispatched provisioning workflow happens to land on, when more
|
|
# than one Windows runner shares the windows-amd64 label).
|
|
#
|
|
# Each underlying script already does its own existence checks (Test-Path/Get-Command) before
|
|
# installing anything, so this is a fast no-op on a runner that's already fully provisioned - the
|
|
# only cost is on a genuinely fresh box, where it's the first job's problem to pay once.
|
|
$ErrorActionPreference = "Stop"
|
|
trap {
|
|
Write-Host "FATAL: $_"
|
|
Write-Host $_.ScriptStackTrace
|
|
exit 1
|
|
}
|
|
|
|
# --- reclaim disk before building -----------------------------------------------------------------
|
|
# The windows-amd64 runner's system volume is intentionally small (100 GB) and a full Windows CI pass
|
|
# writes ~50 GB of cargo target output into C:\t (x64) / C:\t-a64 (arm64). Left to accumulate across
|
|
# runs that overflows the disk and the build dies with "no space on device" (os error 112) - exactly
|
|
# what took the Windows host build down. The runner bakes in a reclaimer + a scheduled task that keeps
|
|
# an idle box lean (unom/infra's setup-gitea-runner-base.ps1 ->
|
|
# C:\Users\Public\act-runner\clean-runner-disk.ps1); call it here too so THIS job starts with headroom
|
|
# regardless of when that task last ran. Threshold mode (no -Force): it only prunes when actually low,
|
|
# so incremental-compile caches survive when there's room. Best-effort - a cleanup hiccup must never
|
|
# fail the build.
|
|
$reclaimer = 'C:\Users\Public\act-runner\clean-runner-disk.ps1'
|
|
try {
|
|
if (Test-Path $reclaimer) {
|
|
& powershell.exe -NoProfile -ExecutionPolicy Bypass -File $reclaimer
|
|
}
|
|
else {
|
|
# Fallback for a runner not yet re-baked with the infra reclaimer: prune the big target dirs when low.
|
|
$freeGb = [math]::Round((Get-PSDrive C).Free / 1GB, 1)
|
|
Write-Host "[ensure-toolchain] clean-runner-disk.ps1 absent; C: free ${freeGb} GB"
|
|
if ($freeGb -lt 35) {
|
|
foreach ($d in 'C:\t', 'C:\t-a64') {
|
|
if (Test-Path $d) { Write-Host " reclaiming $d"; Remove-Item $d -Recurse -Force -ErrorAction SilentlyContinue }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch { Write-Warning "disk reclaim step failed (non-fatal): $_" }
|
|
|
|
$ciDir = $PSScriptRoot
|
|
& "$ciDir\provision-windows-wdk.ps1"
|
|
& "$ciDir\provision-windows-punktfunk-extras.ps1"
|
|
|
|
# --- sccache: shared compile cache (RustFS S3 over the LAN). The Windows workflows set
|
|
# RUSTC_WRAPPER=sccache, so the binary must exist on any runner regardless of when the
|
|
# template was last re-baked. GITHUB_PATH makes it visible to every later step.
|
|
$sccacheDir = 'C:\Users\Public\sccache'
|
|
$sccacheExe = Join-Path $sccacheDir 'sccache.exe'
|
|
if (-not (Test-Path $sccacheExe)) {
|
|
$v = '0.10.0'
|
|
$tarball = Join-Path $env:TEMP "sccache-$v.tar.gz"
|
|
Invoke-WebRequest -Uri "https://github.com/mozilla/sccache/releases/download/v$v/sccache-v$v-x86_64-pc-windows-msvc.tar.gz" -OutFile $tarball
|
|
New-Item -ItemType Directory -Force -Path $sccacheDir | Out-Null
|
|
tar -xzf $tarball -C $sccacheDir --strip-components=1
|
|
Remove-Item $tarball -ErrorAction SilentlyContinue
|
|
}
|
|
& $sccacheExe --version
|
|
if ($env:GITHUB_PATH) { Add-Content -Path $env:GITHUB_PATH -Value $sccacheDir }
|