CI/CD

2026: параллельная лаборатория XCTest на удалённых Mac
пять регионов · симуляторы M4/M4 Pro · DerivedData · аренда FAQ

Редакция zulcloud 2026-05-18
Кратко

Стройте параллельную XCTest-лабораторию на удалённом Mac: сначала согласуйте задержки пяти регионов и маршрутизацию runner, ограничьте параллелизм симуляторов на M4 / M4 Pro, защитите диск изоляцией DerivedData, затем зафиксируйте бюджет по матрице краткосрочной и месячной аренды.

5 регионов
Гонконг / Сингапур / Токио
запад и восток США
45 ГБ
запас APFS для
параллельных UI-тестов
1 job
изолированный DerivedData
на каждый CI job

1Пять регионов: задержки и маршрутизация XCTest

Удалённая лаборатория XCTest в 2026 году — это не «один Mac в облаке», а сеть узлов с предсказуемой маршрутизацией. Команды из Китая, Юго-Восточной Азии и Северной Америки по-разному ощущают задержку: инженеру важны миллисекунды до SSH и VNC, а пайплайну — стабильная полоса для .xcresult и скриншотов. Поэтому сначала измеряйте RTT и jitter из ваших офисов и CI-агентов, а уже потом закрепляйте регион в SLA провайдера.

Узкое место чаще в стриминге логов и выгрузке артефактов, а не только в компиляции. Ориентировочный RTT из офисов материкового Китая (проверьте mtr):

Узел RTT (ориентир) Лучше для XCTest Заметки
Гонконг 30–45 мс Интерактивная отладка, smoke Базовый APAC выбор
Сингапур 55–75 мс Матрица SEA, TestFlight Стабильный магистральный канал
Токио 60–90 мс UI для Японии, релей по TZ Дополняет HK/SG
Запад США 140–170 мс Ночные полные сьюты, colo AWS us-west Высокая полоса для артефактов
Восток США 170–200 мс Приватный CI GCP/AWS East Быстрее обновление железа выбор

Маркируйте runner как region-hk-ui и закрепляйте в договоре регион + уровень параллелизма; отчёты передавайте между регионами, но не синхронизируйте целые деревья DerivedData. Подробнее: релей CI runner между APAC и востоком США

⚠️ Параллелизм ≠ число ядер: когда симуляторы конкурируют с WindowServer и диском, рост concurrency превращает сбои в «случайные флейки».

Разделите workflow на «интерактив» и «ночной шард»: днём держите smoke и отладку в APAC, тяжёлые UI-сьюты и выгрузку артефактов — на западе или востоке США рядом с вашим облаком. Так вы не платите за лишние гигабайты через Тихий океан в обе стороны и не заставляете разработчиков ждать ночной прогон с RTT 180 мс.

2M4 / M4 Pro: матрица параллелизма симуляторов

Ограничивайте по объёму RAM; UI- и unit-полосы считайте отдельно:

RAM M4 (10 ядер) M4 Pro (12 ядер)
16 ГБ 1 UI-полоса; до 3 unit-симуляторов Чуть больше запаса; двойной UI избегайте
24 ГБ 2 UI; 4 unit 3 UI (с изоляцией сборки)выбор
32 ГБ+ 3 UI (следите за сжатием памяти) Высокий параллелизм / несколько Xcode

Если SpringBoard перезапускается или свободно на APFS меньше 45 ГБ — сразу снижайте параллелизм.

Для планировщика CI: одна UI-полоса ≈ 6–8 ГБ RAM и 8–12 ГБ временного диска на полный UI-сьют. Unit-полосы легче, но I/O всплескивает при пересборке модулей. Зафиксируйте потолки в README runner, чтобы дежурные не «лечили» флейки удвоением concurrency ночью.

На M4 Pro имеет смысл выделять отдельные тома под кэш симулятора и под DerivedData: так параллельные UI-полосы реже блокируют друг друга при записи на APFS. Если в матрице Xcode одновременно крутятся iOS 17 и 18, заложите +1 UI-полосу запаса по RAM или снизьте unit-параллелизм на один слот — смешанные runtime заметно тяжелее «чистого» iOS 18.

3Управление DerivedData и масштаб 1 ТБ / 2 ТБ

DerivedData — главный «тихий убийца» параллельных лабораторий: несколько job пишут в один каталог, индексы Xcode путаются, а очистка по cron сносит чужой кэш посреди прогона. Политика «один job — один путь» должна быть в скрипте bootstrap runner, а не в устной договорённости.

Не делите каталог DerivedData по умолчанию между job. Задавайте DERIVED_DATA_PATH=/var/ci/dd-${JOB_ID} на каждый job; при <15% свободного места тесты замедляются раньше, чем падают. 1 ТБ и еженедельная очистка хватает большинству команд; 2 ТБ — при многих ветках и версиях Xcode параллельно. Перед расширением диска делайте снимок. См. также: удалённый Mac, OpenClaw, диски и шлюз FAQ

4Матрица краткосрочной и месячной аренды

Сигнал Краткосрочно Месячно
Загрузка очереди >70% в релизные недели, <30% в остальное Очереди весь день норма
Окно параллелизма Всплеск 2–4 доп. симулятора Фиксированный M4 Pro + пул 2 ТБ
Логика затрат Оплата за окно; удобно под пики Ниже амортизация; нужен прогноз утилизации

Сравнивайте простой с надбавкой за краткосрочный пик — не только суточный прайс.

Гибрид «месячный костяк + краткосрочный всплеск» часто выигрывает у чисто помесячного контракта: две-три M4 Pro в резерве на месяц и дополнительные M4 на неделю релиза покрывают декабрьский пик без оплаты за простой в феврале. Зафиксируйте в договоре, можно ли переносить неиспользованные краткосрочные дни на следующий квартал — это снижает риск для финансов.

5FAQ

В Вырос процент падений параллельного XCTest — с чего начать?
Запас на диске, «зависшие» симуляторы, не перезаписал ли соседний job DerivedData, затем — не превышен ли параллелизм по матрице RAM выше.
В Стоит ли colocate XCTest с агентами AWS/GCP?
Да, если артефакты крупные: Mac на западе или востоке США рядом с облаком сокращает минуты выгрузки. Интерактивную отладку оставьте в Гонконге или Сингапуре; US-узлы — под ночные шарды и тяжёлые пайплайны.
В Когда заказывать расширение диска с 1 ТБ до 2 ТБ?
Когда свободное место стабильно падает ниже 20% при текущей очистке, одновременно работают три и более веток с разными Xcode, или вы храните кэш симулятора между job. Расширяйте диск со снимком и проверьте, что job не завязаны на абсолютные пути старого тома.

6Запускайте лабораторию на Mac mini

Параллельному XCTest нужен нативный стек симуляторов macOS и стабильность без присмотра. Apple Silicon даёт пропускную способность памяти, которую Intel-хосты редко догоняют; Gatekeeper и SIP сужают риск на runner. Mac mini M4 и M4 Pro в простое ≈4 Вт и тихи — удобно для лабораторий 24/7. Начните с Mac mini M4 и отдайте параллельным тестам эту полосу памяти — см. CTA ниже.

cloud_done
ZULCLOUD · MAC CLOUD SERVERS

Облачный Mac mini M4 для параллельного XCTest

Запуск за минуты — удалённый Mac M4 / M4 Pro с диском 1 ТБ / 2 ТБ по запросу · Для параллельного XCTest, матриц симуляторов и CI-лабораторий.

cloud_done
Получить сейчас