PI-Desktop 跨平台打包与发布流水线全解析:从版本 Tag 到三平台安装器的完整清单
PI-Desktop 跨平台打包与发布流水线全解析从版本 Tag 到三平台安装器的完整清单【免费下载链接】PI-DesktopLocal-first AI coding agent desktop: Electron Rust host core pi Agent Harness user-installable plugins项目地址: https://gitcode.com/GitHub_Trending/pid/PI-Desktop装到新版 PI-Desktop 只需点一次下载发版一侧却要同时产出 macOS 双架构、Windows 双形态、Linux 三格式共九个安装包还要逐个过签名、公证与兼容性检查。PI-Desktop 的跨平台打包与发布流水线把这件事压成一个动作推送一个vX.Y.Z版本 tag由 GitHub Actions 完成质检—并行构建—汇总发布产物连同自动更新 Feed 一并挂到 GitHub Release。一条版本 Tag 如何跑完全链路整条主线如下散在十几个文件里的版本号怎么一次改齐结论一条命令同步所有版本位预检不通过就拒绝打 tag。发版者只需执行node scripts/release.mjs 0.21.0 --tag脚本会遍历全部 workspace 包apps/、packages/、docs/及根目录的package.json同步根 Cargo.toml 的[workspace.package]、Cargo.lock 中host-core条目以及 protocol.ts 里的APP_VERSION常量。为什么打 tag 前还要查文档版本号散落十几处手改必然漏而 tag 不可撤销。release.mjs 因此先跑 check-release-docs.mjs 预检各语言 changelog 条目、README 里的发布行、随包发布的模型目录快照必须对齐任何一面对不上就拒发。提交与打 tag 的最后防线预检通过后脚本只按文件列表提交版本号变更随后打 tag打之前还会查本地与远端是否已存在同名 tag避免二次发版。为什么推 tag 还要先过一遍 CI 门禁结论tag 推送不会触发 CI所以 release.yml 自己重放了一遍出厂质检。门禁 job 在 Linux 上依次跑构建、类型检查、lint、全量单测和cargo test -p host-core任一红灯后续打包装机一律不启动——坏代码没有机会混进安装包。 这里还有个容易忽略的细节CI 与发布线统一使用 Node 24与 Electron 43 捆绑的运行时版本对齐保证质检时的环境就是用户机器上的环境。构建矩阵里藏着哪些防错配校验结论五条构建线并行、互不阻塞fail-fast: false每条线开工前先过两道校验。Runner 架构必须与目标一致应用内有一个 Rust 编写的宿主内核pi-desktop-host-core必须以与 Electron 壳相同的 CPU 架构原生编译。macOS 两条线与 Linux 两条线开工前先比对uname -m与期望架构防止ARM 的壳装着 x86 的内核这类错配。Windows 允许任意 runner 交叉构建故不做此项。tag 号必须与包版本对得上每条线还会比对 tag 号与apps/desktop/package.json的版本字段不一致直接终止并提示先跑版本升级脚本。三大平台的安装包凭什么开箱即用结论平台差异集中在一张表里每行对应一条构建线及其专属校验。平台Runner产物关键校验macOS arm64macos-15原生 Apple SiliconDMG ZIP签名 → 公证 → staple 装订 → 四重校验macOS x64macos-15-intel原生 IntelDMG ZIP同上Windows x64windows-latestNSIS 安装器 便携 ZIP双形态分别标记更新策略Linux x64ubuntu-22.04AppImage / deb / rpmglibc 地板校验 更新 Feed 存在性Linux arm64ubuntu-22.04-armAppImage / deb / rpm同上Feed 带-arm64后缀macOS 的签名、公证与装订tag 构建默认走签名通道CI 从 Actions secrets 注入开发者 ID 证书与 Apple 凭据。三个术语各管一段开发者 ID 签名相当于给应用盖身份证公证是提交 Apple 检测并换回一张无恶意代码票据staple 把票据缝进安装包用户首次启动无需联网也能通过 Gatekeeper。⚠️ 签名公证全程由看门狗脚本监控静默超时即倾泻诊断装订最多重试 6 次。签名后还要过四重校验verify-macos-release.shcodesign核对开发者 ID 身份与完整性、spctl确认 Gatekeeper 承认已公证、xcrun stapler validate验证 App 与 DMG 票据齐全任一不过就不许上传。Windows 双形态与免运行库Rust 侧车静态链接 MSVC 运行库干净系统免装 VC 组件即可启动本地服务。NSIS 安装器参与应用内自动更新便携 ZIP 则故意不写更新 Feed——更新时只在应用内提示并给出下载链接防止免安装版被自动更新偷装成安装版。Linux 的 glibc 地板与 RPM 审计glibc 是 Linux 的系统 C 库二进制若引用了更新版本的符号在老系统上会直接加载失败。构建刻意钉在ubuntu-22.04把地板压到 glibc 2.35覆盖 Ubuntu 22.04、Debian 12、Fedora 36每次构建后用objdump解析 host-core 的动态符号超出地板即判失败check-linux-host-glibc.mjs。rpm 还通过_build_id_links none关闭全局 build-id 软链避免与系统内其他应用冲突另有可手动触发的 linux-package.yml 工作流解包 rpm 逐条核对app.asar、宿主二进制、.desktop桌面项与 hicolor 图标的落位。更新 Feed 怎么分发到用户手里结论latest*.ymlFeed 与产物同传 Release应用内 electron-updater 据此发现新版本。macOS 两条线各产一份带架构标签的 Feed发布 job 先校验两者版本号一致再合并为单一latest-mac.ymlWindows NSIS、Linux AppImage、打包版 macOS 走完整应用内更新后台静默下载、提示重启安装、退出时兜底安装便携 ZIP 与 deb 走通知 链接模式只提示并给下载入口版本号带连字符如-beta的 tag 自动标记为预发布而更新器只跟踪最新稳定版。不想等流水线本机怎么最快出包结论每条本机出包命令都走同一套路——构建 workspace 依赖 →cargo build --release -p host-core→ 打包 agent-runtime 旁车 → electron-vite 构建前端 → electron-builder 出包产物统一落在apps/desktop/release/。目的命令快速冒烟--dir不压缩pnpm --filter pi-desktop/desktop pack本机完整包不签名pnpm --filter pi-desktop/desktop dist分平台产物pnpm --filter pi-desktop/desktop dist:mac:win/:linux同理macOS 签名 公证发行scripts/release-macos.sh需MAC_SIGNING_IDENTITY、APPLE_ID等环境变量没有证书时产物默认不签名——构建配置不内嵌证书身份任何人都能本地出包自测签名通道则要求本机架构与目标架构一致脚本会主动拒绝交叉尝试。核心思想整条流水线的本质是单一版本号输入机器负责把它变成三平台可分发的安装包而签名公证、glibc 地板、RPM 审计这些关卡都是在替未来的用户提前踩坑。延伸阅读06-release-runbook.md发布手册全文含构建线、包体积门禁与已知限制0289-signed-macos-github-releases.mdmacOS 签名发布决策0197-windows-portable-exe.mdWindows 便携版设计背景【免费下载链接】PI-DesktopLocal-first AI coding agent desktop: Electron Rust host core pi Agent Harness user-installable plugins项目地址: https://gitcode.com/GitHub_Trending/pid/PI-Desktop创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

