如何建设一个用于编译 iOS App 的 macOS 云服务器集群?

作者:京东零售 叶萌

现代软件开发一般会借助 CI/CD 来提升代码质量、加快发版速度、自动化重复的事情,iOS App 只能在 mac 机器上编译,CI/CD 工具因此需要有一个 macOS 云服务器集群来执行 iOS App 的编译。

今天就来谈谈如何建设 macOS 云服务器集群

image.png

购买 mac mini / Mac Studio 机器

最简单的方式就是购买一批 mac 机器,买它个 1000 台,买回来后放入机房,把其中一台机器作为管理机,申请办公网访问这台机器的网络权限,每次要维护这批机器里的软件时,先从办公网进入管理机,然后从管理机在远程连接到其他机器。

虚拟化 macOS 集群

借助 macOS 官方的Virtualization.Framework,可以分钟级创建 macOS 虚拟机,这种方式创建的虚拟机性能、稳定性、安全性都很高,可以持续采用更新、更快、更高级的 mac 硬件,最终实现更快的 App 编译速度。

在企业内部申请 macOS 机器,需要经历申请预算、领导审批、采购、运输、部署至机房等繁琐步骤,现在可通过购买高配置的 mac 机器,然后再将其按需配置成多台虚拟机,减少了硬件维护成本,提高了扩容效率。这方面代表性产品有

移动端 CI/CD 平台 bitrise 采用的是这种方式,只不过他们做了很多自研工作,打造了Gen2编译基础设施,宣称能让客户更快、更频繁的发布 App

云端管理 macOS 服务器

自行购买并维护 mac 机器还是不太方便,成本很高,如果能云端管理、按需付费就更好了。亚马逊的 AWS 解决了这个问题,他家的Amazon EC2 Mac Instances能让我们按需申请 macOS 服务器,如果能接受云端服务的话,其实这种方式最省事。与这种服务类似的产品有

在 linux 里运行 macOS 虚拟机

sickcodes/Docker-OSX是最近流行的一个项目。

  • 借助 KVM 技术,实现了在 linux 里运行 macOS 虚拟机

  • 借助 docker,简化了 macOS 虚拟机的部署

这个项目具有很多优势,例如

  1. 不依赖专门的 Apple 硬件,能够运行 KVM 的 x86_64 机器就行

  2. 能够通过 docker 容器来部署 macOS 虚拟机。未来借助 k8s,能够实现大规模 macOS 服务器的管理,轻易实现扩缩容

也有风险

  1. 不太合规,macOS 正常只能在 Apple 硬件上运行

  2. 在 KVM 里运行 macOS,兼容性、性能、稳定性需要评估。如果出现问题需要付费找项目维护者解决

我在裸金属上利用 Docker-OSX 项目确实跑起来了 macOS 虚拟机。运行该项目有以下几点要注意

  1. linux 宿主机需要支持嵌套虚拟化(Nested Hardware Virtualization)。开启硬件虚拟化后才能安装 kvm。裸金属和物理机正常都支持

  2. 对 Linux 内核有要求,操作系统最好比较新,CentOS 8 可以,CentOS 7 不行

在 Apple 硬件上用 k8s 来调度 macOS

有没有可能在私有云里实现 aws 这种 mac 管理体验呢?MacStadium家的 Orka 平台做到了。Orka 有以下好处

1 - 降低了 mac 集群的管理成本
花时间更少,例如管理服务器、在服务器上安装软件

利用 Kubernetes 调度 mac 服务器,这与 Linux 服务器的管理保持一致,方便融入公司已有技术栈

2 - 在真正的 Apple 硬件上运行 mac 虚拟机
不用担心兼容性、稳定性、性能问题

3 - 用心为开发者设计
提供多种操作方式(命令行、REST API)来管理 mac 虚拟机

对于企业来说,可以考虑购买 Orka 平台,在私有云里面搭建 macOS 云服务器集群。GitLab SaaS 版也是使用这种方式来提供托管的 macOS Runner 的

总结

我讲了建设 macOS 云服务器集群的 5 种方式,这些方式各有利弊,总的来说:

  • 如果能接受使用云服务器,建议直接购买 AWS 的 Amazon EC2 Mac Instances,方便、成本低

  • 自建机房,如果计划建设的 macOS 集群规模很大,建议购买 MacStadium 的 Orka 平台来建设,专业服务,避免踩坑,省时省力

  • 自建机房,如果 macOS 集群规模比较小,对自动化要求不高,建议购买高配的 apple 硬件,然后通过Virtualization.Framework虚拟化出多台 macOS 机器,整体架构比较简单,也能解决问题

