Skip to main content

release-pilot

Automated release management CLI — semantic versioning, changelog generation, and GitHub releases from conventional commits.

PyPI version Python 3.9+ License: MIT


Why release-pilot?

Release management is tedious. Version bumps, changelogs, git tags — it's manual, error-prone busywork. release-pilot automates the entire process using Conventional Commits:

  • Auto Version Bumps — Determines major/minor/patch from commit types
  • Changelog Generation — Creates formatted CHANGELOG.md from git history
  • Pre-release Checks — Validates clean tree, branch, remote, and commits
  • Multi-file Version Updates — Syncs version across pyproject.toml, package.json, init.py, Cargo.toml, etc.
  • Git Tag Creation — Creates annotated tags with release messages
  • Dry Run Mode — Preview everything before committing to changes
  • Commit Analytics — Visualize commit breakdown by type

Installation

pip install release-pilot-cli

Quick Start

# View what the next release would look like
release-pilot check

# Preview changelog from conventional commits
release-pilot changelog

# Create a release (dry run)
release-pilot release --dry-run

# Create a release for real
release-pilot release --yes

# Create and push release
release-pilot release --push --yes

Commands

release — Create a New Release

The main command. Analyzes commits, bumps version, generates changelog, creates tag.

release-pilot release                    # Auto-detect bump, confirm
release-pilot release --bump minor       # Force minor bump
release-pilot release --dry-run          # Preview only
release-pilot release --push --yes       # Release + push, no prompt
release-pilot release --branch main      # Require main branch
release-pilot release --no-changelog     # Skip changelog update
release-pilot release --no-version-update # Skip version file changes
Option Description
-b, --bump Force bump type: major, minor, or patch
-p, --push Push tag and commits to remote after release
-n, --dry-run Preview without making any changes
-y, --yes Skip confirmation prompt
--branch Require specific branch (e.g., main)
--no-changelog Skip CHANGELOG.md generation
--no-version-update Skip version file updates

check — Pre-release Validation

Run all checks without making changes:

release-pilot check
release-pilot check --branch main

Checks performed:

  • Git repository detection
  • Clean working tree (no uncommitted changes)
  • Branch validation (optional: require specific branch)
  • Remote origin configured
  • New commits exist since last tag
  • Conventional commits found

log — View Commit Summary

release-pilot log                  # Summary since last tag
release-pilot log --since v1.0.0   # Since specific tag
release-pilot log --show-all       # Show individual commits

changelog — Generate Changelog

release-pilot changelog                        # Preview in terminal
release-pilot changelog --output CHANGELOG.md  # Write to file
release-pilot changelog --bump minor           # Force version in header

version — Show Current Version

release-pilot version    # Shows git tag version + version files

Detects version in: pyproject.toml, package.json, __init__.py, setup.py, setup.cfg, Cargo.toml, VERSION, version.py

history — Release History

release-pilot history    # List all releases from git tags

bump — Manual Version Update

Set version across all project files without creating a release:

release-pilot bump 2.0.0
release-pilot bump 1.5.0 --dry-run

init — Commit Format Guide

release-pilot init    # Show conventional commit format reference

Conventional Commits

release-pilot uses Conventional Commits to determine version bumps automatically:

Commit Bump Example
feat: Minor feat: add search functionality
feat!: Major feat!: redesign API
fix: Patch fix: handle null input
perf: Patch perf: optimize query speed
docs: Patch docs: update README
refactor: Patch refactor: simplify auth flow
test: Patch test: add unit tests
chore: Patch chore: update dependencies
ci: Patch ci: add GitHub Actions workflow
build: Patch build: upgrade webpack

Scopes

Optional scope in parentheses:

feat(auth): add OAuth2 login
fix(parser): handle unicode
docs(api): add endpoint docs

Breaking Changes

Two ways to mark breaking changes (triggers major bump):

feat!: remove deprecated endpoints

# or with footer
feat: new config format

BREAKING CHANGE: old config format removed

Version Detection

release-pilot automatically finds and updates version strings in:

File Pattern
pyproject.toml version = "X.Y.Z"
package.json "version": "X.Y.Z"
__init__.py __version__ = "X.Y.Z"
setup.py version="X.Y.Z"
setup.cfg version = X.Y.Z
Cargo.toml version = "X.Y.Z"
VERSION X.Y.Z
version.py __version__ = "X.Y.Z" or VERSION = "X.Y.Z"

Workflow Example

# 1. Write code with conventional commits
git commit -m "feat(auth): add JWT support"
git commit -m "fix(db): connection pool leak"
git commit -m "docs: update API reference"

# 2. Check what the release looks like
release-pilot check

# 3. Preview the changelog
release-pilot changelog

# 4. Create the release
release-pilot release --yes --push

What happens:

  1. Commits analyzed → feat found → minor bump
  2. Version: 1.0.0 → 1.1.0
  3. CHANGELOG.md updated with grouped entries
  4. Version files updated (pyproject.toml, __init__.py, etc.)
  5. Changes committed: chore(release): 1.1.0
  6. Git tag created: v1.1.0
  7. Pushed to remote

Generated Changelog Format

## [1.1.0] - 2025-01-20

### Features

- **auth:** add JWT support (abc123d)
- add search functionality (def456g)

### Bug Fixes

- **db:** connection pool leak (ghi789j)

### Documentation

- update API reference (jkl012m)

Development

git clone https://github.com/SanjaySundarMurthy/release-pilot.git
cd release-pilot
pip install -e ".[dev]"
pytest tests/ -v

Author

Sanjay Sundar Murthy


License

MIT License — see LICENSE for details.

Metadata

Release files for release-pilot-cli 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for release-pilot-cli 1.0.0
File Size Uploaded Provenance
release_pilot_cli-1.0.0.tar.gz 29.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for release-pilot-cli 1.0.0
File Interpreter ABI Platform
release_pilot_cli-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 51.9 kB

Release files / release_pilot_cli-1.0.0.tar.gz

Download URL release_pilot_cli-1.0.0.tar.gz
Size 29.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c9518c9cbf5c5ca95267e643e589ce04799eaa7d8618b96b0ab83494adaff676
BLAKE2b-256 checksum
How to use checksums
498e75e60a17925816f0611c8bf41b0153c7b39c14293f8e495b502663c25ab0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.7

Release files / release_pilot_cli-1.0.0-py3-none-any.whl

Download URL release_pilot_cli-1.0.0-py3-none-any.whl
Size 23.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4704afe4151cb8501dd256dfbd6011ba4ee75a0df267507600a6ccb7821d56cd
BLAKE2b-256 checksum
How to use checksums
ef922f8eee01fc34e47ab8bf927a6b7b8f4d019c646f6a5fd2a75966a8619ceb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.7

Security for release-pilot-cli 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page