From bfa0f00438177cea4a92ed5d1a7e3999a67fbd6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=9F=E6=98=8E=E5=8E=9F?= Date: Sat, 14 Mar 2026 23:31:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20Release=20=E6=AD=A3?= =?UTF-8?q?=E6=96=87=E7=BC=BA=E5=B0=91=20CHANGELOG=20=E5=86=85=E5=AE=B9?= =?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81=20-beta=20=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=90=8E=E7=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原因:electron-builder 拿到 GH_TOKEN 后会自动创建一个空内容的 Release, 导致 softprops 的 body_path 无法生效。移除 electron-builder 的 GH_TOKEN, 让 softprops/action-gh-release 独占负责 Release 创建和内容写入。 顺带修复 extract-release-notes.mjs 正则式只转义第一个点的 bug, 并更新 release.mjs 支持 0.x.x-beta / 0.x.x-rc.1 等版本号后缀。 --- .claude/skills/release/SKILL.md | 4 +++- .github/workflows/build-mac.yml | 1 - .github/workflows/build-win.yml | 2 -- scripts/extract-release-notes.mjs | 5 +++-- scripts/release.mjs | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.claude/skills/release/SKILL.md b/.claude/skills/release/SKILL.md index 43e6302..344d40b 100644 --- a/.claude/skills/release/SKILL.md +++ b/.claude/skills/release/SKILL.md @@ -43,7 +43,9 @@ description: 发版助手。自动分析改动、生成 CHANGELOG 条目、处 | 新增功能 | 次版本号 +1,修订号归零 | `0.0.1` → `0.1.0` | | 破坏性变更 | 主版本号 +1 | `0.x.x` → `1.0.0` | -**测试版判断**:版本号主版本为 0(即 `0.x.x`)时,在 GitHub Release 上自动标记为"预发布/测试版"(CI 已配置,无需手动处理)。 +版本号支持 `-beta` / `-alpha` / `-rc.1` 等后缀(如 `0.1.0-beta`)。 + +**测试版判断**:版本号主版本为 0(即 `0.x.x`)或包含 `-`(如 `0.1.0-beta`)时,在 GitHub Release 上自动标记为"预发布/测试版"(CI 已配置,无需手动处理)。 向用户展示建议版本号,等待确认或让用户输入自定义版本号。 diff --git a/.github/workflows/build-mac.yml b/.github/workflows/build-mac.yml index 68470de..6f903ee 100644 --- a/.github/workflows/build-mac.yml +++ b/.github/workflows/build-mac.yml @@ -85,7 +85,6 @@ jobs: - name: Package DMG run: pnpm exec electron-builder --mac --${{ matrix.arch }} env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} CSC_IDENTITY_AUTO_DISCOVERY: false - name: Upload artifact diff --git a/.github/workflows/build-win.yml b/.github/workflows/build-win.yml index c3d2e05..1c2e0cf 100644 --- a/.github/workflows/build-win.yml +++ b/.github/workflows/build-win.yml @@ -65,8 +65,6 @@ jobs: - name: Package NSIS installer run: pnpm exec electron-builder --win - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload artifact uses: actions/upload-artifact@v7 diff --git a/scripts/extract-release-notes.mjs b/scripts/extract-release-notes.mjs index c754d4a..1998106 100644 --- a/scripts/extract-release-notes.mjs +++ b/scripts/extract-release-notes.mjs @@ -24,8 +24,9 @@ if (!version) { const changelog = readFileSync(resolve(root, 'CHANGELOG.md'), 'utf8') const lines = changelog.split('\n') -// 找到 ## [version] 开头的行 -const startPattern = new RegExp(`^## \\[${version.replace('.', '\\.')}\\]`) +// 找到 ## [version] 开头的行(转义版本号中所有特殊正则字符) +const escapedVersion = version.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') +const startPattern = new RegExp(`^## \\[${escapedVersion}\\]`) const sectionPattern = /^## \[/ let inSection = false diff --git a/scripts/release.mjs b/scripts/release.mjs index d363ff1..1129961 100644 --- a/scripts/release.mjs +++ b/scripts/release.mjs @@ -33,8 +33,8 @@ function run(cmd) { // ── 参数校验 ────────────────────────────────────────────────────────────────── const version = process.argv[2] -if (!version || !/^\d+\.\d+\.\d+$/.test(version)) { - console.error('用法: pnpm run release (例如: 0.2.0)') +if (!version || !/^\d+\.\d+\.\d+(-[a-zA-Z0-9.]+)?$/.test(version)) { + console.error('用法: pnpm run release (例如: 0.2.0 或 0.2.0-beta)') process.exit(1) }