尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Multipass PR 产物(Artifacts)安装与测试指南:从 CI 包到本地验证
虚拟化开发工具云原生【免费下载链接】multipassMultipass orchestrates virtual Ubuntu instances项目地址https://gitcode.com/gh_mirrors/mu/multipass点击查看免费下载导读Multipass 的 CI 每天都会为每个 Pull Request 构建出可直接安装的安装包——Linux 上的 snap、Windows 上的 MSI、macOS 上的 pkg。本文以仓库中的 dev-docs/pr-artifacts.md 为核心系统讲解如何获取并安装这些 PR 构建产物用来在合入之前体验、验证某个 PR 的功能同时结合仓库里的 CI 工作流与 Snap 渠道发布逻辑说明产物从哪里来、被发布到哪个渠道、为什么某些情况下可能装到错误的版本以及如何用gh-install扩展一键安装最新构建。读完本文你将掌握三类平台下测试任意 Multipass PR 构建的完整实操方案。一、为什么需要 PR 产物ArtifactsMultipass 是一个跨平台Windows / macOS / Linux的虚拟化工具用于快速创建和管理 Ubuntu 云虚拟机。仓库的持续集成CI会为每一次 PR 提交执行编译、单元测试与集成测试并在测试通过后产出对应的安装包这些安装包就是所谓的 PR artifacts。对于贡献者、评审者或普通用户而言PR 产物有两大价值合入前体验新功能无需等待 PR 合并进main分支发布正式版本就能安装对应 PR 的构建提前验证新功能是否符合预期复现问题当某个 PR 引入缺陷或你报告的 bug 与该 PR 相关时可以精确安装该 PR 的构建进行复现和排查。从仓库的 CI 结构看PR 产物的构建由 .github/workflows/dynamic-ci.yml 统一编排它根据变更文件过滤出docs、code、hooks三类改动再分别触发 linux.yml、macos.yml、windows.yml 三个平台工作流最终把安装包作为 GitHub Actions 的 Artifacts 上传并把 Linux snap 发布到 Snap Store 的 PR 渠道。二、Linux通过 Snap 渠道安装 PR 构建2.1 核心命令与参数说明Linux 上的 Multipass 以 snap 形式分发PR 构建会被发布到edge/prPR编号这样的渠道。安装命令如下snap refresh --channel edge/prXXXXXXXX替换为 PR 编号例如要安装 PR 5135 的构建命令为snap refresh --channel edge/pr5135refresh与install的区别已安装过 Multipass 时用refresh它会将现有安装切换到指定渠道从零开始安装从未安装过 Multipass时把refresh替换为installsnap install multipass --channel edge/prXXXX。2.2 渠道不存在时的静默回退陷阱重要警告原文档特别强调了一个容易踩坑的行为警告如果某个 PR 渠道因某种原因不存在Snap 会静默地安装普通的 edge 渠道构建而不会报错。这意味着snap refresh --channel edge/pr1234可能在你不知情的情况下把 Multipass 切换到了最新的 edge 构建即main分支的每日构建而不是 PR 1234 的构建。安装完成后务必验证实际渠道snap info multipass观察输出中当前安装对应的 channel 是否为edge/prXXXX。如果显示的是latest/edge之类的其他渠道说明 PR 渠道未发布成功需要回到该 PR 的 CI 运行页确认构建与发布状态。2.3 渠道命名规则与发布逻辑源码依据为什么渠道叫edge/prXXXX这可以从仓库的 CI 参数解析逻辑中找到明确依据。.github/actions/build-params/action.yml 根据 GitHub 事件类型决定构建标签label与 Snap 发布渠道channel事件类型为pull_request输出labelprPR编号、channeledge/prPR编号事件类型为merge_group输出labelci运行号、channeledge/ci运行号匹配发布分支release/x.y或发布标签vx.y.z输出channelbeta其余情况含main分支 push输出labelci运行号channel 为空edge 由 snapcraft.io 的自动构建发布。发布动作发生在 .github/workflows/linux.yml 的Publish-Snapjob 中它下载所有*.snap构建产物通过snapcraft upload --release channel上传到 Snap Store 对应渠道linux.yml。也就是说只有 PR 构建成功并且发布 job 运行成功edge/prXXXX渠道才会存在否则就会出现上文所说的静默回退。从 snap/snapcraft.yaml 可以看到Multipass snap 包含multipassd守护进程、multipassCLI与gui图形客户端三个 app因此安装 PR 构建后可以完整测试命令行与图形界面。三、Windows 与 macOS从 GitHub Actions Artifacts 手动下载Linux 的 snap 走 Snap Store 渠道而 Windows 与 macOS 的 PR 构建则作为 GitHub Actions 的 Artifacts 提供。操作步骤如下找到该 PR 最后一次成功运行的 GitHub Actions 汇总页即 Checks / Summary 页面滚动到页面底部的 Artifacts 区域此处列出了本次运行产生的所有安装包及其大小Size与校验和Digest如上图所示下载并安装对应平台的安装包Windows选择 MSI 包例如windows-2025-multipass-版本.win-win64.msi约 70 MB 量级双击运行 MSI 安装向导即可macOS选择 pkg 包例如multipass-版本.mac-Darwin.pkg约 147 MB 量级打开 pkg 按向导安装。Artifacts 区域还提供了复制校验和链接可用于校验下载完整性、下载与删除按钮。Artifacts 的保留期由 CI 配置决定仓库中 Windows / macOS 工作流设置的retention-days: 7即默认保留 7 天需要及时下载。3.1 产物从何而来各平台打包流程macOS.github/workflows/macos.yml 在macos-26Apple Silicon与macos-26-intelIntel两个 runner 上分别构建、打包得到各自的.pkg后由CombineMacOSPackagejob 调用 packaging/macos/merge_pkgs.py 合并为通用universalpkg再经 packaging/macos/sign-and-notarize.sh 签名后上传为 Artifact并同步发布到 S3multipass-ci桶供公开下载Windows.github/workflows/windows.yml 在windows-2025runner 上通过 CPack/WiX 生成 MSI见 packaging/windows/wix 下的.wxs文件同时还会收集 PDB 调试符号打包上传便于崩溃后的离线分析MSI 与符号包同样会上传到 S3。因此除了从 GitHub Actions 页面下载Windows/macOS 用户也可以从 CI 发布的公开 S3 URL 直接下载对应 PR 的安装包。3.2 版本命名如何读懂产物文件名Artifacts 文件名中蕴含了版本、PR 编号与提交哈希信息例如multipass-1.17.0-dev.pr4733g563e29f4.mac-Darwin.pkg windows-2025-multipass-1.17.0-dev.pr4733g563e29f4.win-win64.msi拆解如下1.17.0-dev基础版本号-dev表示开发构建pr4733该构建对应的 PR 编号即build-params输出的 labelg563e29f4对应的 git 提交短哈希后缀平台标识Darwin/win-win64与包类型pkg/msi。四、一键安装 CI 构建gh-install 扩展对于需要频繁安装不同 PR 构建或最新夜间构建的开发者原文档推荐了 GitHub CLI 扩展 gh-install。它的定位是下载并安装由 CI 为给定 PR 构建的 Multipass 包。可以把它类比为gh co 5135——只不过它不是检出 PR 的代码而是安装该 PR 的 CI 运行所产出的安装包并自动适配你当前的操作系统。不带任何参数时它安装最新的 nightly 构建。安装该扩展gh extension install sharder996/gh-install使用示例以 PR 5135 为例# 安装 PR 5135 的 CI 构建 gh install 5135 # 不带参数安装最新 nightly 构建 gh install其工作方式与手动流程互补Linux 上它会引导 snap 安装对应edge/prXXXX渠道Windows/macOS 上则直接抓取 CI 产出的 pkg/MSI 并执行安装省去在 Actions 页面逐项翻找下载的步骤。五、安装后的验证与常见问题5.1 验证安装的是正确的 PR 构建Linuxsnap info multipass检查 channel 是否为edge/prXXXX见 2.2 节Windows / macOS查看安装的版本号是否包含prXXXX标识例如运行multipass version或到系统应用程序中核对版本字符串macOS 上也可以通过pkgutil --pkg-info查询安装记录若为验证某个具体功能修复可结合 docs/how-to-guides 中对应功能的操作指南进行冒烟测试例如用multipass launch创建实例、multipass shell进入实例等。5.2 常见问题排查现象可能原因处理方式Linux 上安装后版本不对PR 渠道不存在静默回退到 edge用snap info multipass核对渠道回到 PR 的 Actions 页确认构建/发布状态Actions 页面找不到 Artifacts构建失败、运行未结束或产物已过期保留期约 7 天查看该 PR 最后一次成功运行产物过期则重新触发或直接等待新提交下载的包无法安装下载不完整用 Artifacts 区域的 SHA256 校验和Digest核对文件想装最新开发版而非某个 PR不需要指定 PRLinuxsnap refresh --channel edgeWindows/macOS使用不带参数的gh install六、相关资源PR artifacts 官方开发文档本文所依据的原始文档Linux CI 工作流snap 构建、测试与渠道发布macOS CI 工作流pkg 构建、合并、签名与上传Windows CI 工作流MSI 构建、PDB 符号收集与上传build-params 动作PR 渠道与构建标签的生成逻辑snap 打包配置Linux snap 的应用与部件定义安装 Multipass 官方指南各平台安装前置条件与正式渠道安装方式Windows MSI 打包文档Windows 安装包构建细节Multipass 发布流程正式版本如何从 CI 走向 Snap Store / S3。七、总结测试一个 Multipass PR 构建本质上有两条互补路径Linuxsnap refresh --channel edge/prXXXX新装用install并以snap info multipass确认渠道未发生静默回退Windows / macOS前往该 PR 最后一次成功运行的 GitHub Actions 汇总页在 Artifacts 区域下载 MSI / pkg 安装。频繁测试时安装gh-install扩展可一键完成按 PR 编号安装对应包、或安装最新 nightly 构建的整个流程。理解 build-params 中的渠道映射规则能帮助你准确判断每个构建应出现在哪个渠道从而在测试与调试 Multipass 上游开发时做到有的放矢。赞分享虚拟化开发工具云原生【免费下载链接】multipassMultipass orchestrates virtual Ubuntu instances项目地址https://gitcode.com/gh_mirrors/mu/multipass点击查看免费下载相关推荐GitHub Desktop Linux 社区测试指南从 RC 安装包验证到本地打包与反馈流程GitHub Desktop Linux 社区测试指南从 RC 安装包验证到本地打包与反馈流程 GitHub Desktop本仓库即其官方开源代码库目前并桌面应用版本控制开发工具Civitai 贡献指南从 Fork PR 的 CI 语义到本地验证与测试守门的完整实践Civitai 贡献指南从 Fork PR 的 CI 语义到本地验证与测试守门的完整实践 导读 本文基于 Civitai 仓库根目录的 CONTRIBUTIN后端前端AI 应用n8n-skills表达式语法终极指南告别{{}}使用困惑n8n skills表达式语法终极指南告别{{}}使用困惑 n8n skills是一套专为构建完美n8n工作流设计的技能集其中表达式语法是实现工作流自动化的AI 技能AI 插件工作流自动化流程编排创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

