ci(release): generate formatted markdown changelog and release notes for each release
Release / Build & Release (push) Canceled after 0s

This commit is contained in:
kory
2026-09-28 10:30:27 +08:00
parent 8d8b201498
commit 16ece31d57
+13 -9
View File
@@ -20,13 +20,11 @@ jobs:
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Determine Version Tag & Generate Notes - name: Determine Version Tag & Generate Notes
id: versioning id: versioning
run: | run: |
PREV_TAG=$(git tag -l "v*" --sort=-v:refname | head -n1) PREV_TAG=$(git tag -l "v*" --sort=-v:refname | head -n1)
if [ -z "$PREV_TAG" ]; then echo "Previous tag: $PREV_TAG"
PREV_TAG=""
fi
if [[ "${{ github.ref }}" == refs/tags/v* ]]; then if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
TAG="${GITHUB_REF#refs/tags/}" TAG="${GITHUB_REF#refs/tags/}"
@@ -48,17 +46,23 @@ jobs:
fi fi
echo "tag=$TAG" >> $GITHUB_OUTPUT echo "tag=$TAG" >> $GITHUB_OUTPUT
# 生成有意义的变更日志内容 # 生成详细的 Release Changelog 正文
echo "### 🚀 What's Changed in ${TAG}" > release_notes.md cat << NOTES > release_notes.md
echo "" >> release_notes.md ### 🚀 What's Changed in ${TAG}
NOTES
if [ -n "$PREV_TAG" ]; then if [ -n "$PREV_TAG" ]; then
git log "${PREV_TAG}..HEAD" --pretty=format:"- %s (%h by @%an)" >> release_notes.md git log "${PREV_TAG}..HEAD" --pretty=format:"- %s (%h by @%an)" >> release_notes.md
else else
git log -n 10 --pretty=format:"- %s (%h by @%an)" >> release_notes.md git log -n 10 --pretty=format:"- %s (%h by @%an)" >> release_notes.md
fi fi
echo "" >> release_notes.md echo "" >> release_notes.md
echo "" >> release_notes.md echo "" >> release_notes.md
echo "**Full Changelog**: https://github.com/${{ github.repository }}/compare/${PREV_TAG}...${TAG}" >> release_notes.md if [ -n "$PREV_TAG" ]; then
echo "**Full Changelog**: https://github.com/${{ github.repository }}/compare/${PREV_TAG}...${TAG}" >> release_notes.md
fi
cat release_notes.md cat release_notes.md
- name: Set up Go - name: Set up Go
@@ -82,7 +86,7 @@ jobs:
sha256sum * > checksums.txt sha256sum * > checksums.txt
cd .. cd ..
- name: Create GitHub Release - name: Create GitHub Release
uses: softprops/action-gh-release@v2 uses: softprops/action-gh-release@v2
with: with:
tag_name: ${{ steps.versioning.outputs.tag }} tag_name: ${{ steps.versioning.outputs.tag }}