From c4ff4fea7eab25903a13124cdb368b710f3a0618 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 4 Mar 2026 01:19:34 +0800 Subject: [PATCH] ci(release): reorder release body and improve commits format - move v*.md release notes to top of release body - commits now show subject (bold) + body lines per Conventional Commits best practice --- .github/workflows/release.yml | 39 +++++++++++++++++------------------ 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d24a7f5..1f9ad26 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -339,9 +339,9 @@ jobs: LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "") if [ -n "$LAST_TAG" ]; then - COMMITS=$(git log ${LAST_TAG}..HEAD --pretty=format:"- %s" --no-merges -- plugins/ | head -20) + COMMITS=$(git log ${LAST_TAG}..HEAD --pretty=format:"- **%s**%n%b" --no-merges -- plugins/ | sed '/^$/d' | head -40) else - COMMITS=$(git log --pretty=format:"- %s" --no-merges -10 -- plugins/) + COMMITS=$(git log --pretty=format:"- **%s**%n%b" --no-merges -10 -- plugins/ | sed '/^$/d') fi { @@ -362,7 +362,22 @@ jobs: DOC_FILES: ${{ needs.check-changes.outputs.changed_doc_files }} run: | > release_notes.md - + + # 1. Release notes from v*.md files (highest priority, shown first) + if [ -n "$DOC_FILES" ]; then + RELEASE_NOTE_FILES=$(echo "$DOC_FILES" | grep -E '^plugins/.*/v[^/]*\.md$' | grep -v '_CN\.md$' || true) + if [ -n "$RELEASE_NOTE_FILES" ]; then + while IFS= read -r file; do + [ -z "$file" ] && continue + if [ -f "$file" ]; then + cat "$file" >> release_notes.md + echo "" >> release_notes.md + fi + done <<< "$RELEASE_NOTE_FILES" + fi + fi + + # 2. Plugin version changes detected by script if [ -n "$TITLE" ]; then echo "## $TITLE" >> release_notes.md echo "" >> release_notes.md @@ -375,6 +390,7 @@ jobs: echo "" >> release_notes.md fi + # 3. Commits (Conventional Commits format with body) if [ -n "$COMMITS" ]; then echo "## Commits" >> release_notes.md echo "" >> release_notes.md @@ -388,23 +404,6 @@ jobs: echo "$NOTES" >> release_notes.md echo "" >> release_notes.md fi - - if [ -n "$DOC_FILES" ]; then - # Only embed EN release-note files (v*.md), skip _CN.md to avoid mixed-language output - RELEASE_NOTE_FILES=$(echo "$DOC_FILES" | grep -E '^plugins/.*/v[^/]*\.md$' | grep -v '_CN\.md$' || true) - - if [ -n "$RELEASE_NOTE_FILES" ]; then - while IFS= read -r file; do - [ -z "$file" ] && continue - if [ -f "$file" ]; then - cat "$file" >> release_notes.md - echo "" >> release_notes.md - fi - done <<< "$RELEASE_NOTE_FILES" - fi - fi - - cat >> release_notes.md << 'EOF'