Skip to content

Automatically update your GitHub Releases from CHANGELOG.md (Keep a Changelog)

License

Notifications You must be signed in to change notification settings

dropseed/changerelease

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

changerelease

Automatically update your GitHub Releases from CHANGELOG.md.

This tool expects that you follow the Keep a Changelog format.

To use it:

  1. Keep a Changelog
  2. Git tag your versions
  3. Let the changerelease GitHub Action automatically keep your GitHub Releases updated

changerelease screenshot

Use the GitHub Action

name: changerelease
on:
  workflow_dispatch: {}
  push:
    paths: [CHANGELOG.md]
    branches: [master]
    tags: ["*"]

jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
    - uses: dropseed/changerelease@v1
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}
        # optional
        tag_prefix: v
        changelog: CHANGELOG.md

What if my changelog isn't in Markdown?

For changelogs written in reStructuredText or another syntax besides Markdown, you can run a conversion step before running changerelease. This can be a custom rendering script or something like pandoc to convert your changelog to Markdown. The only real expectation is that your version names are written in h2 headings (## {version_name}).

name: changerelease
on:
  workflow_dispatch: {}
  push:
    paths: [CHANGELOG.md]
    branches: [master]
    tags: ["*"]

jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2

    # Convert to markdown first
    # https://github.com/pandoc/pandoc-action-example
    - uses: docker://pandoc/core:2.14
      with:
        args: "CHANGELOG.rst -f rst -t markdown -o CR_CHANGELOG.md"

    - uses: dropseed/changerelease@v1
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}
        # optional
        tag_prefix: v
        changelog: CR_CHANGELOG.md
        remote_changelog: false