专业伺服超声波塑焊机厂家

专业伺服超声波塑焊机厂家

伺服超声波塑焊机怎么选?从业者揭秘行业真实成本与选型逻辑近两年制造业产线升级提速,塑胶件焊接环节的自动化改造需求明显增多。不少工厂在评估设备更新时,都会接触到伺服超声波焊接机这一品类。但市面上厂家众多,报价跨度极大&a…

2026/10/15 3:30:40 阅读更多 →
ZYNQ7010 与 AD7768 高精度 ADC 采集:从硬件到数据落地全攻略

ZYNQ7010 与 AD7768 高精度 ADC 采集:从硬件到数据落地全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 3:30:40 阅读更多 →
EME2000到TOD坐标系转换:MATLAB实现与避坑指南

EME2000到TOD坐标系转换:MATLAB实现与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 3:30:40 阅读更多 →

最新新闻

IDEA 2025.3 新功能实战:多光标、调试数据流与临时文件提升编码效率

IDEA 2025.3 新功能实战:多光标、调试数据流与临时文件提升编码效率

IDEA 2025.3 的更新日志刚出来那会儿,我真没当回事,毕竟每个大版本都爱说“更快、更智能、更好用”。直到上周把开发环境从旧版本升上来,试了一圈新功能,才意识到这波“骚操作”是真的多,甚至有点跟不上了。这篇文章不…

2026/10/15 4:27:50 阅读更多 →
贝叶斯网络学习指南:从结构、参数到推断的完整实践

贝叶斯网络学习指南:从结构、参数到推断的完整实践

简介:《贝叶斯网络学习指南》是一份面向机器学习、概率建模与数据科学初学者的PDF电子书,系统覆盖从概率论基础到贝叶斯网络建模、推理与参数学习的完整知识链。全书从概率函数与空间、条件概率与独立性、贝叶斯定理、随机变量及联合概率分布讲起&#x…

2026/10/15 4:27:50 阅读更多 →
STM32F072C8T6裸机开发实战:从寄存器到USB/CAN外设

STM32F072C8T6裸机开发实战:从寄存器到USB/CAN外设

简介:这份资料面向嵌入式初学者与有一定经验的开发者,围绕意法半导体STM32F072C8T6(ARM Cortex-M0内核、48MHz主频、32KB闪存与2KB RAM)学习板展开,帮助读者快速掌握该芯片的初始化配置、中断处理、内存管理及驱动编写…

2026/10/15 4:27:50 阅读更多 →
C/C++不同位数数据互转的进制转换实现与避坑指南

C/C++不同位数数据互转的进制转换实现与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 4:27:50 阅读更多 →
NC65销售订单批量导入全攻略:从模板准备到成功入库的避坑指南

NC65销售订单批量导入全攻略:从模板准备到成功入库的避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 4:27:50 阅读更多 →
Linux下C/C++动静态库制作与使用实战指南

Linux下C/C++动静态库制作与使用实战指南

长期以来在Linux下做C/C开发,动静态库始终是绕不开的一个核心技能。无论是自己封装模块、分发二进制产物,还是处理第三方依赖,理解库的制作与使用直接决定了你在编译链接这块能不能少掉头发。我见过不少开发者写业务逻辑很熟练,一…

2026/10/15 4:26:50 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →