From 02cd2acd6e9eaaea611628cbd0f2d7c013ecbbc9 Mon Sep 17 00:00:00 2001 From: Leo Galambos Date: Sun, 6 Jul 2025 12:57:40 +0200 Subject: [PATCH] chore: release tags with `release@` prefix --- .gitea/workflows/release.yml | 44 +++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 420be21..8e414be 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -3,7 +3,7 @@ name: Release on: push: tags: - - 'conflux@*' + - 'release@*' jobs: release: @@ -38,9 +38,51 @@ jobs: name: conflux path: build/libs/*.jar + - name: Generate release notes + id: notes + run: | + current_tag="${{ github.ref_name }}" + + # strip the prefix for sorting, keep prefix for matching + prefix="release@" + + # get all matching tags, strip prefix, sort them + all_versions=$(git tag --list "${prefix}*" | sed "s/^${prefix}//" | sort -V) + + # find previous version + previous_tag="" + for v in $all_versions; do + if [[ "$prefix$v" == "$current_tag" ]]; then + break + fi + previous_tag="$prefix$v" + done + + if [[ -z "$previous_tag" ]]; then + range="" + else + range="$previous_tag..$current_tag" + fi + + echo "Comparing range: $range" + + body="## What's New" + + for category in "feat: Features" "fix: Bug Fixes" "docs: Documentation" "chore: Chores"; do + prefix="${category%%:*}" + title="${category##*: }" + entries=$(git log $range --pretty=format:"- %s" --grep="^$prefix" --no-merges) + if [[ -n "$entries" ]]; then + body="$body\n\n### $title\n$entries" + fi + done + + echo "$body" > /tmp/release_notes.md + - name: Create Gitea Release uses: softprops/action-gh-release@v2 with: files: build/libs/*.jar tag_name: ${{ github.ref_name }} name: Release ${{ github.ref_name }} + body_path: /tmp/release_notes.md