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
This commit is contained in:
fujie
2026-03-04 01:19:34 +08:00
parent 32afc3286e
commit c4ff4fea7e

View File

@@ -339,9 +339,9 @@ jobs:
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "") LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [ -n "$LAST_TAG" ]; then 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 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 fi
{ {
@@ -363,6 +363,21 @@ jobs:
run: | run: |
> release_notes.md > 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 if [ -n "$TITLE" ]; then
echo "## $TITLE" >> release_notes.md echo "## $TITLE" >> release_notes.md
echo "" >> release_notes.md echo "" >> release_notes.md
@@ -375,6 +390,7 @@ jobs:
echo "" >> release_notes.md echo "" >> release_notes.md
fi fi
# 3. Commits (Conventional Commits format with body)
if [ -n "$COMMITS" ]; then if [ -n "$COMMITS" ]; then
echo "## Commits" >> release_notes.md echo "## Commits" >> release_notes.md
echo "" >> release_notes.md echo "" >> release_notes.md
@@ -389,23 +405,6 @@ jobs:
echo "" >> release_notes.md echo "" >> release_notes.md
fi 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' cat >> release_notes.md << 'EOF'
## Download ## Download