9eebadff2a
The Windows CI runner (home-windows-runner-1, vmid 210) is now provisioned/owned by unom/infra and can be rebuilt or joined by additional windows-amd64-labeled runners at any time - a manually-dispatched provisioning workflow has no way to target a specific runner instance, so it could land on an already-provisioned box instead of the one that needed it. Replace windows-drivers-provision.yml / windows-punktfunk-provision.yml with scripts/ci/ensure-windows-toolchain.ps1, a shared idempotent pre-flight (WDK/cargo-wdk, FFmpeg, Inno Setup, ARM64 rustup target) that every Windows workflow now runs at job start - a fast no-op once already provisioned, so any runner self-heals on first real use. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
22 lines
1.1 KiB
PowerShell
22 lines
1.1 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
|
|
}
|
|
|
|
$ciDir = $PSScriptRoot
|
|
& "$ciDir\provision-windows-wdk.ps1"
|
|
& "$ciDir\provision-windows-punktfunk-extras.ps1"
|