Add cut-release / publish-release workflows#2799
Merged
Merged
Conversation
cut-release.yml (workflow_dispatch, inputs: version, kind, dry_run): - kind=rc: tag current main as <version>-RC and publish a prerelease. Spec content stays under docs/specification/draft/ — no file changes, no PR. - kind=final: copy draft/ → docs/specification/<version>/ and schema/<version>/, regenerate schema artifacts, patch docs/docs.json nav, reset the draft changelog, and open a release PR. Existing CODEOWNERS rules require core-maintainers approval to merge. Both paths validate YYYY-MM-DD and refuse to overwrite an existing tag/dir. Inputs are passed via env, not interpolated into run:. publish-release.yml: on merge of a release/<version> PR to main, create the GA tag + GitHub Release. Idempotent — skips if the tag exists.
Contributor
Author
|
/lgtm force Action for automating the release process. |
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.
Automates the two manual steps of cutting a spec revision so the release tracker can dispatch them and the result is reproducible.
cut-release.yml—workflow_dispatch(version, kind, dry_run)kindrcmainas<version>-RCand publishes a prerelease. Spec content stays underdocs/specification/draft/— no file changes, no PR.finaldraft/→docs/specification/<version>/andschema/<version>/, runsnpm run generate, inserts the new version intodocs/docs.jsonnav, resetsdraft/changelog.mdx, opens PRrelease/<version>.@modelcontextprotocol/core-maintainersapproval required to merge.Both paths validate
YYYY-MM-DDand refuse to overwrite an existing tag/dir. Inputs are passed throughenv:(not${{ }}inrun:); third-party action is SHA-pinned.publish-release.ymlFires on push to
mainwhen arelease/<version>PR merges: creates the GA tag + GitHub Release. Idempotent (skips if the tag already exists).Why
Today each release is a hand-authored PR (#1887, #232, …) followed by a manually drafted GitHub Release. This makes the file promotion + nav patch deterministic, keeps the human check at the CODEOWNERS review on the Final PR, and gives the release tracker (modelcontextprotocol/mcp-spec-tpm) a dispatch target so the RC/Final cut shows up as a single button on the release plan.