From d1934606496b38e04f3b0a1e5149543e229f93a5 Mon Sep 17 00:00:00 2001 From: Tunglies <77394545+Tunglies@users.noreply.github.com> Date: Sun, 9 Nov 2025 15:46:40 +0800 Subject: [PATCH] refactor: replace inline log fetching with dedicated script for better maintainability --- .github/workflows/autobuild.yml | 30 ++--------------------- .github/workflows/release.yml | 30 ++--------------------- Changelog.md | 2 +- scripts/extract_update_logs.sh | 43 +++++++++++++++++++++++++++++++++ 4 files changed, 48 insertions(+), 57 deletions(-) create mode 100755 scripts/extract_update_logs.sh diff --git a/.github/workflows/autobuild.yml b/.github/workflows/autobuild.yml index e839dc855..d8be39757 100644 --- a/.github/workflows/autobuild.yml +++ b/.github/workflows/autobuild.yml @@ -35,20 +35,7 @@ jobs: - name: Fetch UPDATE logs id: fetch_update_logs - run: | - if [ -f "Changelog.md" ]; then - UPDATE_LOGS=$(awk '/^## v/{if(flag) exit; flag=1} flag' Changelog.md) - if [ -n "$UPDATE_LOGS" ]; then - echo "Found update logs" - echo "UPDATE_LOGS<> $GITHUB_ENV - echo "$UPDATE_LOGS" >> $GITHUB_ENV - echo "EOF" >> $GITHUB_ENV - else - echo "No update sections found in Changelog.md" - fi - else - echo "Changelog.md file not found" - fi + run: bash ./scripts/extract_update_logs.sh shell: bash - uses: pnpm/action-setup@v4 @@ -509,20 +496,7 @@ jobs: - name: Fetch UPDATE logs id: fetch_update_logs - run: | - if [ -f "Changelog.md" ]; then - UPDATE_LOGS=$(awk '/^## v/{if(flag) exit; flag=1} flag' Changelog.md) - if [ -n "$UPDATE_LOGS" ]; then - echo "Found update logs" - echo "UPDATE_LOGS<> $GITHUB_ENV - echo "$UPDATE_LOGS" >> $GITHUB_ENV - echo "EOF" >> $GITHUB_ENV - else - echo "No update sections found in Changelog.md" - fi - else - echo "Changelog.md file not found" - fi + run: bash ./scripts/extract_update_logs.sh shell: bash - name: Install Node diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 59504436b..153a5f8c9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -73,20 +73,7 @@ jobs: - name: Fetch UPDATE logs id: fetch_update_logs - run: | - if [ -f "Changelog.md" ]; then - UPDATE_LOGS=$(awk '/^## v/{if(flag) exit; flag=1} flag' Changelog.md) - if [ -n "$UPDATE_LOGS" ]; then - echo "Found update logs" - echo "UPDATE_LOGS<> $GITHUB_ENV - echo "$UPDATE_LOGS" >> $GITHUB_ENV - echo "EOF" >> $GITHUB_ENV - else - echo "No update sections found in Changelog.md" - fi - else - echo "Changelog.md file not found" - fi + run: bash ./scripts/extract_update_logs.sh shell: bash - name: Set Env @@ -552,20 +539,7 @@ jobs: - name: Fetch UPDATE logs id: fetch_update_logs - run: | - if [ -f "Changelog.md" ]; then - UPDATE_LOGS=$(awk '/^## v/{if(flag) exit; flag=1} flag' Changelog.md) - if [ -n "$UPDATE_LOGS" ]; then - echo "Found update logs" - echo "UPDATE_LOGS<> $GITHUB_ENV - echo "$UPDATE_LOGS" >> $GITHUB_ENV - echo "EOF" >> $GITHUB_ENV - else - echo "No update sections found in Changelog.md" - fi - else - echo "Changelog.md file not found" - fi + run: bash ./scripts/extract_update_logs.sh shell: bash - name: Install Node diff --git a/Changelog.md b/Changelog.md index 52886dace..c03c99e33 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,4 +1,4 @@ -# v2.4.4 +## v2.4.4 ### 🐞 修复问题 diff --git a/scripts/extract_update_logs.sh b/scripts/extract_update_logs.sh new file mode 100755 index 000000000..1283cf3b0 --- /dev/null +++ b/scripts/extract_update_logs.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# +# extract_update_logs.sh +# 从 Changelog.md 提取最新版本 (## v...) 的更新内容 +# 并输出到屏幕或写入环境变量文件(如 GitHub Actions) + +set -euo pipefail + +CHANGELOG_FILE="Changelog.md" + +if [[ ! -f "$CHANGELOG_FILE" ]]; then + echo "❌ 文件不存在: $CHANGELOG_FILE" >&2 + exit 1 +fi + +# 提取从第一个 '## v' 开始到下一个 '## v' 前的内容 +UPDATE_LOGS=$(awk ' + /^## v/ { + if (found) exit; + found=1 + } + found +' "$CHANGELOG_FILE") + +if [[ -z "$UPDATE_LOGS" ]]; then + echo "⚠️ 未找到更新日志内容" + exit 0 +fi + +echo "✅ 提取到的最新版本日志内容如下:" +echo "----------------------------------------" +echo "$UPDATE_LOGS" +echo "----------------------------------------" + +# 如果在 GitHub Actions 环境中(GITHUB_ENV 已定义) +if [[ -n "${GITHUB_ENV:-}" ]]; then + { + echo "UPDATE_LOGS<> "$GITHUB_ENV" + echo "✅ 已写入 GitHub 环境变量 UPDATE_LOGS" +fi