Skip to content
vic

dropseed/changerelease

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

dropseed/changerelease.json
{
"createdAt": "2020-09-06T02:50:31Z",
"defaultBranch": "master",
"description": "Automatically update your GitHub Releases from CHANGELOG.md (Keep a Changelog)",
"fullName": "dropseed/changerelease",
"homepage": "",
"language": "Python",
"name": "changerelease",
"pushedAt": "2022-09-26T15:35:06Z",
"stargazersCount": 28,
"topics": [
"changelog",
"changelog-parser",
"release",
"release-automation",
"release-notes"
],
"updatedAt": "2025-01-05T13:38:01Z",
"url": "https://github.com/dropseed/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]!(changerelease.png)

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

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