name: Create GitHub Release
on:
push:
tags:
- 'v*.*.*'
permissions:
contents: write
jobs:
release:
name: Create GitHub Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Extract release notes from CHANGELOG.md
id: extract-release-notes
run: |
VERSION=${GITHUB_REF#refs/tags/v}
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
# Extract changelog section for this version using sed
sed -n "/^## \[$VERSION\]/,/^## \[/p" CHANGELOG.md | sed '$d' > release_notes.md
# If empty, provide default message
if [ ! -s release_notes.md ]; then
echo "Release $VERSION" > release_notes.md
fi
{
echo 'notes<<EOF'
cat release_notes.md
echo EOF
} >> $GITHUB_OUTPUT
- name: Create GitHub Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release v${{ steps.extract-release-notes.outputs.VERSION }}
body: ${{ steps.extract-release-notes.outputs.notes }}
draft: false