mirror of
https://github.com/qingchencloud/clawpanel.git
synced 2026-06-13 19:50:08 +08:00
fix(release): use changelog for release notes
This commit is contained in:
76
.github/workflows/release.yml
vendored
76
.github/workflows/release.yml
vendored
@@ -267,35 +267,59 @@ jobs:
|
||||
CHANGELOG_HEADER="主要变更"
|
||||
fi
|
||||
|
||||
# 按 conventional commit 前缀分类
|
||||
get_logs() {
|
||||
local prefix="$1"
|
||||
if [ -n "$RANGE" ]; then
|
||||
git log "$RANGE" --pretty=format:"%s" --no-merges | { grep -iE "^${prefix}" || true; } | sed "s/^${prefix}[:(] */- /" | head -20
|
||||
else
|
||||
git log --pretty=format:"%s" --no-merges -30 | { grep -iE "^${prefix}" || true; } | sed "s/^${prefix}[:(] */- /" | head -20
|
||||
fi
|
||||
}
|
||||
# 优先使用人工整理的 CHANGELOG.md 当前版本段,避免 Release Notes 只显示 release commit。
|
||||
CHANGELOG_BODY=$(python3 - "$VERSION" <<'PY'
|
||||
import pathlib
|
||||
import re
|
||||
import sys
|
||||
|
||||
FEATS=$(get_logs "feat")
|
||||
FIXES=$(get_logs "fix")
|
||||
OTHERS=$(
|
||||
if [ -n "$RANGE" ]; then
|
||||
git log "$RANGE" --pretty=format:"%s" --no-merges | { grep -ivE "^(feat|fix|style|chore|ci|docs|test|build)" || true; } | sed 's/^/- /' | head -10
|
||||
else
|
||||
git log --pretty=format:"%s" --no-merges -30 | { grep -ivE "^(feat|fix|style|chore|ci|docs|test|build)" || true; } | sed 's/^/- /' | head -10
|
||||
fi
|
||||
version = sys.argv[1]
|
||||
path = pathlib.Path("CHANGELOG.md")
|
||||
if not path.exists():
|
||||
sys.exit(0)
|
||||
|
||||
text = path.read_text(encoding="utf-8")
|
||||
current = re.search(rf"^## \[{re.escape(version)}\](?:\s+-\s+.+)?\s*$", text, re.MULTILINE)
|
||||
if not current:
|
||||
sys.exit(0)
|
||||
|
||||
rest = text[current.end():]
|
||||
next_version = re.search(r"^## \[", rest, re.MULTILINE)
|
||||
section = rest[:next_version.start()] if next_version else rest
|
||||
print(section.strip())
|
||||
PY
|
||||
)
|
||||
|
||||
CHANGELOG_BODY=""
|
||||
if [ -n "$FEATS" ]; then
|
||||
CHANGELOG_BODY="${CHANGELOG_BODY}"$'\n### ✨ 新功能\n'"${FEATS}"$'\n'
|
||||
fi
|
||||
if [ -n "$FIXES" ]; then
|
||||
CHANGELOG_BODY="${CHANGELOG_BODY}"$'\n### 🐛 修复\n'"${FIXES}"$'\n'
|
||||
fi
|
||||
if [ -n "$OTHERS" ]; then
|
||||
CHANGELOG_BODY="${CHANGELOG_BODY}"$'\n### 📦 其他\n'"${OTHERS}"$'\n'
|
||||
if [ -z "$CHANGELOG_BODY" ]; then
|
||||
# CHANGELOG.md 缺失时,退回 conventional commit 前缀分类。
|
||||
get_logs() {
|
||||
local prefix="$1"
|
||||
if [ -n "$RANGE" ]; then
|
||||
git log "$RANGE" --pretty=format:"%s" --no-merges | { grep -iE "^${prefix}" || true; } | sed "s/^${prefix}[:(] */- /" | head -20
|
||||
else
|
||||
git log --pretty=format:"%s" --no-merges -30 | { grep -iE "^${prefix}" || true; } | sed "s/^${prefix}[:(] */- /" | head -20
|
||||
fi
|
||||
}
|
||||
|
||||
FEATS=$(get_logs "feat")
|
||||
FIXES=$(get_logs "fix")
|
||||
OTHERS=$(
|
||||
if [ -n "$RANGE" ]; then
|
||||
git log "$RANGE" --pretty=format:"%s" --no-merges | { grep -ivE "^(feat|fix|style|chore|ci|docs|test|build)" || true; } | sed 's/^/- /' | head -10
|
||||
else
|
||||
git log --pretty=format:"%s" --no-merges -30 | { grep -ivE "^(feat|fix|style|chore|ci|docs|test|build)" || true; } | sed 's/^/- /' | head -10
|
||||
fi
|
||||
)
|
||||
|
||||
if [ -n "$FEATS" ]; then
|
||||
CHANGELOG_BODY="${CHANGELOG_BODY}"$'\n### ✨ 新功能\n'"${FEATS}"$'\n'
|
||||
fi
|
||||
if [ -n "$FIXES" ]; then
|
||||
CHANGELOG_BODY="${CHANGELOG_BODY}"$'\n### 🐛 修复\n'"${FIXES}"$'\n'
|
||||
fi
|
||||
if [ -n "$OTHERS" ]; then
|
||||
CHANGELOG_BODY="${CHANGELOG_BODY}"$'\n### 📦 其他\n'"${OTHERS}"$'\n'
|
||||
fi
|
||||
fi
|
||||
if [ -z "$CHANGELOG_BODY" ]; then
|
||||
CHANGELOG_BODY=$'\n- 常规更新与优化\n'
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
格式遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),
|
||||
版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
||||
|
||||
## [未发布]
|
||||
|
||||
## [0.18.0] - 2026-06-06
|
||||
|
||||
### 新功能 (Features)
|
||||
|
||||
Reference in New Issue
Block a user