Release Regent automates the release process for projects using conventional commits. It handles semantic versioning, changelog generation, and GitHub release creation through a two-phase workflow triggered by pull request merges.
When you merge a regular pull request, Release Regent creates or updates a release PR with a calculated semantic version and generated changelog. When you merge that release PR, it creates a GitHub release with proper tags and release notes.
The tool uses conventional commit analysis to determine version bumps and handles version conflicts by never downgrading existing release PRs. Templates allow customization of release PR titles, bodies, and changelog formatting.
Release Regent implements a two-phase automated release workflow:
When a regular pull request is merged to your main branch:
- Webhook Processing: Release Regent receives the merge event
- Version Calculation: Analyzes commits since the last release using conventional commit standards
- Release PR Creation: Creates or updates a release PR with the calculated version and generated changelog
- Smart Updates: If a release PR already exists, intelligently updates it based on version comparison
When a release PR is merged:
- Release Detection: Automatically detects merged release PRs by branch pattern
- GitHub Release Creation: Creates a GitHub release with proper Git tags pointing to the merge commit
- Release Notes: Uses the accumulated changelog from the release PR as release notes
- Cleanup: Removes the release branch after successful release creation
- CLI Tool: Local development and testing of release workflows
- Webhook Server Integration: Webhook-based automation for GitHub repositories
- GitHub API Client: Handles all GitHub interactions with proper authentication and rate limiting
- Configuration System: Template-based customization of release PRs and changelog formatting
- π Tutorial - 15-minute hands-on introduction
- π Getting Started Guide - Step-by-step setup tutorial
- π§ GitHub App Setup - Tutorial for configuring GitHub integration
- π Webhook Integration - Tutorial for deploying webhook processing
- π Configuration Reference - Complete configuration options
- π οΈ CLI Reference - Command-line tool documentation
- π Troubleshooting Guide - Common issues and solutions
- π‘ Release Automation Guide - How the automated workflow works
- ποΈ Architecture Overview - System design and component relationships
# Install from source
cargo install --git https://github.com/pvandervelde/release_regent.git release-regent-cli
# Test installation
rr --version# Calculate next version from commits
rr version --current 1.2.0
# Generate changelog for a version
rr changelog --version 1.3.0
# Test complete workflow locally
rr test-workflow --dry-runFor complete setup instructions, see the Getting Started Guide.
Release Regent uses a multi-crate workspace architecture designed for modularity and deployment flexibility:
release_regent/
βββ crates/
β βββ core/ # Core logic and workflows
β βββ cli/ # Command-line interface
β βββ server/ # HTTP web server runtime
β βββ github_client/ # GitHub API integration
βββ docs/ # Documentation
Core Engine (release-regent-core): Contains the release orchestration logic, version calculation algorithms, and configuration management. This is where the main workflow intelligence resides.
CLI Tool (release-regent-cli): Published - Provides local testing capabilities and development workflow integration. Essential for validating configurations and testing release logic.
Server (release-regent-server): Published - Webhook processor that connects GitHub events to the core release workflows. Handles authentication, signature validation, and async processing.
GitHub Client (release-regent-github-client): Internal API client that handles all GitHub interactions with proper rate limiting, retry logic, and error handling.
Publication Model: Only the CLI tool and server binary are published for end users. The core and GitHub client components are internal implementation details that ensure clean separation of concerns.
Release Regent uses template-based configuration to customize the automated workflow:
[release_pr]
# Template for release PR titles
title_template = "chore(release): prepare version {version}"
# Template for release PR bodies
body_template = """
## Release {version}
### Changes
{changelog}
### Commits
- {commit_count} commits since last release
- Generated on {date}
"""
[versioning]
prefix = "v" # Creates tags like "v1.2.3"
allow_prerelease = true
[repository]
main_branch = "main"
release_branch_pattern = "release/v{version}"Template Variables Available:
{version}- Calculated semantic version (e.g., "1.2.3"){version_tag}- Version with prefix (e.g., "v1.2.3"){changelog}- Generated changelog content{commit_count}- Number of commits since last release{date}- Current date in ISO format
See Configuration Reference for complete options.
Release Regent is in active development implementing the complete automation workflow:
- Core version calculation with conventional commits
- CLI tool with basic workflows
- GitHub API client migrated to github-bot-sdk
- Trait-based architecture with GitOperations and GitHubOperations
- Configuration system foundation
- Azure Key Vault integration for secrets
- Release PR Management: Automated PR creation and updates
- Release Automation: GitHub release creation from merged release PRs
- Webhook Processing: Complete HTTP server integration
- Template System: Full customization capabilities
- Complete documentation and guides
- Production deployment templates
- Comprehensive error handling and monitoring
- CLI tool publication to crates.io
Target Timeline: Version 1.0 planned for Q3 2025
Release Regent welcomes contributions and follows standard Rust development practices:
# Clone and build
git clone https://github.com/pvandervelde/release_regent.git
cd release_regent
cargo build --workspace
# Run tests
cargo test --workspace
# Format and lint
cargo fmt && cargo clippy- Use conventional commit format for all commits
- Maintain test coverage above 90%
- Update documentation for new features
- All pull requests require CI/CD checks to pass
For detailed contribution guidelines, see CONTRIBUTING.md.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Made with Rust | Semantic Versioning | Conventional Commits