chore: replace semantic-release with changesets#196
Conversation
semantic-release pushes directly to main, which violates the org-level ruleset requiring PR reviews. Changesets works via PRs instead. - Add package.json (v5.3.0, private) with @changesets/cli - Add .changeset/config.json targeting main branch - Rewrite release.yml with two jobs: release (changesets/action) and docker (build+push only after version PR merge) - Use default GITHUB_TOKEN instead of GH_PAT - Add scripts/update-readme-version.js to replace sed-based version updates from .releaserc - Add .dockerignore to exclude node_modules from builds - Remove .releaserc (no longer needed) Closes #184
justinwlin
left a comment
There was a problem hiding this comment.
Good fix — changesets is the right call here and the two-phase job structure (changesets action → docker build) is the standard pattern. The Node.js README version updater is cleaner than the old sed approach.
A few things to keep in mind as you land this:
Verify 5.3.0 in package.json matches the latest released git tag. If it's off by a patch version the first automated release will produce a wrong version number.
workflow_dispatch was removed — there's now no way to manually trigger a release if the automated flow gets into a bad state. Worth restoring on the docker job at minimum.
Contributor documentation — every feature branch now needs a pnpm changeset run before merging or the release pipeline silently does nothing. A note in CONTRIBUTING.md (or the PR template) will save future contributors a confusing debugging session.
- Update package.json version to 5.7.1 to match latest git tag - Restore workflow_dispatch trigger on release.yml so docker job can be manually triggered - Add changeset documentation to CONTRIBUTING.md and PR template
…te-to-changesets chore: replace semantic-release with changesets
Summary
Fixes #184 — the automated release pipeline is broken because semantic-release pushes directly to
main, which violates the org-level ruleset requiring 1 approving review on PRs.Changesets works via PRs instead, which is compatible with the org rules. This follows the same pattern used by ai-sdk-provider.
Changes
package.json(v5.3.0,private: true) with@changesets/cli.changeset/config.jsontargetingmainbranch.github/workflows/release.ymlwith two jobs:release— runschangesets/action@v1to create a "chore: version packages" PR when pending changesets existdocker— builds and pushes all Docker images + creates GitHub release, only after the version PR is mergedGITHUB_TOKEN(default) instead ofGH_PAT— changesets creates PRs (not direct pushes), so no PAT neededscripts/update-readme-version.jsto replace thesedcommand from.releaserc.dockerignoreto excludenode_modulesfrom Docker builds.releaserc(no longer needed)New release flow
pnpm changesetto add a changeset filemainTest plan
pnpm installsucceeds, lockfile generatedpnpm changeset statusworks correctlynode scripts/update-readme-version.jsupdates README.md version references