58 lines
1.7 KiB
YAML

name: Create Release
on:
push:
tags:
- 'v*'
permissions: {}
jobs:
quality:
permissions:
contents: read
uses: ./.github/workflows/ci.yml
release:
needs: quality
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Resolve previous tag
id: tags
shell: bash
run: |
current="${GITHUB_REF_NAME}"
previous="$(git tag --list 'v*' --sort=-version:refname | grep -v "^${current}$" | head -n 1 || true)"
echo "current=${current}" >> "$GITHUB_OUTPUT"
echo "previous=${previous}" >> "$GITHUB_OUTPUT"
- name: Build release notes
shell: bash
run: |
current="${{ steps.tags.outputs.current }}"
previous="${{ steps.tags.outputs.previous }}"
if [ -n "$previous" ]; then
git log --pretty='- %s (%h)' "${previous}..${current}" > RELEASE_NOTES.md
else
git log --pretty='- %s (%h)' "${current}" > RELEASE_NOTES.md
fi
if [ ! -s RELEASE_NOTES.md ]; then
echo "- Release ${current}" > RELEASE_NOTES.md
fi
- name: Create GitHub release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.tags.outputs.current }}
name: Release ${{ steps.tags.outputs.current }}
body_path: RELEASE_NOTES.md
draft: false
prerelease: ${{ contains(steps.tags.outputs.current, '-alpha') || contains(steps.tags.outputs.current, '-beta') || contains(steps.tags.outputs.current, '-rc') }}