Update Draft Release

Automatically update draft releases when PRs are merged. Maintain a cumulative changelog with smart versioning and automatic tagging.

Release Management, Simplified

Focus on code, not changelog maintenance

📝

Cumulative Changelog

Automatically appends PR entries to existing draft releases, building your release notes incrementally.

🏷️

Automatic Tagging

Tags merge commits with version numbers and associates them with the correct draft release.

🔢

Smart Versioning

Groups all v1.2.x changes under a single v1.2 draft release for easy management.

🔗

Full Changelog Links

Generates comparison URLs between versions automatically for easy code review.

♻️

Idempotent

Safe to run multiple times. Skips existing tags and gracefully handles edge cases.

⚙️

Configurable

Override PR details, skip tagging, or customize behavior for your specific workflow.

Quick Start

Add to your workflow in minutes

name: Update Draft Release
on:
  pull_request:
    types: [closed]
    branches: [dev, main]

jobs:
  release:
    if: github.event.pull_request.merged == true
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Get version
        id: version
        run: |
          # Your versioning logic here
          echo "future-version=1.2.3" >> $GITHUB_OUTPUT
          echo "stable-version=1.2.0" >> $GITHUB_OUTPUT

      - name: Update draft release
        uses: starburst997/draft-release@v1
        with:
          future-version: ${{ steps.version.outputs.future-version }}
          stable-version: ${{ steps.version.outputs.stable-version }}
        

Reference

Complete action inputs and outputs

Required Inputs

future-versionREQUIRED
Version for the new tag (without 'v', e.g., 1.2.3)

Optional Inputs

token
GitHub token with repo and contents permissions
Default: ${{ github.token }}
stable-version
Latest stable version for changelog comparison
Default: '' (empty)
skip-tagging
Skip git tag creation
Default: false
pr-title
Pull request title
Default: Auto-detected
pr-user
Pull request author
Default: Auto-detected

Outputs

release-tag
The tag that was created or updated (e.g., v1.2.3)
release-title
The release title (e.g., v1.2)
release-url
URL to the draft release

Example Output

## What's Changed

* Add user auth by @alice in #42
* Fix login by @bob in #43
* Update deps by @charlie in #44

**Full Changelog**: v1.1.0...v1.2.3