Repository navigation
fix(ci): tag 发布时创建 GitHub Release 并触发独立版打包 - #37
HerbertGao wants to merge 6 commits into
Conversation
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。
|
@copilot resolve the merge conflicts in this pull request |
`"$releases.atom"` 是字符串的属性查找,取到空值,feed 等于没读到;
改用 `${releases}.atom` 之后,`.Content` 又因为是 atom+xml 返回
byte[],正则匹配不到任何标签,最终报「未找到包含独立版文件的发布版」。
改为先 -OutFile 落盘再按 UTF-8 读文本,两条路径都绕开。
Refs #37
* fix(install): 变量名后紧跟全角字符时加花括号
macOS 自带的 bash 3.2 会把紧跟变量的 UTF-8 首字节并进变量名,
`"$file("` 因此读的是 `$file(` 这个空变量。下载地址于是变成
`.../download/v1.2.0/`,真机安装直接 404。
dash/sh 不受影响,所以这个问题只在 macOS 和 bash 构建里出现。
同处 PowerShell 用 `${releases}.atom`,否则被当成字符串的属性查找。
Refs #37
* fix(install): PowerShell 7 把 atom feed 当字节数组读
`"$releases.atom"` 是字符串的属性查找,取到空值,feed 等于没读到;
改用 `${releases}.atom` 之后,`.Content` 又因为是 atom+xml 返回
byte[],正则匹配不到任何标签,最终报「未找到包含独立版文件的发布版」。
改为先 -OutFile 落盘再按 UTF-8 读文本,两条路径都绕开。
Refs #37
|
安装脚本那部分已经单独合入 main(#38),这里说一下剩下的事。 CI 里真正红的
echo "正在下载 $file($version)..." # macOS bash 3.2 把全角「(」的首字节并进变量名读的是空变量
Dependency Review 那条是仓库没开 Dependency graph,跟代码无关。 这个 PR 需要先解决的问题
建议: |
|
关闭这个 PR。这里有价值的部分已经全部合入 main,剩下的既无法验证也没修好对应问题。说明一下结论,避免以后翻历史时误判。 一、哪些已经进了 main安装脚本的修复单独走了 #38,已合入(
#38 上这四条腿全部转绿, 二、哪些没有合入,为什么
|
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:
-的 tag 标为 prerelease,避免盖过 Latest。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.0tag。已有旧 tag 不会自动补文件。仓库的 Actions 权限需要允许
GITHUB_TOKEN写 contents 并触发 workflow。如果组织把 token 限制为只读,这个 job 会失败。未验证
没有在本仓库触发 tag 发布,也没有实际跑
bun scripts/binary/build.mjs。