Skip to content

Release

Release #47

Workflow file for this run

name: Release
on:
workflow_run:
workflows: [Debian package build]
types: [completed]
permissions:
contents: write
jobs:
release:
# Only run for successful tag pushes starting with 'mr'
# (package-build.yml only triggers 'push' events for tags, not branches)
if: >-
github.event.workflow_run.conclusion == 'success' &&
github.event.workflow_run.event == 'push' &&
startsWith(github.event.workflow_run.head_branch, 'mr')
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Download all build artifacts
uses: actions/download-artifact@v6
with:
path: packages
pattern: packages-*
merge-multiple: true
run-id: ${{ github.event.workflow_run.id }}
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Generate changelog
run: |
CURRENT_TAG="${{ github.event.workflow_run.head_branch }}"
PREVIOUS_TAG=$(git tag --list 'mr*' --sort=-version:refname | grep -A1 "^${CURRENT_TAG}$" | tail -1)
if [ "$PREVIOUS_TAG" = "$CURRENT_TAG" ] || [ -z "$PREVIOUS_TAG" ]; then
RANGE="$CURRENT_TAG"
else
RANGE="${PREVIOUS_TAG}..${CURRENT_TAG}"
fi
echo "Generating changelog for range: $RANGE"
echo "## Changes in ${CURRENT_TAG}" > release_notes.md
echo "" >> release_notes.md
if [ "$RANGE" != "$CURRENT_TAG" ]; then
echo "Changes since ${PREVIOUS_TAG}:" >> release_notes.md
echo "" >> release_notes.md
fi
git log --format='%aN' "$RANGE" | sort -u | while IFS= read -r author; do
echo "### $author" >> release_notes.md
echo "" >> release_notes.md
git log --format='* [%h] %s' --author="$author" "$RANGE" >> release_notes.md
echo "" >> release_notes.md
done
cat release_notes.md
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.event.workflow_run.head_branch }}
name: Release ${{ github.event.workflow_run.head_branch }}
body_path: release_notes.md
files: |
packages/*.deb
packages/*.tar.*