From 45a28f1584438c67c067ae09b83feeccc5d1d6b3 Mon Sep 17 00:00:00 2001 From: xuqingkai Date: Fri, 1 Sep 2023 18:07:33 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=F0=9F=9A=80=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=A2=9E=E5=8A=A0=E6=98=BE=E7=A4=BAdocs?= =?UTF-8?q?=E5=92=8Cperf=E7=B1=BB=E5=9E=8B=E7=9A=84=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E5=A2=9E=E5=8A=A0github=20release=E7=9A=84jo?= =?UTF-8?q?b?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/release.yml | 101 ++++++++++++++++++++++++++++++++++ .versionrc | 4 +- 2 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..5d6648f0 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,101 @@ +name: Create Release Tag + +on: + push: + tags: + - 'v*' # 推送标签,比如 v1.0, v20.15.10 + +jobs: + build: + name: 创建发布 + runs-on: ubuntu-latest + + steps: + - name: 检出代码 + uses: actions/checkout@v2 + + - name: 获取当前和上一个标签 + id: get_tags + run: | + git fetch --prune --unshallow + tags=($(git tag -l --sort=-version:refname)) + current_tag=${tags[0]} + previous_tag=${tags[1]} + echo "::set-output name=current_tag::$current_tag" + echo "::set-output name=previous_tag::$previous_tag" + + - name: 提取并分类提交消息 + id: extract_commit_messages + run: | + set -e + current_tag="${{ steps.get_tags.outputs.current_tag }}" + previous_tag="${{ steps.get_tags.outputs.previous_tag }}" + commit_messages=$(git log --pretty=format:"%s %h" "$previous_tag".."$current_tag" | grep -E 'feat|fix|docs|perf') + feat_messages=$(echo "$commit_messages" | grep 'feat' || true) + fix_messages=$(echo "$commit_messages" | grep 'fix' || true) + docs_messages=$(echo "$commit_messages" | grep 'docs' || true) + perf_messages=$(echo "$commit_messages" | grep 'perf' || true) + echo "::set-output name=feat_messages::${feat_messages[@]}" + echo "::set-output name=fix_messages::${fix_messages[@]}" + echo "::set-output name=docs_messages::${docs_messages[@]}" + echo "::set-output name=perf_messages::${perf_messages[@]}" + + - name: 获取当前分支名 + id: get_branch_name + run: | + branch_name=$(git rev-parse --abbrev-ref HEAD) + echo "::set-output name=branch_name::$branch_name" + + - name: 发布说明 + id: generate_release_notes + run: | + # 提取提交消息分类 + feat_messages=("${{ steps.extract_commit_messages.outputs.feat_messages }}") + fix_messages=("${{ steps.extract_commit_messages.outputs.fix_messages }}") + docs_messages=("${{ steps.extract_commit_messages.outputs.docs_messages }}") + perf_messages=("${{ steps.extract_commit_messages.outputs.perf_messages }}") + + # 生成发布说明的Markdown字符串 + release_notes="> 请查看 [更新日志](./CHANGELOG.md) 获取所有变更详情。 \n## 更新内容: \n" + + if [[ -n "$feat_messages" ]]; then + release_notes="$release_notes\n### ✨ Features | 新功能: \n" + for message in "${feat_messages[@]}"; do + release_notes="$release_notes\n- $message" + done + fi + + if [[ -n "$fix_messages" ]]; then + release_notes="$release_notes\n### 🐛 Bug Fixes | Bug 修复: \n" + for message in "${fix_messages[@]}"; do + release_notes="$release_notes\n- $message" + done + fi + + if [[ -n "$docs_messages" ]]; then + release_notes="$release_notes\n### ✏️ Documentation | 文档: \n" + for message in "${docs_messages[@]}"; do + release_notes="$release_notes\n- $message" + done + fi + + if [[ -n "$perf_messages" ]]; then + release_notes="$release_notes\n### ⚡ Performance Improvements | 性能优化: \n" + for message in "${perf_messages[@]}"; do + release_notes="$release_notes\n- $message" + done + fi + echo "::set-output name=release_notes::$release_notes" + + + - name: 写入生成的发布说明到 changelog.md + run: | + echo -e "${{ steps.generate_release_notes.outputs.release_notes }}" > changelog.md + cat changelog.md + + - name: 创建标签的发布 + id: release_tag + uses: ncipollo/release-action@v1 + with: + generateReleaseNotes: "false" # 禁用自动生成发布说明 + bodyfile: changelog.md diff --git a/.versionrc b/.versionrc index d2e3b3dc..132a038e 100644 --- a/.versionrc +++ b/.versionrc @@ -18,7 +18,7 @@ { "type": "docs", "section": "✏️ Documentation | 文档", - "hidden": true + "hidden": false }, { "type": "style", @@ -33,7 +33,7 @@ { "type": "perf", "section": "⚡ Performance Improvements | 性能优化", - "hidden": true + "hidden": false }, { "type": "test",