UWP 凭据获取实战:Windows-universal-samples 中 CredentialPicker 的三种提示场景与完整选项配置

UWP 凭据获取实战:Windows-universal-samples 中 CredentialPicker 的三种提示场景与完整选项配置

示例工程 【免费下载链接】Windows-universal-samples API samples for the Universal Windows Platform. 项目地址: https://gitcode.com/gh_mirrors/wi/Windows-universal-samples 点击查看 免费下载 本文基于 Windows-universal-samples 仓库中的 CredentialPic…

📅 2026/9/25 20:11:49
Lottery 抽奖系统实战:Docker 部署 XXL-JOB 分布式任务调度中心

Lottery 抽奖系统实战:Docker 部署 XXL-JOB 分布式任务调度中心

文档教程后端 【免费下载链接】CodeGuide :books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总,旨在为大家提供一个清晰详细的学习教程,侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助,请给予支持(关注、…

📅 2026/9/25 20:06:49
MySQLTuner 文档同步工作流实战:doc-sync 脚本与版本一致性审计全解析

MySQLTuner 文档同步工作流实战:doc-sync 脚本与版本一致性审计全解析

数据库运维 【免费下载链接】MySQLTuner-perl MySQLTuner is a script written in Perl that will assist you with your MySQL configuration and make recommendations for increased performance and stability. 项目地址: https://gitcode.com/gh_mirrors/my/My…

📅 2026/9/25 20:06:49
MORE NEWS

更多资讯

📰

从Activity Log生成周报:工作事件模型、聚合规则与事实边界

自动生成周报的可靠路径,不是让模型扫描所有聊天并自由总结,而是先建立轻量 Activity Log:用结构化工作事件记录结果、决定、阻塞、行动和来源,再按项目与时间聚合,最后由模型负责表达压缩。 工作事件模型 type WorkEv…

📰

「Python 翻车日记 · 第 12 篇」一行 read() 读 5GB,电脑就炸了?——文件是流,不是一坨

Python 翻车日记 第 12 篇:一行 read() 读 5GB,电脑就炸了?——文件是流,不是一坨 📋 本期菜单:6 个文件 I/O 的坑 + 1 个模式速查,从「read OOM」到「JSON 中文转义」 [入门] read OOM with 句柄泄漏 glob 不递归 二进制写 str [进阶] os.path.join 绝对路径丢弃 …

📰

K值新国标落地!2026选门窗不看这个参数,冬天多交一半暖气费

最近不少准备装修的朋友发现,去门店选窗户,销售都在提一个参数——K值。有的说是2.0,有的说是1.5,还有的说是1.1。这到底是个啥?新国标实施后,K值不达标会有什么后果?今天一篇讲清楚。K值到底是…

📰

Agent安全:权限控制与沙箱执行

Agent安全:权限控制与沙箱执行 专栏:AI/LLM工程化实战 - 从Prompt到Agent的完整落地指南 模块4 Agent工程实战篇 第42篇 摘要 摘要:Agent权限最小化、工具白名单、代码沙箱subprocess受限执行、敏感数据脱敏、审计日志,是Agent安全防护的五大核心手段。用可运行Python实现一道工…

📰

AI 辅助 Python 排错:从多出一个空页到回归测试

4 条数据,每页 2 条,分页函数却返回了 3 页,最后一页还是空的。 代码没有抛异常,接口也可能正常返回成功状态。直到调用方发现“下一页”里什么都没有,问题才暴露出来。 这类 Bug 很适合用来练习 AI 辅助排错&#x…

📰

Atlas 300V 24G推理卡实战:从零部署YOLOv5全流程

如果你最近在调研AI推理卡,大概率会刷到Atlas 300V 24G这个名字。上周还有朋友直接问我:这卡到底算不算运算加速卡,买回来能不能跑YOLO?我没有直接给结论,而是把工位上这块Atlas 300V Pro 24G从零到一部署YOLOv5的全过…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