feature: CI fat-script build pipeline + new OEM pattern docs#75
feature: CI fat-script build pipeline + new OEM pattern docs#75Gumbees wants to merge 2 commits into
Conversation
Lands the foundation for the OEM redo design (#74): - GHA workflow + build script that walks src/ for .ps1 files, processes `# %INCLUDE <path>` markers, writes fat self-contained scripts to a separate `published` branch. Push to main moves @Release tag; push to development moves @dev tag. Recursive includes rejected loudly. - src/ stub with README explaining the modular-source convention and marker syntax. - CLAUDE.md: new "Source vs Published" section (build pipeline + URL convention) and "OEM Vendor Scripts" section (internet-check at install step only, `configure` not `baseline` naming, canonical $env:BIOS_* translation pattern, standard OEM layout). - README.md: "Script Delivery" section with the canonical jsDelivr URL. - script-template-powershell.ps1: commented-out `# %INCLUDE` example block + commented-out internet-check stub. No OEM scripts move in this PR ... Dell prototype is a follow-up branched from this PR.
There was a problem hiding this comment.
Code review is billed via overage credits. To resume reviews, an organization admin can raise the monthly limit at claude.ai/admin-settings/claude-code.
Once credits are available, push a new commit or reopen this pull request to trigger a review.
|
Closing in favor of a design refinement on #74. After review, the CI fat-script build pipeline ( Replacing with self-contained scripts: each OEM script inlines its own OEM detection + BIOS translation table + any other helpers it needs. ~30-50 lines duplicated across Dell + HP + Lenovo. Acceptable, easy to grep, no build system to operate. The genuinely-good pieces of the prior design are being preserved in the new shape:
Branch retained for cherry-pick reference. New Dell PR coming as a fresh PR targeting |
Summary
Foundation PR for the OEM redo design captured at #74. Lands the CI fat-script build pipeline and the doc updates that describe the new pattern. No OEM scripts move in this PR ... the Dell prototype follows in a separate PR branched off this one.
This is the load-bearing infra change that the rest of the OEM work sits on. It replaces the runtime lib-bootstrap approach (closed in #68) with CI-built self-contained scripts.
What lands
CI fat-script build pipeline
.github/workflows/build-fat-scripts.yml... runs on push todevelopmentandmain. Walkssrc/for.ps1files, processes# %INCLUDE <path-relative-to-repo-root>markers, writes fat scripts to the matching relative path on a separatepublishedbranch..github/scripts/build-fat-scripts.ps1... the include processor itself. ~80 lines, deliberately simple. Recursive includes are not supported in V1 (lib files cannot themselves contain# %INCLUDEmarkers) and the build fails loudly if it sees one.mainmoves thereleasetag onpublished; push todevelopmentmoves thedevtag. Commit message onpublishednames the source short SHA and subject:build: from <source-sha-short> "<source commit subject>".src/is empty or missing, the workflow logs and skips cleanly (so this PR merging won't try to push an emptypublishedbranch ... the first real fat script lands when the Dell prototype merges)..git) before each build so removed source files don't linger onpublished.src/directory stubsrc/README.mdexplains the modular-source convention, the# %INCLUDEmarker syntax, and how the build generates fat scripts inpublished. Nothing else undersrc/yet ... the Dell prototype PR seeds it.Documentation
CLAUDE.mdgains a "Source vs Published" section (build pipeline, marker syntax, URL convention) and a new "OEM Vendor Scripts" section that captures:configurenotbaselinenaming convention (with old→new rename table)$env:BIOS_*env vars, shared map per OEM)src/README.mdgains a "Script Delivery" section that summarizes the source→published flow and pins the canonical jsDelivr URL convention.script-template-powershell.ps1... no lib-bootstrap block (was never ondevelopment, only ever in the closed PR improvement(docs): lib-bootstrap pattern + development branch model + jsDelivr URLs #68). Added a commented-out# %INCLUDEexample block at the top and a commented-out internet-check stub before the script-logic section with a note explaining when to uncomment.Canonical script URL
@release... production-pinned tag onpublished, moved on each push tomain.@dev... staging tag onpublished, moved on each push todevelopment.@<commit-sha>... immutable per-build pin for customer-facing presets where you want to lock the exact build.Variance from the design issue
None substantive. Two implementation choices worth noting:
# %INCLUDEpath is relative to the repo root, not relative tosrc/. This matches the marker example in the design (# %INCLUDE oem-shared/lib/...) and makes the path stable whether the build moves where source lives. In-source includes will end up looking like# %INCLUDE src/oem-shared/lib/...... explicit, no magic resolver.src/and at least one.ps1before doing anything. Lets this PR land cleanly before the Dell prototype seedssrc/.Test plan
if:gate onhas_src=falseshould make this PR's own merge todevelopmentproduce a clean "nothing to build" run, sincesrc/only contains the README).src/, the workflow produces apublishedbranch with fat output and a moveddevtag..github/scripts/build-fat-scripts.ps1against a stubsrc/with a leaf that includes a lib; verify the inlined output has the framing comments and the lib content in place of the marker.# %INCLUDEmarker (recursive include guard).CLAUDE.mdandREADME.mdrender correctly on GitHub web view.Follow-ups
feature/oem-redo-dell-prototype(issue design: OEM hybrid pattern redo (CI fat scripts, configure-not-baseline, RMM-driven options) #74, separate PR) ... Dellconfigurescript in the new shape, branched from this PR.