Skip to content

Automate releases with changelog generation from commits #195

@RAprogramm

Description

@RAprogramm

Objective

Automate the entire release process: version checking, changelog generation, tag creation, and GitHub release publishing.

Current Workflow

  1. Manual version bump in Cargo.toml
  2. Merge to main
  3. Manual tag creation: git tag v* && git push origin v*
  4. Release workflow triggers and publishes to crates.io
  5. Manual changelog writing for GitHub release

Desired Workflow

After successful CI on main:

  1. Automatic version check: Compare Cargo.toml version with crates.io
  2. Automatic changelog generation: Collect commits since last release
  3. Automatic tag creation: Create and push version tag
  4. Automatic GitHub release: Create release with generated changelog
  5. 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

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions