The universal Sentry release CLI π
193
stars
1,300
commits
TypeScript
primary language
Sep 5, 2026
updated
Craft is a command line tool that helps automate and pipeline package releases. It enforces a specific workflow for managing release branches, changelogs, and artifact publishing.
π Full Documentation
Download the latest binary release, or install via npm:
npm install -g @sentry/craft
# Auto-determine version from conventional commits
craft prepare auto
# Or specify a version explicitly
craft prepare 1.2.3
# Publish to all configured targets
craft publish 1.2.3
Create a .craft.yml in your project root:
minVersion: '2.0.0'
changelog:
policy: auto
targets:
- name: github
- name: npm
access: public
See the configuration reference for all options.
| Target | Description |
|---|---|
github | GitHub releases and tags |
npm | NPM registry (with workspace support) |
pypi | Python Package Index |
crates | Rust crates.io |
nuget | .NET NuGet |
docker | Docker registries |
brew | Homebrew formulas |
gcs | Google Cloud Storage |
gh-pages | GitHub Pages |
cocoapods | CocoaPods |
gem | RubyGems |
maven | Maven Central |
hex | Elixir Hex |
pub-dev | Dart/Flutter pub.dev |
aws-lambda-layer | AWS Lambda layers |
powershell | PowerShell Gallery |
See the targets documentation for configuration details.
Craft provides GitHub Actions for automating releases and previewing changelog entries.
Automates the craft prepare workflow in GitHub Actions:
name: Release
on:
workflow_dispatch:
inputs:
version:
description: 'Version to release (or "auto")'
required: false
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: getsentry/craft@v2
with:
version: ${{ github.event.inputs.version }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Inputs:
| Input | Description | Default |
|---|---|---|
version | Version to release (semver, "auto", "major", "minor", "patch") | Uses versioning.policy from config |
merge_target | Target branch to merge into | Default branch |
force | Force release even with blockers | false |
blocker_label | Label that blocks releases | release-blocker |
publish_repo | Repository for publish issues. Use "self" to create issues in the source repository itself. | {owner}/publish |
Outputs:
| Output | Description |
|---|---|
version | The resolved version being released |
branch | The release branch name |
sha | The commit SHA on the release branch |
changelog | The changelog for this release |
Posts a preview comment on PRs showing how they'll appear in the changelog:
name: Changelog Preview
on:
pull_request:
types: [opened, synchronize, reopened, edited, labeled]
jobs:
changelog-preview:
uses: getsentry/craft/.github/workflows/changelog-preview.yml@v2
secrets: inherit
The workflow will:
See CONTRIBUTING.md for development setup and guidelines.
MIT
(top 30 of 57)
TypeScript
99.0%
The universal Sentry release CLI π
193
stars
1,300
commits
TypeScript
primary language
Sep 5, 2026
updated
Craft is a command line tool that helps automate and pipeline package releases. It enforces a specific workflow for managing release branches, changelogs, and artifact publishing.
π Full Documentation
Download the latest binary release, or install via npm:
npm install -g @sentry/craft
# Auto-determine version from conventional commits
craft prepare auto
# Or specify a version explicitly
craft prepare 1.2.3
# Publish to all configured targets
craft publish 1.2.3
Create a .craft.yml in your project root:
minVersion: '2.0.0'
changelog:
policy: auto
targets:
- name: github
- name: npm
access: public
See the configuration reference for all options.
| Target | Description |
|---|---|
github | GitHub releases and tags |
npm | NPM registry (with workspace support) |
pypi | Python Package Index |
crates | Rust crates.io |
nuget | .NET NuGet |
docker | Docker registries |
brew | Homebrew formulas |
gcs | Google Cloud Storage |
gh-pages | GitHub Pages |
cocoapods | CocoaPods |
gem | RubyGems |
maven | Maven Central |
hex | Elixir Hex |
pub-dev | Dart/Flutter pub.dev |
aws-lambda-layer | AWS Lambda layers |
powershell | PowerShell Gallery |
See the targets documentation for configuration details.
Craft provides GitHub Actions for automating releases and previewing changelog entries.
Automates the craft prepare workflow in GitHub Actions:
name: Release
on:
workflow_dispatch:
inputs:
version:
description: 'Version to release (or "auto")'
required: false
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: getsentry/craft@v2
with:
version: ${{ github.event.inputs.version }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Inputs:
| Input | Description | Default |
|---|---|---|
version | Version to release (semver, "auto", "major", "minor", "patch") | Uses versioning.policy from config |
merge_target | Target branch to merge into | Default branch |
force | Force release even with blockers | false |
blocker_label | Label that blocks releases | release-blocker |
publish_repo | Repository for publish issues. Use "self" to create issues in the source repository itself. | {owner}/publish |
Outputs:
| Output | Description |
|---|---|
version | The resolved version being released |
branch | The release branch name |
sha | The commit SHA on the release branch |
changelog | The changelog for this release |
Posts a preview comment on PRs showing how they'll appear in the changelog:
name: Changelog Preview
on:
pull_request:
types: [opened, synchronize, reopened, edited, labeled]
jobs:
changelog-preview:
uses: getsentry/craft/.github/workflows/changelog-preview.yml@v2
secrets: inherit
The workflow will:
See CONTRIBUTING.md for development setup and guidelines.
MIT
(top 30 of 57)
TypeScript
99.0%