Connect your deployments to Linear releases.
Automatically link issues to releases.
Note
This project is currently in beta and requires enrollment to use. If you're interested in trying it out or need assistance, please contact Linear support or your account manager. APIs and commands may change in future releases.
This action wraps the Linear Release CLI to integrate your CI/CD pipeline with Linear's release management. It automatically scans commits for Linear issue identifiers, detects pull request references, and creates or updates releases in Linear.
permissions:
contents: read
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Required for commit history
- uses: linear/linear-release-action@v0
with:
access_key: ${{ secrets.LINEAR_ACCESS_KEY }}| Input | Required | Default | Description |
|---|---|---|---|
access_key |
Yes | Linear pipeline access key for authentication | |
command |
No | sync |
Command to run: sync, complete, or update |
name |
No | Custom release name for sync. Continuous pipelines: used on create. Scheduled pipelines: used only when sync creates a release; existing release names are preserved. Ignored (with warning) for complete and update. |
|
version |
No | Release version identifier (alias: release_version) |
|
stage |
No | Deployment stage such as staging or production (required for update) |
|
include_paths |
No | Filter commits by file paths (comma-separated globs for monorepos) | |
cli_version |
No | v0.4.0 |
Linear Release CLI version tag to install |
cli_version can be set to latest to always download the newest CLI release. This is opt-in and may include breaking changes.
| Output | Description |
|---|---|
release-id |
The Linear release ID |
release-name |
The Linear release name |
release-version |
The Linear release version |
release-url |
URL to the Linear release |
Outputs are empty when no release is created (e.g. no matching commits found).
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: linear/linear-release-action@v0
id: release
with:
access_key: ${{ secrets.LINEAR_ACCESS_KEY }}
- name: Use release outputs
if: steps.release.outputs.release-url
run: echo "Release URL is ${{ steps.release.outputs.release-url }}"Creates or updates a release by scanning commits for Linear issue identifiers.
- uses: linear/linear-release-action@v0
with:
access_key: ${{ secrets.LINEAR_ACCESS_KEY }}Marks the current release as complete. Only applicable to scheduled pipelines, as continuous pipelines create releases in the completed stage automatically.
- uses: linear/linear-release-action@v0
with:
access_key: ${{ secrets.LINEAR_ACCESS_KEY }}
command: completeUpdates the deployment stage of the current release. Only applicable to scheduled pipelines, as continuous pipelines create releases in the completed stage automatically.
- uses: linear/linear-release-action@v0
with:
access_key: ${{ secrets.LINEAR_ACCESS_KEY }}
command: update
stage: staging| Command | With version |
Without version |
|---|---|---|
sync |
Targets matching version or creates that version | Continuous pipelines create a release with short SHA name/version. Scheduled pipelines use current started/planned flow. |
update |
Updates that exact release version | Updates latest started release, or latest planned release if no started release exists |
complete |
Completes that exact release version | Completes latest started release |
For scheduled pipelines, prefer always passing version in CI, especially when releases overlap.
Filter commits by file paths to track releases for specific packages:
- uses: linear/linear-release-action@v0
with:
access_key: ${{ secrets.LINEAR_ACCESS_KEY }}
include_paths: apps/web/**,packages/shared/**"Unsupported OS" or "Unsupported arch" error
The action only supports Linux x86_64 and macOS x86_64/arm64 runners. Windows is not supported.
"access_key input is required" error
Ensure you've set the access_key input with your Linear pipeline access key stored in GitHub Secrets.
Issues not being linked
Make sure your commits contain Linear issue identifiers (e.g., ENG-123) and that actions/checkout uses fetch-depth: 0.
name is ignored on non-sync commands
If name is provided with command: update or command: complete, the action prints a warning and continues. Use name with command: sync only.
MIT - see LICENSE