-
-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
Objective
Automate the entire release process: version checking, changelog generation, tag creation, and GitHub release publishing.
Current Workflow
- Manual version bump in Cargo.toml
- Merge to main
- Manual tag creation:
git tag v* && git push origin v* - Release workflow triggers and publishes to crates.io
- Manual changelog writing for GitHub release
Desired Workflow
After successful CI on main:
- Automatic version check: Compare Cargo.toml version with crates.io
- Automatic changelog generation: Collect commits since last release
- Automatic tag creation: Create and push version tag
- Automatic GitHub release: Create release with generated changelog
- Automatic crates.io publish: Existing release workflow triggers
Implementation Requirements
Changelog Generation
- Parse commits since last tag
- Group by type: feat, fix, perf, refactor, docs, chore, test, ci
- Format as markdown with links to commits
- Follow conventional commits format
- No AI mentions, emojis, or generated-by tags
Version Check Logic
- Only trigger if Cargo.toml version > crates.io version
- Use existing semver comparison logic from Add version comparison with crates.io before publishing #193
- Skip if versions are equal
Tag and Release
- Create annotated tag with version
- Generate GitHub release with:
- Version as title
- Changelog as body
- Links to commits and PRs
- Comparison with previous version
Success Criteria
- Automatic tag creation when version bumped
- Professional changelog from commits
- GitHub release with full details
- Seamless integration with existing release.yml
- No manual intervention needed
- All following instructions: English only, no AI mentions
Benefits
- Zero manual work: Push version bump, get full release
- Professional changelogs: Consistent format, complete history
- Never miss releases: Automatic detection and publishing
- Better documentation: Every release has detailed changelog
Metadata
Metadata
Assignees
Labels
No labels