Skip to content

fix(maker): publish beta packages as prereleases#249

Merged
529951164 merged 2 commits into
mainfrom
fix/maker-beta-version-policy
Jun 10, 2026
Merged

fix(maker): publish beta packages as prereleases#249
529951164 merged 2 commits into
mainfrom
fix/maker-beta-version-policy

Conversation

@529951164

Copy link
Copy Markdown
Contributor

Summary

  • Change Maker auto versioning so beta, alpha, and next tags publish prerelease versions.
  • Base prerelease versions on the highest published stable version, then increment the tag number.
  • Keep latest releases on stable patch versions so beta testing no longer consumes release numbers.
  • Update Maker release workflow docs and add coverage for prerelease and stable promotion paths.

Test Plan

  • npm test -- makerVersionPolicy.test.ts
  • npm test
  • npm run lint
  • npm run format:check
  • npx prettier --check scripts/resolve-maker-version.js .github/workflows/publish-maker.yml docs/MAKER.md docs/CI_CD.md src/tests/makerVersionPolicy.test.ts

- Change Maker auto versioning so beta, alpha, and next tags publish prerelease versions.

- Base prerelease versions on the highest published stable version, then increment the tag number.

- Keep latest releases on stable patch versions so beta testing no longer consumes release numbers.

- Update Maker release workflow docs and add coverage for prerelease and stable promotion paths.

- Verified with npm test, npm run lint, npm run format:check, and touched-file Prettier checks.
@greptile-apps

greptile-apps Bot commented Jun 10, 2026

Copy link
Copy Markdown

Greptile Summary

本 PR 修改了 Maker 自动版本策略:tag=latest 继续发布稳定 patch 版本,tag=beta/alpha/next 改为基于当前最高稳定版本自动生成 prerelease 版本(如 0.0.17-beta.1),避免 beta 测试消耗正式版本号。

  • 核心逻辑:新增 resolvePrereleaseAutoVersion 函数,通过 maxStableCore 获取全局最高稳定版本,再用 maxPrereleaseNumberForBase 累加同一 base 下已发布的 prerelease 编号;PRERELEASE_TAGS 集合负责在 resolveAutoVersion 中分发路由。
  • 测试覆盖:新增多个 prerelease 场景用例,包括首次发布、编号递增、跨 major/minor 最高稳定线跟进、alpha/next 语义,以及 dist-tag 查询次数限制测试(验证之前评审指出的重复查询问题已修复)。
  • 文档更新docs/MAKER.mddocs/CI_CD.md 均已与新策略同步,说明了完整的 beta→stable 促进流程。

Confidence Score: 5/5

可安全合并;版本解析逻辑正确,所有关键边界情况均有测试覆盖,workflow 配置无结构变更。

prerelease 路径的核心计算逻辑(最高稳定版本定位、prerelease 编号累加、跨 major/minor 线跟进)经过逐一验证均行为正确;新增的 dist-tag 查询计数测试确认了之前评审指出的重复查询问题已一并修复;文档与代码保持一致。

所有文件均无需额外关注。

Important Files Changed

Filename Overview
scripts/resolve-maker-version.js 核心版本解析脚本:新增 resolvePrereleaseAutoVersion、maxStableCore、maxPrereleaseNumberForBase 等函数,将 beta/alpha/next tag 的自动模式路由至 prerelease 路径;stable tag 逻辑不变。逻辑正确,边界情况有测试覆盖。
src/tests/makerVersionPolicy.test.ts 测试文件全面更新:新增 prerelease 路径的多个用例(首次发布、递增编号、跨 major/minor 最高稳定线、alpha/next 语义),并添加 dist-tag 查询次数限制的测试。
.github/workflows/publish-maker.yml 仅更新 version_mode 参数描述文案,workflows 结构和 Actions 引用(checkout@v4、setup-node@v4)均使用语义版本 tag,符合仓库规范。
docs/CI_CD.md 文档更新与新版本策略一致:说明 tag=latest 递增 stable patch,tag=beta/alpha/next 发布 prerelease,举例了完整的 beta→stable 促进流程。
docs/MAKER.md 文档更新与 CI_CD.md 保持一致,说明 prerelease 版本基于最高稳定版本生成,避免 beta 测试消耗正式版本号。

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[resolveAutoVersion] -->|tag in PRERELEASE_TAGS\nbeta / alpha / next| B[resolvePrereleaseAutoVersion]
    A -->|tag = latest\nor other stable tags| C[resolveStableAutoVersion]

    B --> D[maxStableCore\n获取全局最高稳定版本]
    D --> E{highestStableCore\n>= currentCore?}
    E -->|Yes| F[nextBase = highestStable + 1\n如 0.0.16 → 0.0.17]
    E -->|No| G[nextBase = currentCore\n如 0.0.17-beta.x → 0.0.17]
    F --> H[maxPrereleaseNumberForBase\n查找已发布的最大编号]
    G --> H
    H --> I[next = baseVersion-tag.number+1\n如 0.0.17-beta.1]

    C --> J[assertStableThreeSegmentVersion\ncurrentVersion]
    J --> K[maxStablePatchForCurrentLine\n同 major/minor 最高稳定 patch]
    K --> L[incrementFinalNumber\n如 0.0.16 → 0.0.17]
Loading

Reviews (2): Last reviewed commit: "test(maker): cover prerelease review fee..." | Re-trigger Greptile

Comment thread scripts/resolve-maker-version.js Outdated
- Add alpha and next auto-version coverage for prerelease publishing.

- Assert auto mode only queries the current dist-tag once.

- Document the sync requirement between prerelease tags and workflow choices.

- Reuse the current dist-tag version already read by main instead of querying npm again.

- Verified with npm test, npm run lint, npm run format:check, and touched-file Prettier checks.
@529951164 529951164 merged commit 90c445f into main Jun 10, 2026
12 checks passed
@529951164 529951164 deleted the fix/maker-beta-version-policy branch June 10, 2026 13:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants