This document describes how to cut a new release of linear-release-action.
Cut a new release whenever main has changes that should be picked up by consumers — most commonly after the linear-release CLI ships a new version that the action should default to.
- You must be on the
mainbranch with a clean working tree, up to date withorigin/main - The GitHub CLI (
gh) must be installed and authenticated
Run the release script with the target version:
./scripts/release.sh <version>For example:
./scripts/release.sh 0.10.0The version must follow MAJOR.MINOR.PATCH format (e.g., 0.10.0, 1.0.0).
The release script (scripts/release.sh) and CI workflows handle the full process:
The script runs preflight checks and then:
- Validates the version format
- Checks that
ghis installed and authenticated - Verifies the working tree is clean, you're on
main, and it's up to date withorigin/main - Ensures the
v<version>tag andrelease/<version>branch don't already exist - Creates a
release/<version>branch - Bumps the version in
VERSION, thecli_versiondefault inaction.yml, and the inputs table inREADME.md - Commits the change and pushes the branch
- Opens a PR against
mainviagh pr create
Review and merge the PR as usual. The PR contains the version bumps only.
When a PR from a release/* branch is merged into main, the Auto-tag release workflow runs automatically:
- Validates that the branch version matches the
VERSIONfile onmain - Creates and pushes the
v<version>tag - Triggers the Release workflow
The Release workflow then:
- Validates the tag format
- Force-updates the floating
v<major>tag (e.g.v0) to the same commit so consumers usinglinear/linear-release-action@v0pick up the change automatically - Creates a GitHub Release with auto-generated notes from the merged PRs since the previous tag
- Consumers reference this action as
linear/linear-release-action@v0(the floating major tag), so the major-tag move is the load-bearing step. Without it, consumers stay on whichever commit the major tag previously pointed to. - The source of truth for the action's version is
VERSION; the auto-tag workflow fails if the branch name andVERSIONfile disagree. - The script bumps the
cli_versiondefault to match the action version. If you need a release where these diverge, edit the release branch by hand before merging the PR — the auto-tag workflow validates theVERSIONfile, notcli_version.