Cloud Mac при медленном iOS CI и очереди macOS-раннеров GitHub Actions

Знакомо?

  • Почему iOS CI всё медленнее?
  • macOS-раннеры GitHub Actions снова в очереди?
  • xcodebuild зависает, уходит в таймаут или падает без видимой причины?
  • Нет Mac на столе — как отгрузить iOS-сборку?
  • Cloud Mac реально тянет Xcode?
  • Нужны Claude Code / Ollama 24/7, а ноутбук засыпает при закрытии крышки?

Это вопросы, которые мы сейчас слышим чаще всего. Мой подход: сначала вывод, потом почему застревает, потом как выбрать — без объездов.

Коротко

Cloud Mac — по сути выделенный Mac Mini, который арендуете посуточно, когда macOS-сборки вечно ждут, Actions держит в очереди или нужен Xcode, а Mac под рукой нет.

Три строки, которые для меня всё объясняют:

  • Свой Mac — без общей CI-очереди со всеми остальными
  • Сборка и релиз на удалённой машине — без покупки MacBook только на неделю релиза
  • Аренда на нужные дни — пиковая нагрузка лучше, чем простаивающее железо

Что такое Cloud Mac на самом деле?

Несколько простых фактов: SSH или VNC на настоящий Mac Mini (класс M4), вся машина ваша, оплата по дням или месяцам, поднимается примерно за пять минут.

  • Не VM-Mac на общем хосте
  • Не API Claude / GPT — подпись и нотаризация всё равно требуют macOS
  • Это Mac в дата-центре под компиляцию или инференс

Та же базовая идея, что у AWS EC2 Mac: реальное железо. Разница обычно в посуточной аренде, близости узла к офису и скорости развёртывания. Для стабильного xcodebuild или Ollama я бы взял выделенный физический Mac, а не шумную multi-tenant VM.

Когда стоит смотреть на Cloud Mac?

Команды часто застревают на одном из этих пунктов. Если что-то откликается, аренда Cloud Mac обычно лучше, чем покупать ещё один MacBook или смотреть на очередь Actions:

  • macOS-раннер GitHub Actions в очереди 10+ минут
  • xcodebuild в CI нестабилен — таймауты и случайные красные билды
  • Каждая сборка заново тянет Pods / SPM — бесконечные cold start
  • Будни на Windows / Linux, нет локального Xcode, но TestFlight должен уйти
  • Агентам или Ollama нужно не падать — сон ноутбука убивает задачу
  • Неделя релиза требует доп. билдеров — без mini, который простаивает круглый год

Для сценария «основной ПК не Mac, сборки удалённо»: Windows/Linux как основной ПК + удалённый Mac-остров сборки.

Почему iOS CI тормозит?

Первая мысль — «репозиторий вырос», но часто дело в том, как устроен CI:

  • macOS-раннеры GitHub Actions общие — в неделю релиза ожидание часто длиннее самой сборки
  • Сборки Xcode прожорливы к диску — потеряли DerivedData и пересобираете с нуля
  • CocoaPods / SPM холодно стартуют — уничтожили раннер, всё скачивается заново
  • Тулчейн Apple не контейнеризуется как Linux CI — подпись, keychain, TCC хотят фиксированную машину
  • Логи выглядят так: 8 минут сборки, 40 минут ожидания

Итог: дело может быть не в коде — в общих раннерах и кэшах, которые не держатся. Выделенный Mac плюс self-hosted runner бьёт ровно в это.

Математика купить vs арендовать: self-hosted Mac-раннеры, кэш и постоянный диск.

Купить, арендовать или API?

Где застрялиКуда бы склонился
Очередь iOS CI, неделя релизаCloud Mac — машины посуточно, self-hosted runner
Нет Mac, нужны Archive / TestFlightCloud Mac — сборки по SSH, VNC раз для сертификатов
Пробуете Agent, OpenClaw, OllamaCloud Mac — вернули, если не зашло
Ежедневная разработка, одна машина на годыКупить Mac mini
Быстрый чат, одноразовый прототипОблачного API хватит
Чувствительный код, инференс всегда включёнCloud Mac или свой mini — зависит от утилизации

Три пути рядом

Cloud MacСвой Mac miniОблачное API
Запуск~5 минутДоставка + настройкаРегистрация и вперёд
Xcode / нотаризация
Эластичность CIВернуть, когда готовоФиксированный актив
Приватный инференсOllama/MLX, выделенноВыделенноДанные уходят за периметр

