macOS 15 arm64 GitHub Actions Runner 镜像软件清单全解析:版本明细、工具链构成与镜像构建原理
【免费下载链接】runner-imagesGitHub Actions runner images项目地址: https://gitcode.com/GitHub_Trending/ru/runner-images
macOS 15(Sequoia)arm64 是 GitHub Actions 面向 Apple Silicon 架构的托管运行器镜像,本文基于仓库中的 macos-15-arm64-Readme.md 完整梳理该镜像的软件构成,并结合 macOS-15.arm64.anka.pkr.hcl、toolset-15.json 与报告生成脚本,说明这份清单从"构建配置"到"自动盘点"的全过程。读完本文,你将能准确判断该镜像包含哪些语言运行时、缓存工具、Xcode/SDK 与 Android 组件,理解各版本号从何处而来,以及如何在自己的工作流中依赖这些预装环境。
镜像版本概览
macOS 15 arm64 镜像的核心信息如下(对应 macos-15-arm64-Readme.md 首部):
| 项目 | 值 |
|---|---|
| OS 版本 | macOS 15.7.9 (24G830) |
| 内核版本 | Darwin 24.6.0 |
| 镜像版本 | 20260907.0337.1 |
其中"Image Version"由镜像构建的 build_id 派生而来:在报告生成逻辑Build-OSInfoSection中,通过$ImageName.Split('_')[1]截取镜像名中的版本号,因此它精确对应某次镜像发布(参见 SoftwareReport.Common.psm1)。也就是说,这份 Readme 并非手工维护,而是构建完成后自动生成的"实测快照"。
当前仓库公告区还披露了与 macOS 镜像相关的演进信息:Xcode 27 已作为公开预览提供;macOS 26 Tahoe 镜像的默认 Xcode 将于 2026.07.21 调整为 Xcode 26.6;macOS 14 Sonoma 镜像自 7 月 6 日起进入弃用流程,至 11 月 2 日将完全停止支持。在规划工作流时,应关注这些版本过渡节点,提前迁移到仍受支持的镜像。
镜像如何构建:Packer 模板、工具集与自动化报告
这份 Readme 是镜像构建流水线的产物,其上游链路由三部分构成。
Packer 构建模板macOS-15.arm64.anka.pkr.hcl 基于veertu-anka-vm-clone构建器(依赖 veertu-anka 插件>= v3.2.0),从源 VM 克隆出以build_id命名的构建 VM,默认分配 6 个 vCPU、8G 内存,并以macos15作为image_os标识。构建过程大致经历以下阶段:
- 上传测试脚本、文档生成脚本、
toolset-15.json与 bootstrap 资源到镜像内; - 执行 Xcode 命令行工具、Homebrew、Rosetta 等基础组件安装;
- 配置 TCC 数据库、自动登录、自动更新、NTP 与 shell;
- 安装 PowerShell、.NET、Python、Ruby、Git、Node 等基础工具链;
- 通过 Install-Xcode.ps1 安装多版本 Xcode;
- 安装 Actions 缓存、LLVM、OpenJDK、AWS 工具、Rust、GCC、CocoaPods、Android SDK 等;
- 执行
Install-Toolset.ps1/Configure-Toolset.ps1/Configure-Xcode-Simulators.ps1落地工具集; - 调用
Generate-SoftwareReport.ps1生成软件报告,运行RunAll-Tests.ps1全量测试; - 将生成的
software-report.md与software-report.json下载回仓库,成为当前这份 Readme 与配套 JSON。
工具集声明文件toolset-15.json 是镜像内容的事实来源(source of truth),集中声明了 Xcode 版本及校验和、Java 版本、Android 组件版本、PowerShell 模块、Homebrew 包、GCC 版本、.NET SDK 版本、toolcache 工具版本等。报告脚本大量通过Get-ToolsetContent读取该文件来决定"要展示什么、展示到哪个粒度",例如 GCC/Fortran 版本列表直接来自toolset.gcc.versions。
报告生成入口Generate-SoftwareReport.ps1 以SoftwareReport对象模型组织文档结构,按"Installed Software → 各分类"的层级添加节点,最终同时输出 Markdown 与 JSON 两份产物。镜像内构建完成后,该脚本的执行命令为:
pwsh -File "${image_folder}/software-report/Generate-SoftwareReport.ps1" -OutputDirectory "${image_folder}/output" -ImageName ${build_id}语言与运行时(Language and Runtime)
该分类覆盖镜像预装的主要语言运行时,原文档完整清单如下:
- .NET Core SDK:8.0.101、8.0.204、8.0.303、8.0.424、9.0.102、9.0.203、9.0.317、10.0.103、10.0.203、10.0.302、10.0.400 —— 由
Get-DotnetVersionList执行dotnet --list-sdks并提取各 SDK 版本号获得(SoftwareReport.Common.psm1),与 toolset 中dotnet.arch.arm64.versions声明的 8.0 / 9.0 / 10.0 三个大版本线对应; - Bash3.2.57(1)-release;
- Clang/LLVM17.0.0(系统默认);Clang/LLVM (Homebrew)18.1.8,位于
$(brew --prefix llvm@18)/bin/clang—— Homebrew 版本号来自 toolset 中llvm.version = 18; - GCC:13.4.0(
gcc-13别名)、14.4.0(gcc-14)、15.3.0(gcc-15),三者均由 toolset 的gcc.versions: ["13","14","15"]驱动,报告脚本逐版本执行gcc-${_} --version解析; - GNU Fortran:13.4.0(
gfortran-13)、14.4.0(gfortran-14)、15.3.0(gfortran-15); - Kotlin2.4.10-release-377;
- Node.js22.23.2(toolset 中
node.default = 22,报告通过node --version实测); - Perl5.44.0;
- Python33.14.7;
- Ruby3.3.12(toolset 中
ruby.default = 3.3)。
值得注意的架构差异:arm64 镜像不包含 PHP(SoftwareReport.Common.psm1中if (-not $os.IsArm64)条件跳过 PHP),也不包含 x64 镜像才有的 Mono、Composer、NuGet、SwiftLint 等条目;这是报告脚本按Get-OSVersion探测到的架构分支自动取舍的结果,说明 arm64 与 x64 镜像的软件集并不完全对称。
包管理(Package Management)
该分类包含镜像预装的包管理器与包管理生态工具:
- Bundler4.0.20
- Carthage0.40.0
- CocoaPods1.17.0
- Homebrew6.0.22
- NPM10.9.8
- Pip326.2.1 (python 3.14)
- Pipx1.17.2
- RubyGems4.0.20
- Vcpkg2026(build from commit 04a9d8e521)——
Get-VcpkgVersion同时执行vcpkg version与git -C /usr/local/share/vcpkg rev-parse --short HEAD,因此版本号附带了具体源码 commit; - Yarn1.22.22
其中 CocoaPods 与 Bundler 的安装由 toolset 中ruby.rubygems: ["multi_json","cocoapods","bundler","fastlane"]声明,Homebrew 则是镜像构建的基石——构建流程第一步就是执行 install-homebrew.sh。
项目管理(Project Management)
- Apache Ant1.10.18
- Apache Maven3.9.16
- Gradle9.7.1
工具(Utilities)
镜像预装的通用命令行工具,多数为 CI 场景高频依赖:
- 7-Zip17.05(
7z i探测) - aria21.37.0
- azcopy10.32.7
- bazel9.2.0
- bazelisk1.29.0
- bsdtar3.5.3(
tar别名) - Curl8.7.1
- Git2.55.0
- Git LFS3.8.0
- GitHub CLI2.100.0
- GNU Tar1.35(
gtar别名) - GNU Wget1.25.0
- gpg (GnuPG)2.5.22
- jq1.8.2
- OpenSSL1.1.1w(2023-09-11)
- Packer1.16.0
- pkgconf3.0.7
- Unxip3.3
- yq4.53.6
- zstd1.5.7
- Ninja1.13.2
注意 bsdtar 与 GNU Tar 同时存在但以不同别名暴露:默认tar指向 bsdtar,gtar指向 GNU Tar,这在处理不同压缩包格式时很有用。pkgconf、zstd、yq、unxip、ninja等包来自 toolset 中brew.common_packages列表。
开发工具(Tools)
面向云与移动开发的高级工具集:
- AWS CLI2.36.40
- AWS SAM CLI1.166.1
- AWS Session Manager CLI1.2.835.0
- Azure CLI2.90.0
- Azure CLI (azure-devops)1.0.8(
az version扩展版本) - Bicep CLI0.46.1
- Cmake4.4.3
- CodeQL Action Bundle2.26.4
- Fastlane2.239.0
- SwiftFormat0.63.0
- Xcbeautify3.2.1
- Xcode Command Line Tools16.4.0.0.1.1747106510(通过
pkgutil --pkg-info com.apple.pkg.CLTools_Executables读取) - Xcodes2.0.3(Xcode 版本管理工具)
浏览器与 WebDriver(Browsers)
镜像预装了四款浏览器及其驱动:
- Safari26.6.1 (20624.5.1.18.3) 与SafariDriver26.6.1
- Google Chrome152.0.7977.83
- Google Chrome for Testing152.0.7977.82 与ChromeDriver152.0.7977.82
- Microsoft Edge152.0.4191.66 与Microsoft Edge WebDriver152.0.4191.62
- Mozilla Firefox155.0.1 与geckodriver0.37.1
- Selenium server4.48.0
对应环境变量(由Build-BrowserWebdriversEnvironmentTable生成,SoftwareReport.Browsers.psm1):
| Name | Value |
|---|---|
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-arm64 |
| EDGEWEBDRIVER | /usr/local/share/edge_driver |
| GECKOWEBDRIVER | /opt/homebrew/opt/geckodriver/bin |
浏览器安装脚本位于 install-chrome.sh、install-firefox.sh、install-edge.sh、install-safari.sh,均作为 Packer 构建的一环在镜像内执行。
Java 运行时
镜像通过 install-openjdk.sh 预装四套 JDK,并注册架构专属的环境变量(arm64 后缀_arm64):
| Version | Environment Variable |
|---|---|
| 11.0.32+101 | JAVA_HOME_11_arm64 |
| 17.0.20+101 | JAVA_HOME_17_arm64 |
| 21.0.12+101.0 (default) | JAVA_HOME_21_arm64 |
| 25.0.4+101.0 | JAVA_HOME_25_arm64 |
默认 JDK 为 21,与 toolset 中java.arm64.default = "21"、versions: ["11","17","21","25"]完全一致。
缓存工具集(Cached Tools)
所谓"缓存工具"(toolcache)指安装在~/hostedtoolcache下、供 setup-* 类 action 快速切换多版本的一组运行时。arm64 镜像包含:
- Ruby:3.2.11、3.3.12、3.4.10、4.0.6
- Python:3.11.9、3.12.10、3.13.15、3.14.7
- Node.js:22.23.2、24.20.0
- Go:1.24.13、1.25.14、1.26.8
这些版本由 toolset 的toolcache段声明:Python/Node/Go 通过各自的官方 versions-manifest 与通配版本(如3.14.*、24.*、1.26.*)解析出具体版本,Ruby 则按 3.2/3.3/3.4/4.0 四个版本线固定安装。报告侧由 SoftwareReport.Toolcache.psm1 的Get-ToolcacheXxxVersions直接扫描$HOME/hostedtoolcache目录实测得出,因而与镜像实际内容严格一致。
Rust 工具链
- Cargo1.98.1
- Rust1.98.1
- Rustdoc1.98.1
- Rustup1.29.0
子分类Packages:
- Clippy0.1.98
- Rustfmt1.9.0-stable
Rust 由 install-rust.sh 安装,版本信息分别来自rustc --version、cargo --version、rustdoc --version、rustup --version、cargo clippy --version、rustfmt --version等命令的实测输出。
PowerShell 工具
- PowerShell7.6.5(toolset 中
pwsh.version = 7.6)
PowerShell Modules:
- Az:15.6.1
- Pester:5.9.0
- PSScriptAnalyzer:1.25.0
模块列表由 toolset 的powershellModules声明,报告脚本通过Get-Module -ListAvailable枚举各模块已安装版本(SoftwareReport.Toolcache.psm1 中的Get-PowerShellModules)。
Xcode 多版本管理、SDK 与模拟器
Xcode 是该镜像的核心组件。当前镜像预装了 9 个版本,默认版本为16.4(toolset 中xcode.default = "16.4"):
| Version | Build | Path | Symlinks |
|---|---|---|---|
| 26.3 | 17C529 | /Applications/Xcode_26.3.app | /Applications/Xcode_26.3.0.app |
| 26.2 | 17C52 | /Applications/Xcode_26.2.app | /Applications/Xcode_26.2.0.app |
| 26.1.1 | 17B100 | /Applications/Xcode_26.1.1.app | /Applications/Xcode_26.1.app |
| 26.0.1 | 17A400 | /Applications/Xcode_26.0.1.app | /Applications/Xcode_26.0.app |
| 16.4 (default) | 16F6 | /Applications/Xcode_16.4.app | /Applications/Xcode_16.4.0.app、/Applications/Xcode.app |
| 16.3 | 16E140 | /Applications/Xcode_16.3.app | /Applications/Xcode_16.3.0.app |
| 16.2 | 16C5032a | /Applications/Xcode_16.2.app | /Applications/Xcode_16.2.0.app |
| 16.1 | 16B40 | /Applications/Xcode_16.1.app | /Applications/Xcode_16.1.0.app |
| 16.0 | 16A242d | /Applications/Xcode_16.app | /Applications/Xcode_16.0.0.app、/Applications/Xcode_16.0.app |
版本数据从何而来:toolset 的xcode.arm64.versions数组声明每个版本的link(安装目录版本)、filename、version(形如26.3+17C529,由语义版本 + build 号组成)、sha256校验和、install_runtimes策略与symlinks。安装流程由 Xcode.Installer.psm1 驱动:从XCODE_INSTALL_STORAGE_URL下载Xcode-{version}.xip(附 SAS 令牌),校验 SHA256 后优先用unxip解包(否则回退xip -x),移动到/Applications/Xcode_<version>.app,随后执行稳定版spctl --assess完整性校验、xcodebuild -license accept许可接受、MetalToolchain 组件安装、-runFirstLaunch首次启动初始化。
运行时安装策略:toolset 中install_runtimes支持三种值——default(xcodebuild -downloadAllPlatforms安装全部平台)、none(跳过)、或按平台映射安装(如 Xcode 16.4 安装 iOS 18.5/18.6、watchOS 11.5、tvOS 18.5 与 arm64 专属的 visionOS 2.3/2.4/2.5)。Xcode 26+ 版本还会附加-architectureVariant universal参数(Xcode.Installer.psm1)。visionOS 运行时仅在 arm64 上安装,这正解释了下方 SDK/模拟器表中 visionOS 系列的来源。
默认 Xcode 的切换:/Applications/Xcode.app是指向默认版本(16.4)的符号链接,Get-DefaultXcodeRootPath通过读取该链接的 Target 定位默认版本(Xcode.Helpers.psm1);构建时通过sudo xcode-select --switch在版本间切换。此外构建脚本还会把各 Xcode 主版本的XCODE_<主版本>_DEVELOPER_DIR环境变量写入~/.bashrc(如XCODE_26_DEVELOPER_DIR、XCODE_16_DEVELOPER_DIR),供工作流直接引用指定 Xcode 的开发者目录。
Installed SDKs
镜像内 SDK 数据由xcodebuild -showsdks -json实测枚举(SoftwareReport.Xcode.psm1),并按平台与版本排序。覆盖 macOS、iOS、tvOS、watchOS、visionOS、DriverKit 及各自模拟器 SDK,具体如下:
| SDK | SDK Name | Xcode Version |
|---|---|---|
| macOS 15.0 | macosx15.0 | 16.0 |
| macOS 15.1 | macosx15.1 | 16.1 |
| macOS 15.2 | macosx15.2 | 16.2 |
| macOS 15.4 | macosx15.4 | 16.3 |
| macOS 15.5 | macosx15.5 | 16.4 |
| macOS 26.0 | macosx26.0 | 26.0.1 |
| macOS 26.1 | macosx26.1 | 26.1.1 |
| macOS 26.2 | macosx26.2 | 26.2, 26.3 |
| iOS 18.0 | iphoneos18.0 | 16.0 |
| iOS 18.1 | iphoneos18.1 | 16.1 |
| iOS 18.2 | iphoneos18.2 | 16.2 |
| iOS 18.4 | iphoneos18.4 | 16.3 |
| iOS 18.5 | iphoneos18.5 | 16.4 |
| iOS 26.0 | iphoneos26.0 | 26.0.1 |
| iOS 26.1 | iphoneos26.1 | 26.1.1 |
| iOS 26.2 | iphoneos26.2 | 26.2, 26.3 |
| Simulator - iOS 18.0 | iphonesimulator18.0 | 16.0 |
| Simulator - iOS 18.1 | iphonesimulator18.1 | 16.1 |
| Simulator - iOS 18.2 | iphonesimulator18.2 | 16.2 |
| Simulator - iOS 18.4 | iphonesimulator18.4 | 16.3 |
| Simulator - iOS 18.5 | iphonesimulator18.5 | 16.4 |
| Simulator - iOS 26.0 | iphonesimulator26.0 | 26.0.1 |
| Simulator - iOS 26.1 | iphonesimulator26.1 | 26.1.1 |
| Simulator - iOS 26.2 | iphonesimulator26.2 | 26.2, 26.3 |
| tvOS 18.0 | appletvos18.0 | 16.0 |
| tvOS 18.1 | appletvos18.1 | 16.1 |
| tvOS 18.2 | appletvos18.2 | 16.2 |
| tvOS 18.4 | appletvos18.4 | 16.3 |
| tvOS 18.5 | appletvos18.5 | 16.4 |
| tvOS 26.0 | appletvos26.0 | 26.0.1 |
| tvOS 26.1 | appletvos26.1 | 26.1.1 |
| tvOS 26.2 | appletvos26.2 | 26.2, 26.3 |
| Simulator - tvOS 18.0 | appletvsimulator18.0 | 16.0 |
| Simulator - tvOS 18.1 | appletvsimulator18.1 | 16.1 |
| Simulator - tvOS 18.2 | appletvsimulator18.2 | 16.2 |
| Simulator - tvOS 18.4 | appletvsimulator18.4 | 16.3 |
| Simulator - tvOS 18.5 | appletvsimulator18.5 | 16.4 |
| Simulator - tvOS 26.0 | appletvsimulator26.0 | 26.0.1 |
| Simulator - tvOS 26.1 | appletvsimulator26.1 | 26.1.1 |
| Simulator - tvOS 26.2 | appletvsimulator26.2 | 26.2, 26.3 |
| watchOS 11.0 | watchos11.0 | 16.0 |
| watchOS 11.1 | watchos11.1 | 16.1 |
| watchOS 11.2 | watchos11.2 | 16.2 |
| watchOS 11.4 | watchos11.4 | 16.3 |
| watchOS 11.5 | watchos11.5 | 16.4 |
| watchOS 26.0 | watchos26.0 | 26.0.1 |
| watchOS 26.1 | watchos26.1 | 26.1.1 |
| watchOS 26.2 | watchos26.2 | 26.2, 26.3 |
| Simulator - watchOS 11.0 | watchsimulator11.0 | 16.0 |
| Simulator - watchOS 11.1 | watchsimulator11.1 | 16.1 |
| Simulator - watchOS 11.2 | watchsimulator11.2 | 16.2 |
| Simulator - watchOS 11.4 | watchsimulator11.4 | 16.3 |
| Simulator - watchOS 11.5 | watchsimulator11.5 | 16.4 |
| Simulator - watchOS 26.0 | watchsimulator26.0 | 26.0.1 |
| Simulator - watchOS 26.1 | watchsimulator26.1 | 26.1.1 |
| Simulator - watchOS 26.2 | watchsimulator26.2 | 26.2, 26.3 |
| visionOS 2.0 | xros2.0 | 16.0 |
| visionOS 2.1 | xros2.1 | 16.1 |
| visionOS 2.2 | xros2.2 | 16.2 |
| visionOS 2.4 | xros2.4 | 16.3 |
| visionOS 2.5 | xros2.5 | 16.4 |
| visionOS 26.0 | xros26.0 | 26.0.1 |
| visionOS 26.1 | xros26.1 | 26.1.1 |
| visionOS 26.2 | xros26.2 | 26.2, 26.3 |
| Simulator - visionOS 2.0 | xrsimulator2.0 | 16.0 |
| Simulator - visionOS 2.1 | xrsimulator2.1 | 16.1 |
| Simulator - visionOS 2.2 | xrsimulator2.2 | 16.2 |
| Simulator - visionOS 2.4 | xrsimulator2.4 | 16.3 |
| Simulator - visionOS 2.5 | xrsimulator2.5 | 16.4 |
| Simulator - visionOS 26.0 | xrsimulator26.0 | 26.0.1 |
| Simulator - visionOS 26.1 | xrsimulator26.1 | 26.1.1 |
| Simulator - visionOS 26.2 | xrsimulator26.2 | 26.2, 26.3 |
| DriverKit 24.0 | driverkit24.0 | 16.0 |
| DriverKit 24.1 | driverkit24.1 | 16.1 |
| DriverKit 24.2 | driverkit24.2 | 16.2 |
| DriverKit 24.4 | driverkit24.4 | 16.3 |
| DriverKit 24.5 | driverkit24.5 | 16.4 |
| DriverKit 25.0 | driverkit25.0 | 26.0.1 |
| DriverKit 25.1 | driverkit25.1 | 26.1.1 |
| DriverKit 25.2 | driverkit25.2 | 26.2, 26.3 |
Installed Simulators(由xcrun simctl list --json采集运行时与设备,经Build-XcodeSimulatorsTable排序组装):
| Name | OS | Simulators |
|---|---|---|
| iOS 18.5 | 18.5 | iPhone 16、iPhone 16 Plus、iPhone 16 Pro、iPhone 16 Pro Max、iPhone 16e、iPhone SE (3rd generation)、iPad (10th generation)、iPad (A16)、iPad Air 11-inch (M2)、iPad Air 11-inch (M3)、iPad Air 13-inch (M2)、iPad Air 13-inch (M3)、iPad mini (A17 Pro)、iPad Pro 11-inch (M4)、iPad Pro 13-inch (M4) |
| iOS 18.6 | 18.6 | 同上(15 台设备) |
| iOS 26.0 | 26.0.1 | iPhone 16 系列、iPhone 17、iPhone 17 Pro、iPhone 17 Pro Max、iPhone Air、iPhone SE (3rd generation)、iPad (10th generation)、iPad (A16)、iPad Air 11-inch (M2/M3)、iPad Air 13-inch (M2/M3)、iPad mini (A17 Pro)、iPad Pro 11-inch (M4/M5)、iPad Pro 13-inch (M4/M5) |
| iOS 26.1 | 26.1 | 同上(21 台设备) |
| iOS 26.2 | 26.2 | 同上(21 台设备) |
| tvOS 18.5 | 18.5 | Apple TV、Apple TV 4K (3rd generation)、Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 26.1 | 26.1 | 同上 |
| tvOS 26.2 | 26.2 | 同上 |
| watchOS 11.5 | 11.5 | Apple Watch SE (40mm/44mm) (2nd generation)、Apple Watch Series 10 (42mm/46mm)、Apple Watch Ultra 2 (49mm) |
| watchOS 26.1 | 26.1 | Apple Watch SE (40mm/44mm) (2nd generation)、Apple Watch SE 3 (40mm/44mm)、Apple Watch Series 10 (42mm/46mm)、Apple Watch Series 11 (42mm/46mm)、Apple Watch Ultra 2/3 (49mm) |
| watchOS 26.2 | 26.2 | 同上(10 台设备) |
| visionOS 2.3 | 2.3 | Apple Vision Pro |
| visionOS 2.4 | 2.4 | Apple Vision Pro |
| visionOS 2.5 | 2.5 | Apple Vision Pro |
| visionOS 26.1 | 26.1 | Apple Vision Pro |
| visionOS 26.2 | 26.2 | Apple Vision Pro |
从表中可以清晰看到两代 SDK 并存:Xcode 16.x 提供 macOS 15.x / iOS 18.x / watchOS 11.x / tvOS 18.x / visionOS 2.x,Xcode 26.x 提供 macOS 26.x / iOS 26.x / watchOS 26.x / tvOS 26.x / visionOS 26.x。模拟器运行时在构建阶段由 Configure-Xcode-Simulators.ps1 落地。
Android SDK 环境
镜像预装完整 Android SDK,安装由 install-android-sdk.sh 完成,主要组件如下:
| Package Name | Version |
|---|---|
| Android Command Line Tools | 16.0 |
| Android Emulator | 37.1.11 |
| Android SDK Build-tools | 37.0.0、36.0.0、36.1.0、35.0.0、35.0.1 |
| Android SDK Platforms | android-37.2-beta3 (rev 3)、android-37.2-beta2 (rev 2)、android-37.2-beta1 (rev 1)、android-37.2 (rev 1)、android-37.1 (rev 1)、android-37.0 (rev 2)、android-36.1 (rev 1)、android-36-ext19 (rev 1)、android-36-ext18 (rev 1)、android-36 (rev 2)、android-35-ext15 (rev 1)、android-35-ext14 (rev 1)、android-35 (rev 2)、android-34-ext8 (rev 1)、android-34-ext12 (rev 1)、android-34-ext11 (rev 1)、android-34-ext10 (rev 1)、android-34 (rev 3) |
| Android SDK Platform-Tools | 37.0.1 |
| Android Support Repository | 47.0.0 |
| CMake | 3.31.5、4.1.2 |
| Google Play services | 49 |
| Google Repository | 58 |
| NDK | 27.3.13750724 (default)、28.2.13676358、29.0.14206865 |
toolset 中对应的声明包括:android.platform_min_version = 34、android.build_tools_min_version = 35.0.0、android.ndk.default = "27"与versions: ["27","28","29"]、additional_tools: ["cmake;3.31.5","cmake;4.1.2"],以及cmdline-tools与sdk-tools的具体安装包。报告侧通过sdkmanager --list_installed实测包清单(SoftwareReport.Android.psm1),保证与 SDK 实际内容同步。
Android 相关环境变量:
| Name | Value |
|---|---|
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/29.0.14206865 |
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
注意ANDROID_NDK_*系列指向默认 NDK 27,而ANDROID_NDK_LATEST_HOME指向最新 NDK 29,这与 toolset 中ndk.default = "27"的设定一致;报告脚本对这类符号链接路径做了真实解析(Get-PathWithLink),确保展示的是实际生效目录。
其他软件(Miscellaneous)
- Tcl/Tk8.6.18(来自 Homebrew
tcl-tk@8,toolset 的brew.common_packages中声明,报告通过brew info --json tcl-tk@8读取已装版本)
Tcl/Tk 仅出现在 Sonoma 及更新版本的镜像中,由报告脚本按 OS 分支条件加入。
如何利用这份清单
- 核对预装环境:在 workflow 中可通过
macos-15标签(arm64 对应 Apple Silicon 运行器)选择该镜像。若某个工具未在清单中出现,说明镜像未预装,需要自行安装(例如通过brew install)。 - 读取自动生成的 JSON:与 Readme 同源的 software-report.json 形态的数据(macOS 镜像对应 JSON 在构建产物中输出)可被程序化解析,便于做依赖版本断言。
- 切换 Xcode:默认 Xcode 为 16.4;如需使用 Xcode 26.x 等版本,可结合镜像中声明的
XCODE_<主版本>_DEVELOPER_DIR环境变量或sudo xcode-select --switch /Applications/Xcode_26.3.app切换。 - 查看测试覆盖:镜像在构建时会运行 RunAll-Tests.ps1 全量测试,测试用例散见于 images/macos/scripts/tests 目录(如 Xcode.Tests.ps1、Android.Tests.ps1),它们校验的就是这份清单中列出的关键版本与行为。
总体而言,这份 Readme 的价值在于"可信":它由构建流水线在镜像内自动盘点生成,每个版本号都有对应的安装脚本与 toolset 声明作为依据,是判断 macOS 15 arm64 运行器上"有什么、是什么版本、路径在哪"的权威参考。
【免费下载链接】runner-imagesGitHub Actions runner images项目地址: https://gitcode.com/GitHub_Trending/ru/runner-images
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考