Repository navigation
ci: openshell-next branch automation that tracks OpenShell releases - #81
Merged
Merged
Conversation
Closes #79 Signed-off-by: Ilan Harel <ilan@Ilans-MacBook-Pro.local>
6 tasks
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.
Closes #79
Infrastructure for building openshell-annotate against the next OpenShell release before it ships stable. The
openshell-nextbranch it maintains already exists (draft PR tracking #80).Branch model
openshell-nextis the one long-lived branch: main plus the OpenShell pin on the newest upstream tag, prereleases included (nowv0.1.8-pre.3), plus fixes that only make sense there. Fixes that are also valid on main's pin go to main first and reach the branch through the daily merge.Automation:
.github/workflows/openshell-next.yml(daily 04:17 UTC +workflow_dispatchwithtag/reportinputs)origin/mainintoopenshell-nextwith a signed-off merge commit. If both sides moved the pin, it keeps the newer tag and re-resolvesCargo.lock. Any other conflict stops the run without pushing and is reported.github-actions[bot]with aSigned-off-byline.-D warnings,cargo test --lockedandgen-docs.sh --checkin the same job.gh workflow run ci.yml --ref openshell-next.GITHUB_TOKENpushes trigger no workflows, butworkflow_dispatchis allowed, socheck/auditland on the tracking PR's head commit. For this,ci.ymlgains aworkflow_dispatchtrigger.openshell-next-labelled issue (or creates it) when the pin moved, the branch was created, or the merge or tests failed. The comment has the old and new tag, upstream release and compare links, the result, a log tail and the run link. A stable tag adds the promotion note. It never opens PRs: the repo doesn't let Actions create PRs, and the tracking PR already is the bump PR.contents: read. The job hascontents: write,issues: write,actions: writeandpull-requests: read. OnlyGITHUB_TOKENis used.checkoutv7.0.1,cachev4.3.0, the same SHAsrelease.ymland the composite actions use), withconcurrency: openshell-nextand no cancel.Scripts
scripts/openshell-tags.sh:latest/latest-stable/list/pinned/newer A B/is-stable A. It uses release order (stablevX.Y.Z>vX.Y.Z-pre.N), ignoresdevandvm-runtime, and is portable.OPENSHELL_TAGSoverrides the list for offline runs.scripts/openshell-next.sh:bump <tag>(both crates, comment,cargo update -pfor both),update [<tag>],sync [<ref>].scripts/upstream-compat.shnow uses the tag script and repoints both crates. Before,openshell-policy(the gateway validator) stayed on the old tag, so compat runs never tested the new validator. It also uses portablesed, so it runs on macOS.upstream-compat.ymlalso runs on every push to main (docs-only changes skipped) and stays non-blocking (continue-on-errorfor push/PR). Its actions are now SHA-pinned.Proposed, not applied
.github/rulesets/protect-openshell-next.jsonblocks deletion and non-fast-forward pushes onopenshell-next. It also stopsdelete_branch_on_mergefrom deleting the branch when the tracking PR is squash-merged. It has no PR or status-check rules, so the bot can push. Apply it withgh api -X POST repos/ilanh/openshell-annotate/rulesets --input .github/rulesets/protect-openshell-next.json.Docs
openshell-nextwhen OpenShell ships stable".scripts/labels.sh(theopenshell-nextlabel) and CHANGELOG.Verified (macOS)
actionlintis clean.shellcheckis clean on the new and changed scripts.gen-docs.sh --checkandgen-actions-docs.sh --checkpass.openshell-tags.shruns against the real NVIDIA/OpenShell tags:latest= v0.1.8-pre.3 andlatest-stable= v0.1.7. Ordering edge cases pass (pre vs stable, v0.1.10 vs v0.1.9, junk tags).openshell-next.shwas tested in a scratch clone with real tags:updatev0.1.7 → v0.1.8-pre.3 and then a no-op.synchandles a pin conflict both ways (keeps the newer tag) and aborts with exit 3 on a README conflict.gh, both for the stable-tag + failing-tests comment and for the quiet no-change path.scripts/upstream-compat.sh latest-prerelease(both crates at53b8eec2) reports ✅ compatible.