A focused GitHub Action for automated release notes and draft releases, built for teams using conventional commits.
SAVR is a lightweight GitHub Action that does two things really well:
- Automatically generates and updates draft releases with comprehensive release notes on every push
- Makes it easy to publish releases manually through GitHub's UI when you're ready
While there are many semantic versioning tools available, SAVR was created to solve specific pain points that other tools don't address:
Most semantic release tools try to do everything: automatically publish releases, manage changelogs, update package versions, and more. SAVR focuses on two core needs:
- Keeping your team informed about upcoming changes through live draft releases
- Making manual releases convenient through GitHub's UI
Unlike tools that only generate release notes when publishing, SAVR maintains an up-to-date draft release on every push. This means:
- Your team can see what's coming in the next release at any time
- No more surprises when releases are published
- Better visibility into project progress
Many tools force automated releases, which can be risky. SAVR:
- Lets you control exactly when to publish releases
- Works seamlessly with GitHub's release UI
- Maintains the flexibility to review and adjust before publishing
If you're already using conventional commits, SAVR:
- Leverages your existing commit messages
- Requires no additional configuration
- Keeps your workflow simple and familiar
- ๐ Live Draft Releases: Automatically updates draft releases with the latest changes on every push
- ๐ Transparent Changes: Team members can easily see what features and fixes will be in the next release
- ๐ฏ Manual Release Control: Publish releases when you're ready through GitHub's UI
- ๐ Conventional Commits: Leverages your existing commit messages to generate meaningful release notes
- ๐ท๏ธ Semantic Versioning: Automatically suggests the next version based on commit types
- ๐งช Dry-run Mode: Test changes without affecting your repository
name: Draft Release
on:
push:
branches:
- main
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Create Release Draft
uses: 21stdigital/savr-action@v1.0.1
with:
github-token: ${{ secrets.PAT_TOKEN }} # Personal Access Token with repo scope
# Optional configuration:
# tag-prefix: 'v'
# dry-run: false
# release-notes-template: |
# ## Release {{version}}
# {{#each commits}}
# - {{this.message}} ({{this.type}})
# {{/each}}| Input | Description | Required | Default |
|---|---|---|---|
github-token |
Personal Access Token (PAT) with repo scope for GitHub API authentication. The default GITHUB_TOKEN has insufficient permissions for creating releases. |
Yes | - |
tag-prefix |
The prefix for version tags | No | v |
release-branch |
The branch to use for the release | No | main |
dry-run |
Simulate the process without creating releases | No | false |
release-notes-template |
Template for release notes formatting | No | Default template |
initial-version |
The initial version to start from | No | 1.0.0 |
| Output | Description |
|---|---|
version |
The calculated version for the release |
release-url |
The URL of the created/updated draft release |
release-id |
The ID of the created/updated draft release |
The action follows these rules to determine version bumps:
- Major (
1.0.0): Breaking changes (feat!orBREAKING CHANGEin footer) - Minor (
0.1.0): New features (feat) - Patch (
0.0.1): Bug fixes (fix) - None: Other changes (no version bump)
Release notes are automatically generated and include:
- โจ Features
- ๐ Bug fixes
- ๐ฅ Breaking changes
- Contributors list
The default template format is:
Contributions are welcome! Please feel free to submit a Pull Request.
MIT