This document describes how to create a new release of linear-release.
- 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 pnpmmust be installed- Immutable releases must be enabled in the repository settings
Run the release script with the target version:
pnpm release <version>For example:
pnpm release 0.7.0The version must follow MAJOR.MINOR.PATCH format (e.g., 0.7.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 that the version format is correct
- 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
package.json - Commits the change and pushes the branch
- Opens a PR against
mainviagh pr create
Review and merge the PR as usual. The PR only contains the package.json version bump.
When a PR from a release/* branch is merged into main, the Auto-tag release workflow (.github/workflows/auto-tag-release.yml) runs automatically:
- Validates the version from the branch name matches
package.json - Creates and pushes a
v<version>tag on the merge commit - Triggers the release workflow
The Release workflow (.github/workflows/release.yml) is triggered by the new tag and:
- Builds platform-specific executables (linux-x64, linux-arm64, darwin-x64, darwin-arm64) using Bun
- Code signs and notarizes the macOS binaries
- Generates and validates
checksums.txtfor the final executables - Creates a draft GitHub Release and attaches all executables and the checksum manifest
- Publishes the completed draft as an immutable release
After publication, release assets cannot be changed or deleted and the associated tag cannot be moved. If a published artifact is incorrect, fix the issue and publish a new patch version instead of replacing the existing asset.
After publishing the new release, go to linear-release-action and update the default pinned CLI version to the release you just created. When you've done so, publish a new release for the GitHub action as well.