Skip to content

fix(ci): tag 发布时创建 GitHub Release 并触发独立版打包 - #37

Open
HerbertGao wants to merge 5 commits into
studyzy:mainfrom
HerbertGao:fix/standalone-github-release
Open

HerbertGao wants to merge 5 commits into
studyzy:mainfrom
HerbertGao:fix/standalone-github-release

Conversation

@HerbertGao

Copy link
Copy Markdown

Closes #36

问题

openspec-cn install 只认带 SHA256SUMS 的 GitHub Release。本仓库的 scripts/binary/ 和 binaries.yml 已经从上游同步,但发布时没有创建 Release,所以上传 job 从未运行。

release-prepare.yml 仍要求 github.repository == 'Fission-AI/OpenSpec',在本仓库每次推送 main 都会 skip。实际发布入口是 tag 推送的 release.yml,它只发 npm。

改动

tag 推送时增加一个独立 job:

  1. 若该 tag 还没有 GitHub Release,就创建。带 - 的 tag 标为 prerelease,避免盖过 Latest。
  2. workflow_dispatch 已有的 binaries.yml,传入这个 tag。

用 GITHUB_TOKEN 创建的 Release 不会触发其他 workflow,所以不能只靠 gh release create。workflow_dispatch 是这个 token 可以触发的例外,binaries.yml 也已经接受 tag 输入。

没有改 release-prepare.yml。把它的仓库条件改过来会在每次推送 main 时运行 changesets,并依赖上游的 GitHub App 和 npm OIDC;这个仓库的发布路径是 NPM_TOKEN 加 tag。

合并后

这个 workflow 随被推送的 tag 走。合并后需要再推一个包含本次提交的 tag,独立版文件才会出现。远程目前没有 v1.15.0 tag。已有旧 tag 不会自动补文件。

仓库的 Actions 权限需要允许 GITHUB_TOKEN 写 contents 并触发 workflow。如果组织把 token 限制为只读,这个 job 会失败。

未验证

没有在本仓库触发 tag 发布,也没有实际跑 bun scripts/binary/build.mjs。

release-prepare.yml 仍只在 Fission-AI/OpenSpec 上运行,不会创建 Release。
GITHUB_TOKEN 创建的 Release 不会触发其他 workflow,因此显式 dispatch binaries.yml。
workflow_dispatch 只是排队,发布 job 会在 SHA256SUMS 出现前成功。
改为调用 binaries.yml;已有完整 Release 则跳过。
全角括号紧挨 $asset 时,bash 3.2 会把它算进变量名。
"$releases.atom" 在 PowerShell 里是取属性,不是拼 .atom。
PowerShell 7 对非文本类型的 atom 响应返回 byte[],正则匹配不到标签。
本地发布列表按原始字节读取,避免 PowerShell 7 把 atom 当成字节数组。
测试改为按 UTF-8 读取安装脚本,并给 install.ps1 加上 BOM。
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.

openspec-cn install 失败:没有带独立版文件的 GitHub Release

1 participant