ci: support MCP v1 maintenance releases - #225
Merged
Merged
Conversation
Port of typescript-sdk #146 so the two release pipelines stay symmetric, ahead of the keycardai-mcp 1.x/2.x split (ECO-195). - bump PRs can target main or release/mcp-v1: bump_package.py gains --target-branch, parametrizing the pull/reset, the bump branch parent, the PR base, the direct-merge fast-forward ref, and the tag commit - release-line-namespaced bump branches (bump/<line>/<pkg>-<version>) so a 1.x and a main bump of the same package cannot collide on one ref - --increment forces major/minor/patch via cz --increment --allow-no-commit, for deliberate majors and establishing new lines - bump-package.yml gains workflow_dispatch with target_branch/increment; main.yml triggers on release/mcp-v1 pushes, restricted there to keycardai-mcp (unlike typescript-sdk, the root keycardai package does not depend on keycardai-mcp, so no aggregate releases from the branch) - MCP_RELEASES.md documents the lines and the one-time establishment sequence; PyPI has no dist-tags, so dependency ranges steer resolvers and nothing changes in how versions publish - scripts/test_bump_package.py mirrors the typescript-sdk test coverage: branch naming/sanitization, pull/reset targets, forced-increment forwarding, PR base branch Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
carldunham
approved these changes
Aug 6, 2026
| package_name: ${{ matrix.package.package_name }} | ||
| package_dir: ${{ matrix.package.package_dir }} | ||
| target_branch: ${{ github.ref_name }} | ||
| secrets: inherit No newline at end of file |
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.
Port of typescript-sdk #146 so both SDK release pipelines work the same way, ahead of the
keycardai-mcp1.x/2.x split (ECO-195). Same reviewer-facing shape: bump PRs can targetmainorrelease/mcp-v1, a manual forced-increment path exists for establishing 1.0.0/2.0.0, andMCP_RELEASES.mddocuments the sequence.What's in it
scripts/bump_package.pygains--target-branch(parametrizes the pull/reset, bump-branch parent, PR base, direct-merge fast-forward ref, and tag commit) and--increment(forces major/minor/patch viacz bump --increment X --allow-no-commit)bump/release-mcp-v1/keycardai-mcp-1.0.1) so a 1.x and a main bump of the same package can't collidebump-package.ymlgainsworkflow_dispatchwithtarget_branch/incrementinputs;main.ymltriggers onrelease/mcp-v1pushes and passestarget_branch: ${{ github.ref_name }}throughscripts/test_bump_package.pymirrors typescript-sdk's coverage;python3 -m unittest discover -s scriptsruns 6 tests greenTwo deliberate divergences from #146
release.ymlis already tag-triggered and branch-agnostic, so publishing from the maintenance branch needs zero changes. Dependency ranges (keycardai-mcp<2) steer resolvers instead — documented inMCP_RELEASES.md.keycardai-mcpbumps from the branch. typescript-sdk also releases its aggregate@keycardai/sdkfrom the maintenance line because it re-exports mcp; the Python rootkeycardaipackage has no dependency onkeycardai-mcp, so the branch filter is mcp-only.Verification
python3 -m unittest discover -s scripts -p 'test_*.py'— 6 passedruff checkclean on both scriptschangelog.py changesstill returns clean outputRollout (after ECO-195's PR is approved)
keycardai-mcp@1.0.0frommain(forcedmajor) while main still carriesmcp<2.0.release/mcp-v1at the 1.0.0 commit.feat!squash title makes cz cut 2.0.0 automatically.packages/fastmcp's cap tokeycardai-mcp>=1,<2in the same window.Note: the bump workflow currently fails in both SDK repos for an unrelated reason — the new SDK release app's
SDK_RELEASE_APP_IDsecret was never provisioned (asked in Slack). This PR neither depends on nor fixes that.🤖 Generated with Claude Code