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