Нюанс: Cloud Mac не заменяет ежедневный MacBook — это Mac в стойке под сборки; печатаете вы по-прежнему на ноутбуке.

Сколько стоит аренда?

Если CI вспыхивает только вокруг релизов, несколько дней аренды часто выгоднее покупки mini. Если крутится 24/7 весь год, владение может амортизироваться дешевле — решает утилизация.

ВариантПорядок цифрНагрузка
Cloud Mac M4 16GBоколо $20,6/день или $102,9/мес3–5 дней релизного спринта, выделенный runner
Cloud Mac M4 Pro 24GBоколо $39,8/день или $202,9/мес14B Ollama + командные агенты
Свой Mac mini M4 16GBоколо $599+; ~$0,55/день за 3 года + эксплуатацияПостоянный 24/7 CI / home lab

Грубый расчёт: три релизных дня на 16GB ≈ $62 — ниже цены покупки mini. Две машины по пять дней в ship week ≈ $206 — иногда дешевле, чем смотреть, как крутится Actions. Актуальные тарифы: тарифные планы Macstripe.

Размер

СценарийВыбор
Выделенный iOS CI / небольшой репо16GB; крупный репо — диск 1TB под DerivedData
Команда ollama serve + 14B24GB (полевые заметки 7B vs 14B)
ЗадержкаОфисы APAC: Сингапур / Токио / Гонконг; SSH RTT часто 30–80ms

Что реально покрывает

1. Укротить очередь CI

Self-hosted runner на Cloud Mac, держать DerivedData и кэш Pods тёплыми. Включить на ship week, вернуть, когда тихо — ожидание падает с десятков минут почти до нуля.

2. Удалённый путь релиза через Xcode

Windows / Linux на каждый день; пайплайн запускает Archive, подпись, нотаризацию, TestFlight на удалённом Mac. Сертификаты и TCC через VNC один раз, дальше headless по SSH.

3. Агенты, которые не падают

ollama serve в стойке, Claude Code на dev-машине смотрит туда. Закрытие ноутбука не убивает прогон. Подключение: workflow Claude Code + Ollama.

4. Приватный инференс Ollama

Код и внутренние доки остаются внутри; 24GB с 14B лучше, чем swap на ноутбуке. Фреймворк: Ollama vs MLX; масштаб: приватный AI-кластер.

5. Автоматизация браузера

Настоящие профили браузера, CDP, macOS TCC — сетапы в духе OpenClaw часто стабильнее на удалённом Mac. См. OpenClaw на удалённом Mac.

FAQ

Почему iOS CI такой медленный?

Обычно очередь общих раннеров, кэши без персистентности и тулчейн, который не контейнеризуется чисто — время ожидания часто длиннее реальной сборки, а не просто «проект вырос».

macOS-раннер GitHub Actions всегда в очереди — что делать?

Арендовать выделенный Mac на ship week, подключить self-hosted runner, держать кэши тёплыми, вернуть машину после. Лучше, чем смотреть на общий пул.

Можно ли делать iOS без Mac?

Код пишете где угодно; Archive, подпись, нотаризация и TestFlight требуют macOS. SSH / VNC на Cloud Mac для релизного пути.

Cloud Mac тянет Xcode?

Да — настоящий Mac Mini, полный Xcode, xcodebuild, сертификаты и keychain. Удалённая сборочная машина, ничего экзотического.

Cloud Mac vs покупка Mac mini — что выигрывает?

Релизные всплески и «попробовать перед покупкой» — за аренду. Настоящая 24/7-нагрузка круглый год — часто за владение. Смотрите утилизацию.

xcodebuild падает или уходит в таймаут в CI?

Проверьте время очереди, диск под DerivedData, дрейф signing env. Выделенный Mac снижает IO-конфликты и сбросы окружения.

Cloud Mac серьёзно тянет Xcode?

Да. Поставить Xcode, SSH для ежедневных сборок, VNC в первый раз для сертификатов и TCC.

Чем это отличается от hosted-раннеров GitHub?

Hosted = общий пул, очередь и cold start вне вашего контроля. Cloud Mac = вся машина, кэши и signing env могут оставаться на месте.

Что такое Cloud Mac?

Выделенный Mac Mini посуточно или помесячно, через SSH / VNC. Не срез VM, не API.

Сколько стоит аренда?

Ориентир: M4 16GB около $20,6/день, $102,9/мес; 24GB около $39,8/день, $202,9/мес. См. тарифы.