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