Skip to content

bug: release publish 不把预发布版本标成 prerelease #24

Description

@Guo-Zhang

现象

qtcloud-devops release publish 发预发布版本时,建的 GitHub Release 不是 prerelease(isPrerelease=false)。

这与 devops-release 工作流的发布判据对不上——判据要求「Release 标成了预发布」:

gh release view "cli/v$(...)" --repo quanttide/qtcloud-work --json isPrerelease --jq '.isPrerelease'
# 期望 true

复现

发 audit 工具箱的 Rust 预发布(qtcloud-devops 0.11.0):

cd packages/quanttide-audit-toolkit/packages/rust
qtcloud-devops release publish -y -v rust/v0.1.0-alpha.1
# ✓ 标签 rust/v0.1.0-alpha.1 已创建并推送
# ✓ GitHub Release rust/v0.1.0-alpha.1 已创建

gh release view rust/v0.1.0-alpha.1 --repo quanttide/quanttide-audit-toolkit --json isPrerelease --jq .isPrerelease
# false   ← 期望 true

Release 地址:https://github.com/quanttide/quanttide-audit-toolkit/releases/tag/rust/v0.1.0-alpha.1

当前只能手工补标:gh release edit rust/v0.1.0-alpha.1 --prerelease

根因

src/cli/src/platform/gh.rscreate_release()

Command::new("gh").args([
    "release", "create", version, "--title", version, "--notes", notes, "--repo", repo,
])

调用里没有 --prerelease,也没有按版本后缀(-alpha.N / -beta.N / -rc.N)判断。于是所有版本都建成正式 Release。

src/cli/src/release/publish.rs 的测试 test_publish_prerelease_with_yes 只断言 is_ok() || is_err(),没核 isPrerelease,所以这条漏了过去。

期望

版本带预发布后缀时,建的 Release 是 prerelease(isPrerelease=true)。

建议

create_release 里判一次版本后缀,带 -alpha. / -beta. / -rc. 就加 --prerelease(判之前先去掉 scope/ 前缀);或加一个 prerelease: bool 参数,由调用方按合同版本算好传进来。测试补一条断言 isPrerelease

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions