mirror of
https://github.com/woodchen-ink/obsidian-publish-to-discourse.git
synced 2025-07-17 21:32:05 +08:00
102 lines
3.7 KiB
YAML
102 lines
3.7 KiB
YAML
name: Release Obsidian plugin
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "*"
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "20.x"
|
|
|
|
- name: Build plugin
|
|
run: |
|
|
npm install
|
|
npm run build
|
|
|
|
- name: Generate release notes
|
|
id: release_notes
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
tag="${GITHUB_REF#refs/tags/}"
|
|
|
|
# 获取上一个标签
|
|
previous_tag=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
|
|
|
|
# 生成发布说明
|
|
# 获取上一个标签
|
|
if [ -n "$previous_tag" ]; then
|
|
echo "## 🚀 更新内容 / What's Changed" > release_notes.md
|
|
echo "" >> release_notes.md
|
|
|
|
# 分析提交类型并分类显示
|
|
echo "### ✨ 新增功能 / New Features:" >> release_notes.md
|
|
git log --pretty=format:"%s" "$previous_tag"..HEAD | grep -i "^feat\|^add\|^新增\|^功能" | sed 's/^/- /' >> release_notes.md || echo "- 暂无" >> release_notes.md
|
|
echo "" >> release_notes.md
|
|
|
|
echo "### 🐛 问题修复 / Bug Fixes:" >> release_notes.md
|
|
git log --pretty=format:"%s" "$previous_tag"..HEAD | grep -i "^fix\|^bug\|^修复\|^修正" | sed 's/^/- /' >> release_notes.md || echo "- 暂无" >> release_notes.md
|
|
echo "" >> release_notes.md
|
|
|
|
echo "### 🔧 改进优化 / Improvements:" >> release_notes.md
|
|
git log --pretty=format:"%s" "$previous_tag"..HEAD | grep -i "^improve\|^update\|^优化\|^改进\|^更新" | sed 's/^/- /' >> release_notes.md || echo "- 暂无" >> release_notes.md
|
|
echo "" >> release_notes.md
|
|
|
|
echo "### 📝 所有提交 / All Commits:" >> release_notes.md
|
|
git log --pretty=format:"- %s ([%h](https://github.com/${{ github.repository }}/commit/%H))" "$previous_tag"..HEAD >> release_notes.md
|
|
echo "" >> release_notes.md
|
|
|
|
echo "### 📂 变更文件 / Changed Files:" >> release_notes.md
|
|
git diff --name-only "$previous_tag"..HEAD | sed 's/^/- `/' | sed 's/$/`/' >> release_notes.md
|
|
|
|
echo "" >> release_notes.md
|
|
echo "---" >> release_notes.md
|
|
echo "**完整变更日志**: https://github.com/${{ github.repository }}/compare/$previous_tag...$tag" >> release_notes.md
|
|
else
|
|
# 首次发布时使用 GitHub 自动生成的发布说明
|
|
echo "" > release_notes.md
|
|
fi
|
|
|
|
- name: Create release
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
tag="${GITHUB_REF#refs/tags/}"
|
|
previous_tag=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
|
|
|
|
files=()
|
|
for file in main.js manifest.json styles.css; do
|
|
if [ -f "$file" ]; then
|
|
files+=("$file")
|
|
else
|
|
echo "Warning: $file not found"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
if [ -n "$previous_tag" ]; then
|
|
# 有上一个标签,使用自定义发布说明
|
|
gh release create "$tag" \
|
|
--title="Release $tag" \
|
|
--notes-file release_notes.md \
|
|
"${files[@]}"
|
|
else
|
|
# 首次发布,使用 GitHub 自动生成的发布说明
|
|
gh release create "$tag" \
|
|
--title="Release $tag" \
|
|
--generate-notes \
|
|
"${files[@]}"
|
|
fi
|