尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

WSABuilds GitHub Actions实战:一条流水线如何自动产出全套WSA定制包

WSABuilds GitHub Actions实战:一条流水线如何自动产出全套WSA定制包 WSABuilds GitHub Actions实战一条流水线如何自动产出全套WSA定制包【免费下载链接】WSABuildsRun Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (root solutions) built in.项目地址: https://gitcode.com/GitHub_Trending/ws/WSABuildsWSABuilds 是一个把 Windows 安卓子系统WSA做成「带 Root、带谷歌框架的成品安装包」的项目。它用 GitHub Actions 持续集成把「WSA 一更新全套包就自动重打」这件事彻底自动化——读完这篇你会明白它怎么编排工作流以及哪些套路能直接搬到你自己的仓库里。 手工打包一次 WSA要忙多久想象一下维护者的日常微软推了一次 WSA 更新你手里同时压着好几件事——架构分 x64 和 arm64 两条线老机型用的旧版 WSA 还得再单独打一套Root 方案有 8 种可选无 Root、KernelSU、Magisk 的 Stable / Canary / Beta / Debug / Alpha / Delta谷歌框架可选 MindTheGapps 或干脆不装Amazon 商店可以留也可以删设备伪装名单从 Pixel 4a 一直到 Pixel Fold共 13 个机型代号。光是「Windows 11 x64 Magisk GApps 去掉 Amazon 伪装成 Pixel 5」这类组合官方一轮更新就要并行产出一二十个变体。再叠加人工去 README 里改下载徽章链接、人工建 Release 标签、人工核对 Magisk 和 KernelSU 的版本号——一次更新下来纯手工操作要忙上大半天还容易漏。 一条流水线走完 5 步成品包自动落地整个自动化的入口是一个名为「Check update」的工作流.github/workflows/ 目录下的 update.yml。触发时人只需要交三样东西WSA 版本号、更新说明、渠道类型Insider 预览版还是零售版。之后流水线自己走完五步查版本四个独立 Python 脚本放在 MagiskOnWSA/Update Check/分别去探 Magisk Stable、Magisk Canary、KernelSU、MindTheGapps 的最新版本结果写进环境变量往下传改链接脚本自动把 README 下载表里的六个徽章链接换成新版本对应的 Release 地址有改动就自动提交立标签先检查Windows_11_x.x.x这类 tag 是否已存在没有才创建对应 ReleaseRelease 说明文件里的占位符日期、各组件版本被批量替换成真实值下订单同一份 yaml 里排了二十多个构建任务每个任务调用一个可复用的「预制」构建工作流只传一组参数跑构建每个任务内部依次是装依赖 → 跑MagiskOnWSA/scripts/里的 build.sh 拉组件、打镜像 → 注入 Houdini 转译器 → 7z 高压缩打包 → Windows 10 兼容补丁 → 上传到对应 Release。订单长这样一眼能看懂每个包是什么配置uses: ./.github/workflows/build.yml with: arch: x64 root: magisk gapps: --install-gapps devicemodel: redfinredfin是 Pixel 5 的代号传进去装出来的包里安卓系统就认为自己在 Pixel 5 上跑——这就是「设备伪装」选项的落点。 四个值得偷师的设计1. 可复用工作流 预制菜套餐传参就是点菜。build.yml 自己不能跑它声明为workflow_call只接受调用。所有变体的差异全部压缩成arch / root / gapps / devicemodel / compressformat这几个参数。好处是新增一个组合比如以后加 Pixel 8时只需再写十行「点菜」配置构建逻辑一行不用动。你做多平台、多配置的发布项目比如同一个应用出 iOS / Android / 桌面版这个结构直接可用。2. 触发、点单、做菜分成三层。「Check update」负责人工入口和 Release 管理可复用工作流负责做菜中间还有个 buildtester.yml 专门让人在 Actions 页面上「自选菜单」试做。三层分开之后正式流水线保持干净测试和正式发布互不干扰。3. 缓存用在对的地方。Python 依赖走 pip 缓存并锁定 requirements.txt 所在目录Ubuntu 系统包e2fsprogs、attr、qemu-utils 这些打镜像必需的工具用专门的 apt 缓存 Action 缓存。这两处省掉的正是每次运行都要重跑的最慢环节。4. 用needs把「版本没查对就不许打包」变成硬约束。所有构建任务都needs前面的 check 和建标签任务意味着组件版本没拿到、tag 已存在这种异常会在构建之前就被拦下而不是打出一堆废包再人工清理。依赖关系即顺序控制这是并行任务里防止「脏构建」的便宜办法。️ 自己动手手动触发一次自定义构建想看流水线怎么跑不用等官方发版。在仓库 Actions 标签页找到「Custom Build (for testing purpose)」Run workflow 会弹出一张表单表单项你能选什么目标系统Windows 10 / Windows 11架构x64 / arm64Root 方案8 种任选谷歌框架MindTheGapps 或无设备伪装13 个 Pixel 机型或 WSA 默认压缩格式.7z / .zip提交后它先做输入校验比如 Win10 补丁不支持 arm64这组合会直接拦下然后构建、压缩、算 SHA256 校验和产物挂在运行记录的 Artifacts 里下载。自己试一次比读十遍配置都明白。⚠️ 踩坑速查常见失败点与排查动作构建产物没上传到 Release多半是可复用工作流里的上传步骤没找到对应压缩包看日志里fail_on_unmatched_files相关报错确认构建步骤的artifact输出是否为空流程在「立标签」一步就停了tag 已存在会被主动拦下这是防重复发布的保护换个版本号重触发即可版本检查脚本输出空值说明抓取页面失败反爬或页面结构变化去 MagiskOnWSA/Update Check/ 看对应脚本的抓取逻辑Release 说明里的组件版本占位符会留着没替换的标记Windows 10 版包装不上检查 Win10 补丁步骤是否完整——它要改 AppxManifest.xml 并下载三个替换用 DLL任何一步失败都会产出「只能 Win11 装」的包7z 压缩阶段耗时很长-mmt8多线程压缩大镜像本来就要好几分钟别当成超时去杀任务想本地复现构建依赖清单就在 MagiskOnWSA/scripts/ 的 requirements.txt照它装好 Python 环境再跑 build.sh 即可。结尾顺着这几处读下去工作流总入口.github/workflows/update.yml 是发版主线buildtester.yml 是手动试做入口版本探测脚本MagiskOnWSA/Update Check/构建与组件生成脚本MagiskOnWSA/scripts/安装与使用文档Documentation/WSABuilds/ 下的 Installation 和 Updating 两篇仓库地址如需克隆git clone https://gitcode.com/GitHub_Trending/ws/WSABuilds【免费下载链接】WSABuildsRun Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (root solutions) built in.项目地址: https://gitcode.com/GitHub_Trending/ws/WSABuilds创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表