diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml index e298d13..170f5c7 100644 --- a/.forgejo/workflows/release.yml +++ b/.forgejo/workflows/release.yml @@ -84,11 +84,32 @@ jobs: ;; esac + # Build commit log since previous stable tag + previous_stable_tag="" + if previous_stable_tag="$( + git describe --tags --abbrev=0 \ + --exclude '*-rc*' \ + --exclude '*-beta*' \ + --exclude '*-alpha*' \ + "${current_tag}^" 2>/dev/null + )"; then + range="${previous_stable_tag}..${current_tag}" + else + range="${current_tag}" + fi + + { + cat release_notes.md + printf '\n\n## Commits\n\n' + git log --reverse --pretty=format:'- %h %s' "${range}" + printf '\n' + } > release_body.md + json_escape() { sed ':a;N;$!ba;s/\\/\\\\/g;s/"/\\"/g;s/\t/\\t/g;s/\r//g;s/\n/\\n/g' } - body="$(json_escape < release_notes.md)" + body="$(json_escape < release_body.md)" payload="$(printf '{"tag_name":"%s","name":"%s","body":"%s","draft":false,"prerelease":%s}' \ "${current_tag}" \ "${current_tag}" \