ci(windows): M2 ISO build + Gitea Windows-runner workflow #3
Reference in New Issue
Block a user
Delete Branch "ci/build-iso-windows"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Custom packed ISO — build pipeline + CI
Implements M2 (the ISO build) and M3 (the Gitea workflow) for SilverMetal Enhanced — Windows, targeting the existing self-hosted
silverlabs-runner-winrunner (windows-latest/windows-2025).What's here
windows/installer/build.ps1— full M2 implementation: mount/extract base ISO → offline-serviceinstall.wim(inject GPD drivers if staged, debloat appx, bakeSetupComplete.cmd+ the §A–H hardening modules into\Windows\Setup\Scripts) → injectautounattend.xml→oscdimgUEFI repack → SHA-256 + SBOM. Elevation +oscdimgpresence guarded..gitea/workflows/build-iso-windows.yaml— mirrorsbuild-iso-linux.yaml: ensures ADK Deployment Tools, acquires the base ISO (repo varSILVERMETAL_BASE_ISO_URLor pre-stagedC:\silvermetal\base.iso), builds, validates, uploads SBOM/SHA (+ISO on dispatch/tag), attaches to a release onwin-v*tags.windows/tests/Assert-IsoStructure.ps1— the no-nested-virt CI gate: mounts the built ISO +install.wimread-only and assertsautounattend.xml,SetupComplete.cmd, and the hardening modules are correctly baked. Full QEMU+OVMF+swtpm boot-and-Verifyis a documented follow-on.SetupComplete.cmdauto-run (SYSTEM, end of setup) instead of a duplicateFirstLogonCommandscall..gitignorefor build outputs.Honest status
autounattendXML + workflow YAML validate.iso-builder.md§5).To actually run it
The runner needs the eval ISO reachable — either set repo variable
SILVERMETAL_BASE_ISO_URLor stage it atC:\silvermetal\base.isoon the runner. Thenworkflow_dispatch.🤖 Generated with Claude Code