Add changelog to Github Actions releases
Using Github Actions you can create new releases in Github easily. This is done by using Create a Release Action.
You can add Markdown to the body
of this Action. One common detail that is usually included with releases is the list of the changes from last release. After doing some research and many pushes to Github I found the solution and I thought it would be a good idea to put it somewhere!
name: Release-Me
on:
push:
tags:
- '*'
jobs:
release:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- name: Get the version
id: get_version
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
shell: bash
- name: Get changes
id: get_changes
run: echo ::set-output name=changes::$(git log --oneline $(git describe --tags --abbrev=0 @^)..@ | sed 's/$/%0A/')
shell: bash
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.get_version.outputs.VERSION }}
release_name: ${{ steps.get_version.outputs.VERSION }}
body: |
## Changelog
${{ steps.get_changes.outputs.changes }}
draft: true
prerelease: true
This will list all the changes from current to last git tag
. It is very important to set fetch-depth
to 0
so the git
history is loaded for the branch.
One thing that took me some time to figure out was that following characters have to be escaped and the runner will unescape them in reverse.
%
to%25
\n
to%0A
\r
to%0D