Skip to content

feat: automate releases with changesets + floating major tag#24

Open
b00ste wants to merge 4 commits into
mainfrom
feat/release-automation
Open

feat: automate releases with changesets + floating major tag#24
b00ste wants to merge 4 commits into
mainfrom
feat/release-automation

Conversation

@b00ste
Copy link
Copy Markdown
Member

@b00ste b00ste commented May 1, 2026

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.

  • New private root package @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 from 0.1.01.0.0.
  • .github/workflows/release.yml runs changesets/action on push to main. It opens a "Version Packages" PR; merging that PR updates package.json, regenerates CHANGELOG.md, and tags vX.Y.Z.
  • A tag-major job listens for the published release and force-updates the floating vN and vN.M tags 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. The release workflow opens a "chore(release): version packages" PR bumping to 1.0.0.
  2. Merging it tags v1.0.0 and force-creates v1 + v1.0.
  3. Consumer repos can then pin reusables to @v1.

Test plan

  • Workflow YAML parses (validated locally).
  • After merge, confirm changesets opens the Version Packages PR.
  • After Version PR merge, confirm v1.0.0, v1, and v1.0 tags exist on the same SHA.

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.
Copilot AI review requested due to automatic review settings May 1, 2026 09:46
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-please configuration + manifest to generate release PRs, CHANGELOG.md, and vX.Y.Z tags.
  • Add a GitHub Actions workflow that runs on pushes to main and, on release creation, force-updates floating major/minor tags.
  • Bootstrap the initial release as v1.0.0 via release-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.

Comment thread release-please-config.json Outdated
Comment thread .github/workflows/release-please.yml Outdated
Comment thread .github/workflows/release-please.yml Outdated
Comment thread .github/workflows/release-please.yml Outdated
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.
@b00ste b00ste changed the title feat: automate releases with release-please + floating major tag feat: automate releases with changesets + floating major tag May 1, 2026
- 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>
Copilot AI review requested due to automatic review settings May 1, 2026 10:42
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 Release GitHub Actions workflow to run changesets/action on pushes to main and 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.

Comment thread .github/workflows/release.yml
Comment thread .github/workflows/release.yml
Comment thread README.md
Comment thread .changeset/config.json Outdated
Comment thread .github/workflows/release.yml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants