ci(feat): split release workflow into independent node, toolkit, and runtime components#1261
Conversation
|
will need a changelog entry to point out to people that versioning is changing for toolkit. |
ozgb
left a comment
There was a problem hiding this comment.
If you haven't already, it would be good to create a -test pre-release with this workflow to verify it's working and see what the output looks like
Yep, I did multiple times until I got the expected result :) I left a draft release as sample if you wanna check |
ozgb
left a comment
There was a problem hiding this comment.
LGTM
One minor nit: in draft mode, the full git tag doesn't get created - this is a feature of gh/draft releases - but, the individual tags do get created
Solution is to either:
- Create all tags for all release types, including draft
- Skip creating git tags for each component when in draft mode
I have a slight preference for option 2 as it follows github conventions more closely, but I don't mind which
…runtime components (#1261) * feat: split releases * chore: change file * fix: interpolation * fix(ci): gate archive-changes steps on archive-changes input * feat: add runtime change folder * fix: loop over release types for handling change files * fix: release template * fix: template nit * fix: reorder releases component sections * fix: bump all components version * fix: runtime archive * fix reordering * fix: undo component reorder * fix: review feedback * temporary fix to test release * fix: revert * fix: npm audit * fix: gh api call * fix: gh api call 2 Signed-off-by: Mike Clay <mike.clay@shielded.io>
…runtime components (#1261) * feat: split releases * chore: change file * fix: interpolation * fix(ci): gate archive-changes steps on archive-changes input * feat: add runtime change folder * fix: loop over release types for handling change files * fix: release template * fix: template nit * fix: reorder releases component sections * fix: bump all components version * fix: runtime archive * fix reordering * fix: undo component reorder * fix: review feedback * temporary fix to test release * fix: revert * fix: npm audit * fix: gh api call * fix: gh api call 2 Signed-off-by: Mike Clay <mike.clay@shielded.io>

Overview
Replace the single node-only boolean in the release workflow with three independent skip flags (
skip-node,skip-toolkit,skip-runtime) so any combination of components can be released independently.Key changes
util/toolkit/Cargo.toml; runtime releases usespec_versionfromruntime/src/lib.rs(e.g.001_000_000→1.0.0)node-1.0.0-toolkit-1.0.0-runtime-1.0.0-rc.1)changes/restructured intonode/,toolkit/, andruntime/subdirectories; skipped component dirs are removed beforeseason buildso only relevant sections renderarchive-changesandreset-changesrun once per included component instead of a single callCargo.toml), toolkit (Cargo.toml), and runtime (spec_version) independently based on skip flagsindex.mdrenders Git tag + Components section with icons (📦 Node, 🧰 Toolkit, ⚙️ Runtime); component sections include Docker Images where applicable${{ inputs.* }}expressions moved fromrun:blocks toenv:to prevent shell injection🗹 TODO before merging
📌 Submission Checklist
🧪 Testing Evidence
python3 -c "import yaml; yaml.safe_load(open(...))"— passestoolkit-X.Y.Z, release notes fromchanges/toolkit/validate-inputsjob!cancelled() && !failure()pattern correctly allows downstream jobs when upstream SBOM jobs are skippedinputs.skip-X != true(step-level) vsgithub.event.inputs.skip-X != 'true'(job-level for reusable workflows) context rulesPlease describe any additional testing aside from CI:
🔱 Fork Strategy
Links
--changes-dirand--changes-template-dirflags)