ci(desktop): 桌面预览发行手动工作流 / add manual desktop preview release workflow - #32
Merged
Merged
Conversation
按 Qiuner#18 确认约束:仅 workflow_dispatch,不自动发布;windows-2022 / macos-15 矩阵,job 开始断言 uname -m 与 process.arch 与目标一致; 复用现有打包与验证脚本,并从解包 ZIP 直接启动做原生冒烟; 上传 ZIP / 安装包 / SHA256SUMS,runner 数据全部隔离于临时目录; 汇总 job 如实记录 darwin-x64 未覆盖,禁止 Rosetta 代产。
…ase workflow GitHub runner 默认不带 Godot 导出模板,build:world 会失败; Windows/macOS 两侧均下载官方 sha256 校验的 tpz 并只解出 web debug/release 与 nothreads 变体,另断言 index.wasm 存在。
…plates Godot 4.7.2 GitHub release 无 tpz 的 .sha256 伴生资产(404 返回网页), 改用 release 附件 SHA512-SUMS.txt 中导出模板包的官方哈希直接钉死。
…pansion and 303 首跑矩阵暴露三处:Godot macOS 资产实名带 macos. 前缀(404); shasum -c 行误用单引号阻止变量展开且校验相对路径(本就不可用), 统一改为双引号全路径并以官方 SHA512-SUMS.txt 钉死; pwsh 7 Invoke-WebRequest 对 303 抛异常,加 -SkipHttpErrorCheck 后按状态码判定。verify.ps1 与安装提取冒烟本身已全过。
… handling verify-darwin.sh 期望含 app/ 的 out 目录,而 zip 根即 app/, 传 $work 而非 $work/app;Windows 冒烟改为跟随 token 认证 303 跳转并断言最终 200,顺带验证完整认证流。
macOS 发行 CI 首跑发现:embedNodeRuntime 只拷 process.execPath, 官方 darwin 发行版 node 动态链接 libnode.<abi>.dylib(rpath 含 @loader_path),单独拷出的二进制在包内 Abort trap。 构建用 node 静态链接时 lib 目录无匹配自然跳过(本机 v26 验证零拷贝)。 修复后由 desktop-release-preview macOS job 复验。
…nflict macOS 发行 CI 复验暴露:resolveDataHome 抛错路径统一走 NSApp.terminate(nil),冒烟模式下冲突检测退出码为 0, verify-darwin 的迁移冲突断言形同虚设。 smoke 分支改为 stderr 输出原因并 exit(1);GUI 模式行为不变。 本机 swiftc 编译复现验证:冲突场景由静默 0 修复为 1 + 中文错误。
…for release CI 矩阵两 job 全绿(架构守卫、双平台 verify、解包冒烟、产物上传), 状态转已实现待验收;如实记录首跑发现并修复的两个缺陷。
Qiuner
approved these changes
Sep 23, 2026
Qiuner
left a comment
Owner
There was a problem hiding this comment.
已复核最新提交与 fork 首跑证据:workflow 仅手动触发、不发布;架构守卫、Windows/macOS 独立矩阵、Godot 模板哈希、解包 ZIP 冒烟、认证跳转、端口清理和白名单 artifact 均有覆盖。两处首跑真实缺陷修复(darwin libnode.*.dylib 随包、macOS smoke 冲突改为非零退出)与验证记录一致。
保留限制:darwin-x64 未覆盖,不用 Rosetta 代产;自动冒烟不替代 #19 的真实模型和干净机器人工验收。批准并建议转 Ready;合并后由维护者从主分支手动触发 workflow 做上游首跑。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #18(Intel 缺口按 issue 完成标准如实保留)
按已确认的方案实现,全部约束落实:
workflow_dispatch;无 Release/Publish 步骤,产物只进 artifact。uname -m+node -p process.arch(Windows 另加PROCESSOR_ARCHITECTURE/RUNNER_ARCH)与矩阵目标一致,不一致立即失败。macos-15的 arm64 归属以首跑守卫输出为准,通过后已在专项文档固定。verify.ps1(安装提取、外部链接、隔离数据、单实例、退出清端口);macOS 跑verify-darwin.sh(含 fix(desktop): 构建与验证拒绝 Rosetta 翻译环境 / reject Rosetta-translated macOS builds #28 的 Rosetta 拒绝门禁)。任何一方通过不替代另一方。qcode-windows-x64.zip解包直接启动QCode.exe,轮询 token 化browser-url.txt并请求完整 URL(200/303),终止后断言端口释放;macOS 解包后把app/交给verify-darwin.sh,并shasum -c SHA256SUMS.txt。QCODE_DATA_HOME/隔离数据/解包全部位于RUNNER_TEMP;artifact 路径为明确白名单(qcode-*.zip、qcode-setup-x64.exe、SHA256SUMS.txt),if-no-files-found: error。限制:自动冒烟不替代 #19 的真实模型与干净机器人工验收;本 PR 不配置任何自动触发。
fork 首跑证据(矩阵全绿)
完整运行:https://github.com/ruijayfeng/agent-isles/actions/runs/35699586487(head
f778d56;fork 上执行,本 PR 无上游 Actions 权限)macos-15→runner.arch=ARM64、uname -m: arm64、process.arch=arm64;windows-2022(Microsoft Windows Server 2022)→runner.arch=X64、uname -m: x86_64、PROCESSOR_ARCHITECTURE=AMD64。macOS arm64 标签据此固定为macos-15。verify.ps1全过(安装提取、无外部链接、认证页面、正常/崩溃清理、单实例、原生模块、迁移/冲突),解包 ZIP 直接启动QCode.exe,跟随 token 认证跳转得 200,终止后端口释放断言通过。verify-darwin.sh全过(原生架构、冒烟就绪、退出清理、单实例、原生模块、迁移/冲突),shasum -c SHA256SUMS.txt通过。windows-x64-preview287,523,735 B、macos-arm64-preview139,974,843 B(ZIP / 安装包 / SHA256SUMS 白名单,if-no-files-found: error)。embedNodeRuntime只拷process.execPath——官方 darwin Node 动态链接libnode.<abi>.dylib,产出包内 node 直接 Abort trap(本机静态 Node 构建从未暴露);修复为随带runtime/libnode.*.dylib。Launcher.swift冒烟模式数据目录冲突走NSApp.terminate(nil)静默退出 0,verify 的冲突断言形同虚设;修复为 stderr 输出原因并exit(1)。