作者:京东零售 叶萌 现代软件开发一般会借助 CI/CD 来提升代码质量、何建加快发版速度、用于云服自动化重复的编译事情,iOS App 只能在 mac 机器上编译,集群CI/CD 工具因此需要有一个 macOS 云服务器集群来执行 iOS App 的何建编译。 今天就来谈谈如何建设 macOS 云服务器集群 最简单的用于云服方式就是购买一批 mac 机器,买它个 1000 台,编译买回来后放入机房,集群把其中一台机器作为管理机,何建申请办公网访问这台机器的用于云服网络权限,每次要维护这批机器里的编译软件时,先从办公网进入管理机,集群然后从管理机在远程连接到其他机器。何建 借助 macOS 官方的用于云服 Virtualization.Framework,可以分钟级创建 macOS 虚拟机,编译这种方式创建的虚拟机性能、稳定性、安全性都很高,可以持续采用更新、更快、更高级的 mac 硬件,最终实现更快的 App 编译速度。 在企业内部申请 macOS 机器,需要经历申请预算、服务器租用领导审批、采购、运输、部署至机房等繁琐步骤,现在可通过购买高配置的 mac 机器,然后再将其按需配置成多台虚拟机,减少了硬件维护成本,提高了扩容效率。这方面代表性产品有 移动端 CI/CD 平台 bitrise 采用的是这种方式,只不过他们做了很多自研工作,打造了 Gen2 编译基础设施,宣称能让客户更快、更频繁的发布 App 自行购买并维护 mac 机器还是不太方便,成本很高,如果能云端管理、按需付费就更好了。亚马逊的 AWS 解决了这个问题,他家的 Amazon EC2 Mac Instances 能让我们按需申请 macOS 服务器,如果能接受云端服务的话,其实这种方式最省事。与这种服务类似的产品有 sickcodes/Docker-OSX 是最近流行的一个项目。 这个项目具有很多优势,例如 也有风险 我在裸金属上利用 Docker-OSX 项目确实跑起来了 macOS 虚拟机。运行该项目有以下几点要注意 有没有可能在私有云里实现 aws 这种 mac 管理体验呢?MacStadium 家的 Orka 平台做到了。Orka 有以下好处 1 - 降低了 mac 集群的管理成本 利用 Kubernetes 调度 mac 服务器,这与 Linux 服务器的管理保持一致,方便融入公司已有技术栈 2 - 在真正的 Apple 硬件上运行 mac 虚拟机 3 - 用心为开发者设计 对于企业来说,可以考虑购买 Orka 平台,在私有云里面搭建 macOS 云服务器集群。GitLab SaaS 版也是使用这种方式来提供托管的 macOS Runner 的 我讲了建设 macOS 云服务器集群的 5 种方式,这些方式各有利弊,总的来说:购买 mac mini / Mac Studio 机器
虚拟化 macOS 集群
云端管理 macOS 服务器
在 linux 里运行 macOS 虚拟机
在 Apple 硬件上用 k8s 来调度 macOS
总结