Commits Log & Release

Generate changelogs from commits between releases and automatically create GitHub releases

Key Features

Streamline your release workflow with intelligent changelog generation

🏷️

Smart Tag Detection

Automatically detects version tags and commit ranges to generate changelogs with zero configuration

📝

Flexible Formatting

Simple or grouped changelog formats with support for conventional commits and custom titles

🚀

Complete Release Automation

Create tags, GitHub releases, and upload artifacts in a single workflow step

📋

Draft Release Detection

Automatically detects existing draft releases and publishes them with updated version information

Quick Start

Get started in minutes

Basic Usage - Generate Changelog Only

- uses: starburst997/commits-logs@v1 id: changelog - run: echo "${{ steps.changelog.outputs.changelog }}"

Create Release with Changelog

- uses: starburst997/commits-logs@v1 with: create-release: true create-tag: true

Full Example Workflow

name: Release on: push: branches: - main jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 # Required for tag detection - name: Generate changelog and create release uses: starburst997/commits-logs@v1 with: format: grouped create-tag: true create-release: true

Changelog Output

See what the generated changelogs look like

Simple Format

## Changes - Add user authentication (a1b2c3d) - Fix login bug (e4f5g6h) - Update documentation (i7j8k9l)

Grouped Format

## Changes ### Features - user authentication (a1b2c3d) - two-factor auth support (m1n2o3p) ### Bug Fixes - login redirect issue (e4f5g6h) - session timeout bug (q4r5s6t) ### Documentation - API usage guide (i7j8k9l) ### Other Changes - Refactor auth module (u7v8w9x)

Documentation

Complete reference for all inputs and outputs

Inputs

Input Description Default
from-tag Starting tag (auto-detects latest vX.Y.Z if not provided) (auto)
to-tag Ending tag/ref HEAD
format Changelog format: simple or grouped simple
include-merge-commits Include merge commits in changelog false
changelog-title Title for the changelog section ## Changes
create-tag Create a new tag (auto-increments from latest) false
version-bump Version bump type: patch, minor, or major patch
new-tag Tag name for new release (auto-increments if not provided) (auto)
create-release Create a GitHub release false
release-name Release name (supports {tag} variable) Release {tag}
release-body Custom release body (uses changelog if empty) (changelog)
draft Create draft release false
prerelease Mark as prerelease false
make-latest Mark as latest release true
generate-release-notes Use GitHub's automatic release notes false
artifacts Newline-delimited list of artifact paths (none)
artifact-content-type Content type for artifacts application/octet-stream
commit Commit to tag for release (current)
discussion-category-name Create discussion in specified category (none)
token GitHub token for releases ${{ github.token }}

Outputs

Output Description
changelog Generated changelog content
changelog-file Path to changelog file (CHANGELOG.md)
from-tag Tag used as starting point
to-tag Tag used as ending point
new-tag New tag created (if create-tag: true)
release-url URL of created release
release-id ID of created release