化構(gòu)建:用 GitHub Actions 跑通 2 種架構(gòu) × 8 種 Root 方案的多架構(gòu) CI)
WSABuilds 自動(dòng)化構(gòu)建用 GitHub Actions 跑通 2 種架構(gòu) × 8 種 Root 方案的多架構(gòu) CI【免費(fèi)下載鏈接】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.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ws/WSABuilds在 WSABuilds 這個(gè)項(xiàng)目里WSA 構(gòu)建、持續(xù)集成和 GitHub Actions 是綁在一起的你在 Actions 頁(yè)面點(diǎn)一次運(yùn)行幾十個(gè)不同配置的安裝包就會(huì)在云端排隊(duì)產(chǎn)出。為什么一個(gè)打包腳本需要一整套流水線想象你要一個(gè)KernelSU Pixel 7 型號(hào) Win10 兼容補(bǔ)丁的 WSA 安裝包手動(dòng)流程是先下 WSA 的 WIM 包再下 KernelSU 和 GApps解包系統(tǒng)鏡像、塞入 Root 方案、改設(shè)備參數(shù)、重新打包壓縮——每一步都是體力活而且換個(gè)配置就要再來(lái)一遍。WSABuilds 把這條鏈整體搬上了 GitHub Actions它本身是一個(gè)用預(yù)構(gòu)建二進(jìn)制在 Windows 10/11 上運(yùn)行 WSA 的開(kāi)源項(xiàng)目?jī)?nèi)置 MindTheGapps 與 Magisk、KernelSU 等 Root 方案而所有定制組合都不再靠人手全部由自動(dòng)化打包流水線產(chǎn)出。觸發(fā)之后三條工作流各管一攤這個(gè)倉(cāng)庫(kù)的.github/workflows/update.yml是唯一的對(duì)外入口扮演導(dǎo)演WSA 出新版本時(shí)它先檢查上游組件有沒(méi)有更新再創(chuàng)建發(fā)版標(biāo)簽然后按配置組合逐次點(diǎn)名構(gòu)建。build.yml是剪輯師自己不接收人工觸發(fā)只接受參數(shù)、吐出貨。buildtester.yml則是審片人一個(gè)可手動(dòng)觸發(fā)的交互界面讓你自己勾選架構(gòu)、Root 方案、GApps、設(shè)備型號(hào)跑一次試驗(yàn)性的構(gòu)建用來(lái)驗(yàn)證新想法而不污染正式發(fā)布。三者之間的連接靠 reusable workflow 實(shí)現(xiàn)核心就一行uses: ./.github/workflows/build.yml # 像調(diào)函數(shù)一樣調(diào)用整個(gè)構(gòu)建流程 with: arch: x64 # 這一行決定目標(biāo) CPU 架構(gòu) root: magisk # 這一行決定內(nèi)置哪種 Root 方案設(shè)計(jì)意圖很直白把構(gòu)建當(dāng)作函數(shù)調(diào)用。構(gòu)建邏輯只維護(hù)一份導(dǎo)演新增一個(gè)配置組合時(shí)只需加幾行 job 聲明而不是復(fù)制一整套 YAML。從參數(shù)到產(chǎn)物一次構(gòu)建的四個(gè)階段每個(gè)被調(diào)起的 build job 內(nèi)部是同一條時(shí)間線。準(zhǔn)備階段在 Ubuntu 運(yùn)行器上建 Python 虛擬環(huán)境裝好 e2fsprogs、qemu-utils 這類工具——它們是后面修改 ext4 系統(tǒng)鏡像的前提。下載階段拉取 WSA 的 WIM 包、對(duì)應(yīng)版本的 Magisk 或 KernelSU、GApps 包。構(gòu)建階段核心是MagiskOnWSA/scripts/build.sh它把鏡像解包、裝入 Root 方案、替換設(shè)備型號(hào)隨后再執(zhí)行 Houdini 安裝腳本寫入 ARM 二進(jìn)制翻譯組件。后處理階段打 Win10 兼容補(bǔ)丁、用 7z 高壓縮比打包、生成 SHA256 校驗(yàn)和最后把產(chǎn)物掛上 Release。這條時(shí)間線真正的難點(diǎn)是組合爆炸兩種架構(gòu)、若干 Root 選項(xiàng)、GApps 與否、Amazon Appstore 去留、設(shè)備型號(hào)叉乘下來(lái)是幾十個(gè)變體。項(xiàng)目的解法不復(fù)雜——每個(gè)組合一個(gè)獨(dú)立 job 并行跑job 之間用 needs 聲明依賴全部等導(dǎo)演完成檢查與打 tag 后才啟動(dòng)任何一路失敗也不拖累其他路。./scripts/build.sh --arch x64 --release-type WIF \ --magisk-ver stable --install-gapps \ --root-sol magisk --remove-amazon \ --compress-format none # 全部配置都收斂為腳本參數(shù)讓流水線自己長(zhǎng)更新檢測(cè)與發(fā)版發(fā)版鏈路的設(shè)計(jì)目標(biāo)是人只需要等通知。update.yml 的檢查 job 會(huì)跑上游版本檢查腳本輪詢 Magisk 穩(wěn)定版與 Canary、KernelSU、MindTheGapps 的最新版本download links job 則自動(dòng)把 README 里的下載徽章鏈接改寫為新版本的 Release 地址省去了人工維護(hù)表格的環(huán)節(jié)。隨后 check-and-create-tag job 先逐個(gè)查詢標(biāo)簽是否已存在以防重名把版本號(hào)和日期填進(jìn) Release 說(shuō)明模板再對(duì) Windows 11 x64、Windows 11 arm64、Windows 10 x64 三個(gè)標(biāo)簽各調(diào)一次發(fā)版動(dòng)作uses: softprops/action-gh-releasev3 with: tag_name: ${{ env.WIN11X64_TAG }} # 形如 Windows_11_1.27.x 的標(biāo)簽 body_path: Windows11x64.md # 版本說(shuō)明由模板自動(dòng)填充到這里WSABuilds 自動(dòng)化打包的最后一環(huán)閉合了從版本變化到三個(gè)平臺(tái)的新 Release 上架全程無(wú)需人工操作。實(shí)際跑起來(lái)才知道的坑磁盤空間是最先撞上的墻。每個(gè)構(gòu)建要同時(shí)擺著幾 GB 的 WIM 包和展開(kāi)后的多分區(qū) vhdx 系統(tǒng)鏡像而運(yùn)行器只有 14GB 磁盤。build.sh 的做法是用 mktemp 建獨(dú)立臨時(shí)工作目錄并在腳本退出時(shí)用 trap 鉤子自動(dòng)清場(chǎng)讓磁盤峰值只出現(xiàn)在單路構(gòu)建的生命周期內(nèi)。上游下載超時(shí)是第二塊常見(jiàn)的石頭。WSA 的包體積大官方 CDN 偶爾抽風(fēng)整條 job 就白等了十幾分鐘。好在下載文件都落在固定目錄并按清單記錄狀態(tài)失敗后重跑時(shí)已完成的文件不會(huì)重新拉取重試的成本基本等于零。arm64 和 x64 的差異則藏得很深。x64 的 Win10 兼容補(bǔ)丁在 Linux 上就能完成——用 xmlstarlet 改 AppxManifest、替換幾個(gè) DLL 即可但 PRI 資源合并和 vhdx 壓縮依賴 Windows 側(cè)的 arm64 版 makepri.exe所以 buildtester 流程里 build job 先用 cache 把產(chǎn)物遞給一個(gè) windows-latest 運(yùn)行器收尾跨系統(tǒng)交接靠的就是這一來(lái)一回。另有一條硬規(guī)則Win10 補(bǔ)丁根本不支持 arm64輸入校驗(yàn)會(huì)在流水線入口直接攔下這個(gè)非法組合而不是讓它跑到一半才報(bào)錯(cuò)。下次看到 WSA 新版本號(hào)發(fā)布時(shí)你要做的只剩打開(kāi) Actions 頁(yè)面、填個(gè)版本號(hào)、點(diǎn)一下運(yùn)行——剩下的幾十個(gè)包交給流水線就好?!久赓M(fèi)下載鏈接】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.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ws/WSABuilds創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考