首页 / 资讯中心 / 文章详情

Voquill发布流水线拆解:dev/prod双通道GitHub Actions自动更新系统内幕

Voquill发布流水线拆解:dev/prod双通道GitHub Actions自动更新系统内幕 ★ FEATURED ARTICLE
【免费下载链接】voquillOpen source voice dictation technology项目地址https://gitcode.com/gh_mirrors/vo/voquill点击查看免费下载Voquill 是一款开源的语音听写工具而它的桌面版之所以能做到推送代码即自动发版、应用内自动更新靠的是一套围绕 dev/prod 双通道设计的 GitHub Actions 发布流水线。这篇文章带你完整拆解 Voquill 自动更新系统内幕从分支如何映射到发布频道到版本号如何自动递增再到 Tauri 更新器如何读取各自频道的latest.json清单帮助你快速理解一套可复用的多通道 CI/CD 发布方案。一、30 秒看懂双通道架构Voquill 的发布模型非常经典分支即频道。三条长期分支各自对应一条发布轨道互不干扰分支发布频道覆盖组件maindevCLI、桌面端、桌面端企业版dev、企业后台、企业网关prodprodCLI、桌面端、官方文档enterpriseenterprise桌面端企业版、企业后台、企业网关这份对照表就写在仓库的 release/README.md 中是整个流水线的宪法。 核心思想开发版走main自动发正式版通过晋升操作从main合入prod后再发。普通用户装正式版尝鲜用户装 dev 版两边更新通道完全隔离。二、发布流水线如何触发编排器 变更检测1. 编排器按分支解析频道入口文件是 release.yml它监听main、prod、enterprise三个分支的 push 事件。第一个 job 会解析当前分支把它翻译成频道名prod分支 →prodenterprise分支 →enterprise其余即main→dev这段逻辑在 release.yml 的 Resolve channel from branch 步骤中完成只有 8 行 shell却决定了后续所有组件走哪条轨道。2. 路径过滤没改动的组件不发布编排器接着用dorny/paths-filter对比上一次提交检测哪些目录变了cli/、apps/desktop/、apps/docs/、enterprise/admin/等见 release.yml。举个例子如果你只提交了文档修改只有 Docs 会部署只改了 CLI就只会构建发布 CLI。这大大节省了 CI 资源也避免改一行代码六个组件全部重发的浪费。3. 发布结果自动播报每个组件执行完后notifyjob 会把哪些组件发了、成功还是失败汇总成一条消息推送到 Google Chat 部署频道release.yml。没有 webhook 时直接跳过不会报错——这是个很贴心的防御性设计。三、dev 通道如何自动递增版本号真正的重活由可复用工作流 _release-desktop-impl.yml 承担。它的metadatajob 是版本号的核心来源拉取全部 tag按语义化版本排序找出各频道最新的 tagdesktop-dev-v*、desktop-v*、desktop-enterprise-v*等见 _release-desktop-impl.ymldev 通道自动 patch 1比如最新 dev tag 是desktop-dev-v1.2.3本次就发desktop-dev-v1.2.4并直接打在main当前提交上见 _release-desktop-impl.ymltag 冲突直接中止如果目标 tag 已存在立即报错退出杜绝覆盖历史版本见 _release-desktop-impl.yml。也就是说开发者完全不需要手动改版本号——推代码版本号、tag、Release 全部自动生成。发布说明也不用手写metadatajob 会按频道读取 release/prod.txt 或 release/enterprise.txt直接作为 Release 的正文。四、dev → prod 晋升把发正式版变成一次合并这是整套流水线最优雅的部分。发正式版不是复制代码、不是手动改配置而是一次 fast-forward 合并用main快进合并prod或enterprisepush 即触发prod频道的发布prod频道的metadatajob 会找到对应的 dev tag默认取最新的也可手动指定某个x.y.z把同一份 dev 提交重新打成正式 tagdesktop-vversion重新发布见 _release-desktop-impl.yml回滚也很简单把prod强制推回旧的 commit流水线会自动重新发布差异组件。这些流程在 docs/desktop-release.md 和 release/README.md 中有完整说明。五、自动更新的秘密latest.json 与频道隔离应用内发现新版本的能力来自 Tauri 更新器而频道的隔离靠两份配置文件实现tauri.dev.conf.json更新端点指向desktop-dev频道的latest.jsontauri.prod.conf.json更新端点指向desktop-prod频道的latest.json。构建时CI 先用 set-tauri-release-config.mjs 把自动计算的版本号写入 tauri.conf.json并注入更新器公钥再由tauri-action生成签名安装包和latest.json上传到版本化 Release。最后一步是频道发布update-channeljob 把本次构建的latest.json覆盖上传到固定的频道 tag如desktop-prod下见 _release-desktop-impl.yml。于是形成了两级结构版本化 Releasedesktop-dev-v1.2.4等存放具体安装包永久保留频道 Releasedesktop-dev/desktop-prod永远只放最新的latest.json指向对应的版本化资源。客户端侧Voquill 桌面端每分钟自动检查一次更新AppSideEffects.tsx发现新版本时托盘图标切换为有更新样式用户如果忽略更新弹窗三天内不再打扰updater.actions.ts。更新逻辑封装在 packages/desktop-utils/src/updater.ts 中。六、三大平台构建与安装渠道分发buildjob 用矩阵并行构建三个平台见 _release-desktop-impl.yml各自带上了平台必修课平台关键步骤macOSuniversal 双架构导入 Developer ID 证书、代码签名、Apple 公证notarize staple、额外打包 DMG 和 PKG 安装包WindowsAzure Trusted Signing 对 NSIS 安装器和便携版安装器签名并验证 Authenticode 签名随包附带 VC 运行时 DLLLinux安装 Vulkan SDK 等系统依赖构建 deb/AppImage/RPM构建完成只是开始流水线还会把安装包分发到各主流安装渠道仅限 dev/prod 频道企业版除外APT 仓库prod进stabledev进devcodename用 reprepro 入库_release-desktop-impl.ymlRPM 仓库rpmsign签名 createrepo_c更新元数据_release-desktop-impl.ymlHomebrew自动生成 cask 并推送到官方 tap_release-desktop-impl.yml。CLI 的发布逻辑release-cli.yml与之同构voquill-dev二进制指向 dev 后端正式版叫voquill同样分发到 APT/RPM/Homebrew。七、可靠性设计自动重试与并发保护失败自动重试GitHub 不允许任务重跑自己所在的 run所以单独写了 retry-release.yml——监听主流水线结束若结论是失败且重试次数未达 3 次就调用gh run rerun --failed只重跑失败的 job。网络抖动、runner 偶发故障由此自愈。并发保护主流水线按分支设置 concurrency grouprelease.yml避免同一分支的多次 push 互相踩踏。PR 阶段预构建build-desktop.yml 在 Pull Request 阶段就用临时签名密钥跑一遍三平台构建把能构建成功这个风险挡在合并之前。八、小结这套流水线值得抄作业的 5 个点分支即频道main/prod/enterprise与 dev/prod/enterprise 一一对应心智模型极简路径过滤 编排器只发布变动的组件省资源、降噪tag 即版本号patch 自动递增、tag 冲突即中止人工零介入且不可重复版本化 Release 频道 latest.json 两层结构历史版本可追溯频道清单永远指向最新合并即发布、强推即回滚把发版、回滚都变成 git 操作权限与评审流程天然复用 PR 机制。如果你正在为自己的 Tauri/Electron 桌面应用搭建发布流水线可以从 docs/desktop-release.md 入手对照.github/workflows/下的 release.yml、_release-desktop-impl.yml、release-cli.yml 三个文件基本就能复刻出一套属于自己的 dev/prod 双通道自动更新系统。赞分享【免费下载链接】voquillOpen source voice dictation technology项目地址https://gitcode.com/gh_mirrors/vo/voquill点击查看免费下载相关推荐HOP 发布流水线深度拆解GitHub Actions 五平台构建、签名公证与自动更新HOP 发布流水线深度拆解GitHub Actions 五平台构建、签名公证与自动更新 HOP 是一个跨平台的开源 HWP/HWPX 文档编辑器它的桌面客户Mac Sai 发布流水线拆解如何用 GitHub Actions 自动签名、Apple 公证并同步更新 Homebrew CaskMac Sai 发布流水线拆解如何用 GitHub Actions 自动签名、Apple 公证并同步更新 Homebrew Cask Mac Sai 是一款开3分钟彻底告别激活烦恼KMS智能激活脚本完全指南3分钟彻底告别激活烦恼KMS智能激活脚本完全指南 你是否曾经遇到过这样的尴尬时刻在准备重要演示的前一刻Office突然弹出产品未激活的警告或者每次开运维创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站