原文链接:https://www.cnblogs.com/jingdongkeji/p/17352910.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何建设一个用于编译 iOS App 的 macOS 云服务器集群? - Python技术站

(0)
上一篇 2023年4月25日
下一篇 2023年4月25日

相关文章

  • 基于prompt tuning v2训练好一个垂直领域的chatglm-6b

    基于Prompt Tuning V2训练垂直领域的ChatGLM-6B攻略 Prompt Tuning V2是一种自然语言处理技术,可以通过给定的prompt文本来训练模型,从而提高模型的性能。本文将介绍如何使用Prompt Tuning V2训练垂直领域的ChatGLM-6B,并提供两个示例说明。 1. 环境准备 在开始训练ChatGLM-6B之前,需要准…

    云计算 2023年5月16日
    00
  • 看看百度财报中的云计算

    百度发布了Q2季度财务报告。从报告中可以看出,百度第二季度总营收为182.64亿元(约合27.48亿美元),移除去哪儿影响,实际同比增长16.3%。在财报中,百度的网络营销收入同比增长了4.4%,目前百度地图已登陆亚太、欧洲和南美63个海外国家和地区;百度金融也首创秒批、远程预授信等服务,领跑职业教育分期信贷服务市场;百度无人车更是与芜湖市政府、上海国际汽车…

    云计算 2023年4月13日
    00
  • FinOps首次超越安全成为企业头等大事丨云计算趋势报告

    随着云计算在过去十年中的广泛应用,云计算用户所面临的一个持续不变的趋势是:安全一直是用户面临的首要挑战。然而,这种情况正在发生转变。  知名IT软件企业 Flexera 对云计算决策者进行年度调研已经持续12年,而今年安全问题首次没有成为最大挑战。在3月8日发布的《Flexera 2023年云计算现状报告》中显示,82%的受访者表示,他们面临的最大挑战是管理…

    云计算 2023年4月13日
    00
  • asp.net core webapi文件上传功能的实现

    关于 ASP.NET Core WebAPI 文件上传功能的实现,具体步骤如下: 1. 安装必要的 NuGet 包 在 ASP.NET Core 项目中,我们需要安装 Microsoft.AspNetCore.Http 和 Microsoft.AspNetCore.StaticFiles 两个 NuGet 包,它们分别提供了处理 HTTP 请求的对象和处理静…

    云计算 2023年5月17日
    00
  • 数据库性能优化一:数据库自身优化提升性能

    针对“数据库性能优化一:数据库自身优化提升性能”的话题,以下是我为你分享的完整攻略: 1. 初步分析数据库性能问题 在进行数据库性能优化之前,我们需要先对数据库进行初步的分析和调查,确定性能问题的瓶颈所在。可以从以下几方面入手: 查询慢:分析慢查询日志,找出频繁出现的查询,查看执行计划,确定是否需要索引优化或者改写SQL语句等; 连接数过多:查看数据库连接数…

    云计算 2023年5月18日
    00
  • 在 ASP.Net Core 中使用 MiniProfiler的方法

    在 ASP.Net Core 中使用 MiniProfiler的方法 在本攻略中,我们将详细讲解在 ASP.Net Core 中使用 MiniProfiler 的方法,包括 MiniProfiler 的基本概念、使用方法和示例说明。 MiniProfiler 基本概念 MiniProfiler 是一个轻量级的性能分析工具,用于在 ASP.Net Core 应…

    云计算 2023年5月16日
    00
  • oppo reno云空间满了怎么办?oppo reno云空间清理教程

    oppo reno云空间满了怎么办?oppo reno云空间清理教程攻略 本文将介绍oppo reno云空间满了怎么办以及oppo reno云空间清理教程的完整攻略,包括清理方法、注意事项、示例说明等。 1. oppo reno云空间满了怎么办? 当oppo reno云空间满了时,可以通过以下方法进行清理: 1.1 删除不需要的文件 在oppo reno云空…

    云计算 2023年5月16日
    00
  • Nodejs libuv运行原理详解

    Node.js libuv运行原理详解 Node.js是一种基于事件驱动、非阻塞I/O模型的服务器端JavaScript运行环境。在Node.js中,libuv是一个跨平台的异步I/O库,负责处理事件循环、文件I/O、网络I/O等操作。本文将详细介绍Node.js libuv的运行原理,并提供两个示例说明。 libuv的事件循环 libuv的事件循环是Nod…

    云计算 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部