Centralize build (build-reusable.yml) and bump Node#428
Open
SteveLLamb wants to merge 4 commits into
Open
Conversation
Member
Author
|
This applies the same reusable-workflow pattern as the auto-PCD rollout (see #423) — the real logic lives in one @main-referenced workflow in html-pub (build-reusable.yml, like pcd-update-reusable.yml), and each repo carries only a thin caller stub. Changes happen once centrally and every repo picks them up automatically, with the #346 official-tooling enforcement folded into that same central file. And because this centralizes it, the repeated tooling-and-workflow bumps I've had to do across all repos over the last three months collapse into a single edit in html-pub. That recurring per-repo cascade is exactly what the reusable-workflow pattern eliminates.
|
raymondyyeungDBL
approved these changes
Jun 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Replaces #346. Moves the per-repo build workflow into a single central reusable workflow in
html-puband folds the "official tooling" enforcement from #346 into it. Each document repo'smain.ymlbecomes a thin stub, so future Action/Node bumps and pipeline changes happen once here instead of being copy-pasted (andcmp-locked) across ~70 repos.Originally prompted by the GitHub Node 20 → 24 deprecation (forced 16 Jun 2026, removed 16 Sep 2026), which flagged
actions/checkout@v3andaws-actions/configure-aws-credentials@v1-node16.Replaces #346
#346 ("Enforce official Tooling") kept the duplicated
main.ymlplus adiff/cmpmatch check. This supersedes it:diff/cmponmain.yml— obsolete oncemain.ymlis a stub (nothing to compare; it would false-fail).build-reusable.yml(rides the pipeline ref → always current) instead ofaction.yml(submodule-pinned → its checks were only as fresh as the submodule being checked).Closes #346 in favor of this.
What changed (html-pub)
.github/workflows/build-reusable.yml—on: workflow_call, holds the real pipeline:actions/checkout@v5,aws-actions/configure-aws-credentials@v6(Node 24 clean)./tooling/workflows,./workflows, release notify)Enforce official toolingstep (skipped inhtml-pubitself):toolingURL in.gitmodulesmust equalhttps://github.com/SMPTE/html-pub.git— blocks forks.main, else fail with copy-paste bump instructions.OVERRIDE_SUBMODULE_SHA/OVERRIDE_SUBMODULE_REFinputs — sanctioned escape hatch (mismatch warns instead of failing) for testing or rebuilding an old release..github/workflows/main.yml→ thin stub calling the reusable workflow locally (uses: ./.github/workflows/build-reusable.yml).workflows/action.yml:cmp"Confirm that the right workflow is active" step (obsolete; false-fails against stubs).marocchino/sticky-pull-request-comment@v2 → v3(last Node 20 action surfaced in CI).Residual:
jwalton/gh-find-current-pr@v1is still Node 20 — no Node 24 release exists yet, it isn't surfaced as a warning, and it will force-migrate on 16 Jun. Bump when upstream ships one.How it works
main.yml= thin stub: triggers +permissions+uses: SMPTE/html-pub/.github/workflows/build-reusable.yml@<ref>+secrets: inherit.submodules: true;uses: ./tooling/workflowsresolves against the caller's checked-out submodule, so build/validation code stays pinned by each repo's submodule SHA (reproducibility preserved).@ref(pipeline) and the submodule SHA (build code).Testing — validated on SMPTE/tst123-4-private#2
All three enforcement paths verified on a real consumer repo (stub →
build-reusable.yml@feature/bump-node-GH):Recorded == Target, "Official tooling confirmed", full build/deploy ran. https://github.com/SMPTE/tst123-4-private/actions/runs/27441610569main) → ❌ fails with the bump message. https://github.com/SMPTE/tst123-4-private/actions/runs/27441392891.gitmodulespointed atSteveLLamb/html-pub) → ❌ fails the URL check before any submodule code runs. https://github.com/SMPTE/tst123-4-private/actions/runs/27441703680Also confirmed the original Node 20 warnings (checkout, aws-creds, sticky-comment) are gone.
Rollout — every repo that uses the
toolingsubmoduleAfter this merges to
html-pubmain:Switch the pipeline ref to a stable one — use
@main(auto-current) or a release tag in stubs, not the feature branch.Replace each repo's
.github/workflows/main.ymlwith the stub:Ensure the
toolingsubmodule uses the official URL and is bumped to latestmain(enforcement requires it at edit time).No
with: OVERRIDE_*in production stubs — that block is testing-only; omitting it enforces latestmain.Update
html-pub-templateso new repos are born with the stub.(Optional)
update-tooling-submodule.ymlstill usesactions/checkout@v3(warning-only, notcmp-guarded) — bump to@v5when convenient.Mechanical and scriptable across the ~69 existing repos; the stub never needs editing again for future pipeline/Action/Node bumps.