feat: automate releases with changesets + floating major tag#24
Conversation
Adds release-please for tag creation driven by conventional commits, and
a tag-major job that force-updates v{major} and v{major}.{minor} on each
release. Bootstraps the first release as v1.0.0 via release-as.
Consumers pin reusable workflows to @v1 for non-breaking auto-updates,
or to @v1.0.0 / commit SHA for reproducibility.
There was a problem hiding this comment.
Pull request overview
This PR introduces automated, conventional-commit-driven releases for this repository using release-please, and adds automation to maintain floating v{major} / v{major}.{minor} tags for stable consumer pinning of org-wide reusable workflows/actions.
Changes:
- Add
release-pleaseconfiguration + manifest to generate release PRs,CHANGELOG.md, andvX.Y.Ztags. - Add a GitHub Actions workflow that runs on pushes to
mainand, on release creation, force-updates floating major/minor tags. - Bootstrap the initial release as
v1.0.0viarelease-as.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
release-please-config.json |
Configures release-please for simple releases, enabling v-prefixed tags and bootstrapping 1.0.0. |
.release-please-manifest.json |
Initializes release-please manifest state for the root package. |
.github/workflows/release-please.yml |
Automates release-please execution on main and adds a job to move floating v{major}/v{major}.{minor} tags. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Switch this repo's release automation to changesets for org-wide consistency with chillpass / lsp-indexer / LSPs. - Drop release-please config, manifest, and workflow. - Add minimal private package (`@chillwhales/github-workflows`) with `@changesets/cli` devDep so `changesets/action` can run. - Add `.changeset/config.json` and a major-bump changeset to take the next release from 0.1.0 to 1.0.0. - New `release.yml` runs `changesets/action` on push to main, then a `tag-major` job that force-updates the floating `vN` and `vN.M` tags whenever a release is published.
- Use git push --force-with-lease for floating major/minor tags so a concurrent release cannot be silently overwritten. - Replace "@main for now" guidance with explicit pinning recommendations (@vX.Y.Z, @vX.Y, @vx, @main) so consumers pick the right level of stability for their use case. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Adds Changesets-based release automation to the .github workflows repo so releases are versioned/tagged consistently and consumers can pin to stable refs (e.g. @v1).
Changes:
- Introduces a private root npm package so Changesets can track versions, plus a lockfile and Changesets configuration/initial major changeset.
- Adds a
ReleaseGitHub Actions workflow to runchangesets/actionon pushes tomainand move floating tags. - Updates README guidance to recommend pinning to released tags instead of
@main.
Reviewed changes
Copilot reviewed 5 out of 7 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
pnpm-lock.yaml |
Adds pnpm lockfile for the new root package + Changesets tooling. |
package.json |
Defines private root package + Changesets scripts and pnpm version. |
README.md |
Updates consumer pinning guidance and documents the intended tag strategy. |
.gitignore |
Ignores node_modules and a few local tool artifacts. |
.github/workflows/release.yml |
Adds Changesets-driven release workflow and a job to move floating tags. |
.changeset/initial-major-release.md |
Seeds the first “major” release notes / bump. |
.changeset/config.json |
Adds Changesets configuration including private package tagging/versioning. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Summary
Adds release automation to this repo using changesets — same tool already used in chillpass / lsp-indexer / LSPs, so the release flow is identical across the org.
@chillwhales/github-workflows(not published, just gives changesets a version to track)..changeset/config.json+ an initial major-bump changeset to take the first release from0.1.0→1.0.0..github/workflows/release.ymlrunschangesets/actionon push tomain. It opens a "Version Packages" PR; merging that PR updatespackage.json, regeneratesCHANGELOG.md, and tagsvX.Y.Z.tag-majorjob listens for the published release and force-updates the floatingvNandvN.Mtags so consumers can pin to@v1.Why changesets (not release-please)
Org consistency. Same workflow shape across every chillwhales repo — write a changeset on each PR, merge the auto-opened Release PR to ship.
After this merges
1.0.0.v1.0.0and force-createsv1+v1.0.@v1.Test plan
v1.0.0,v1, andv1.0tags exist on the same SHA.