2026-05-06 — рантайм iOS Simulator, бюджет диска, выборочная установка и очистка CI на арендованном облачном Mac Apple Silicon (Гонконг / Япония / Корея / Сингапур / США)
Гонконг, Токио, Сеул, Сингапур, СШАвМак мини М4арендоватьтест xcodebuildКоманда, поворачивающаяся, сразу замечает второй заряд.Время выполнения симуляторане является бесплатным,Библиотека/Разработчик/CoreSimulatorподчиненныйМасштаб несколько ГБВозьмите кусочекПроизводные данныеи конкурировать за пропускную способность NVMe, которая удваивается, когда в очередь присоединяются партнеры watchOS. этот2026-05-06Руководство отвечает на три оперативных вопроса: Что в нем?инвентарьКак выбрать только те семейства ОС, которые действительно необходимы местам назначениявыбиратьКак заставить ночные тесты пользовательского интерфейса запускаться, не убивая среду выполнениячерносливЭто метод.Тест безголового симуляторарасширять иДворник по чистке дисковна том же хосте.параллельная полосаПри бегеРазделение производных данныхПожалуйста, обратитесь к
Почему CI в 2026 году до сих пор путают с «Установка Xcode = Симулятор готов»
Xcode.app включает в себя набор инструментов,время выполнения— это полезные данные с поддержкой версий, которые удаляются по требованию. Три повторяющиеся ошибки:
- дрейф пункта назначения— ЯМЛ — это
айфон 15Однако после обновления Xcode хостайфон 16Я подготовил только изображение. - бесшумное сопряжение часов— Локально Xcode автоматически получил среду выполнения часов, а CI — нет.
- дворник перебор— cron уничтожил «старую» среду выполнения, которая все еще необходима QA для воспроизведения сбоя в App Store.iOS 17.6терять.
След во время выполнения: где скрываются гигабайты
Хосты Apple Silicon хранят данные устройств, общие кэши dyld и фрагменты во время выполнения. Примерно для пары основных исполняемых сред iOS (устройство + изображение часов по годам)7–14 ГБ. Еще больше, если вы поместите языковой пакет на полосу скриншотов пользовательского интерфейса.3–6 ГБ. Важны не точные байты, а то, что происходит, когда пять инженеров используют один и тот же общий сборщик и устанавливают последнюю бета-версию среды выполнения.дифференциалявляется.
увеличить время выполнениязадержка в очередиПожалуйста, соотнесите со свободным пространством12%Ниже первые симптомы не являются мгновенным отказом.тестКопирование приборов обычно происходит медленно. Это связано с тем, что APFS с трудом находит смежные экстенты.
Новая мера XcodeПри использовании , получение во время выполнения не является одним флажком.Миграция емкостиявляется. Приглашение к многоплатформенному пакету, восстановление кеша CoreSimulator после первой «зеленой» сборки24–48 часовПроисходит неявное теплое расширение. Убедитесь, что арендованный хост имеет четкое окно обслуживания и не перекрывает трафик PR и первоначальные массовые загрузки. Проигнорированная команда увидит, что красная сборка без изменений кода исчезает на следующий день. в этом окнедфЗапишите его ежечасно и сравните со стационарной кривой за предыдущий квартал. Склон – это история2×Если оно превышает , весьма вероятно, что перекрывающиеся срезы бета и ГА были размещены на одной дорожке.
наконецКто может поставить в рантайме?Пожалуйста, задокументируйте. Типичный пример личной установки sudo, в результате которой были получены «загадочные 6 ГБ» общих ключей. Централизуйте изменения в билетах инфраструктуры и тегах изображений CI,сшСессии можно проверять, особенно при сохранении подписных материалов.СингапуркомарБейтоЭто тот случай, когда правила обязательны.
Матрица дорожек: какой хост содержит какое время выполнения
Четко разделите обязанности и не думайте, что все бегуны взаимозаменяемы.
| метки дорожек | Политика времени выполнения | владелец уборки |
|---|---|---|
iOS-текущий |
1 бутылка последней версии GA iOS и App Store, согласованной N-1 | Еженедельная обрезка + билет |
тяжелый часы |
только образ watchOS + только сопряженное устройство | Ежемесячно; не удаляйте N-1 без одобрения контроля качества |
только для архива |
Минимум симулятора; фактическая машина Архив имеет приоритет | Агрессивный для симулятора, бережный для клавиш |
Команда инвентаризации, которую оператор вставляет в Runbook.
Начните с неразрушающих исследований и постепенно расширяйте проблему.
список сред выполнения xcrun simctl
дф -ч /
du -sh ~/Library/Developer/CoreSimulator/* 2>/dev/null | сортировка -h | хвост -n 20
Если цифры отличаются от цифр в Finder, запустите от имени пользователя CI.тыПоверьте нам: запущенные задания выполняются на учетных записях разработчиков. Если это другой том/Тома/сборкиНо я повторяю.
Runbook выборочной установки (счастливый путь)
- заморозить очередьили слить метку, связанную с хостом.
- Включайте в матрицу назначения для следующего спринта только те пакеты времени выполнения, которые вам действительно нужны.скачать.
- за время выполнения
xcrun simctl загрузкакурил сsysctl hw.modelПроверьте, остался ли Apple Silicon. - Поднимите тег версии изображения, чтобы он соответствовал CI YAML реальности.возобновить очередь.
- Установленные коллекции в репозиторий инфраструктуры.записывать(Не делайте это изолированной вики).
Между шагами 2 и 3 к билетуконтрольная суммаИли оставить строку версии Apple и откат будет понятен, если среда выполнения нарушена из-за сломанного зеркала.
Политика обрезки: что можно удалить
Хороший дворник – этодеривативыагрессивному,время выполнениярассматривается как полустатическая инфраструктура. Двухэтапная политика:
| Результаты | безопасная частота | Риск чрезмерной обрезки |
|---|---|---|
| Незапущенный терминал симулятора | каждый день | Низкий — — Воссоздано из шаблона. |
старый.xcresultпучок |
После загрузки в хранилище объектов | Средний – если вам нужно 30–90 дней отсутствия у хостера для юридического обслуживания. |
| тело пакета времени выполнения | Ежеквартально + список контроля качества | Высокий — нарушает воспроизводимость воспроизведения сбоев. |
Параллельные линии и интегрированная нагрузка на память
параллельныйxcodebuildусиливает отток запуска симулятора. Пожалуйста, ограничьте количество одновременных запусков на один хост, используя метки очереди.Параллельная статья ДжоВидеть. Если нехватка памяти достигает пика, попробуйте поменять местамиУменьшите количество одновременных пунктов назначенияпредпочтительный; XCTest чрезвычайно уязвим для подкачки в единой памяти.
системная диагностикаПолучите кусочек — давление диска сначала появляется как сторожевой таймер SpringBoard.Окно обновления Xcode: получение данных во время выполнения и порядок архивирования
Если нет теплого второго узла,Большая загрузка во время выполненияиОтправка TestFlight зависает ночьюПожалуйста, не кладите их в одну и ту же ночь. Самый безопасный хост MacXCode —синий/зеленый строитель: Изображение кандидататест xcodebuildи светАрхив xcodebuild -archivePath /tmp/Smoke.xcarchiveПродвигайте тег изображения после того, как оба станут зелеными. Если вы не можете позволить себе двойные узлы, уменьшите объем: одна дополнительная среда выполнения за время обслуживания, а не пять одновременно. каждой загрузкиминуты настенных часовзаписи и финансовые отчеты разделены1 ТБПозволяет сравнить, арендовать ли строитель или сжечь релиз выходного дня.
После обновления YAMLстрока назначенияПожалуйста, повторите проверку. Apple иногда меняет имена профилей оборудования симулятора. Несоответствие выглядит как «пункт назначения не найден».список симктлкажется заполненным — скорее всего, потому, что задание указывает на обрезанную аппаратную строку.список доступных устройств simctlПожалуйста, оцените машиночитаемый экспорт инфрарепозитория.
Числовые цели в Grafana
- Постоянное использование диска перед операциями подкачки85%верхний предел.
- 16 ГБНа машинах запущенные Симуляторы могут работать до4Стенд.
- Верхний предел холодной приемки для «Получение данных во время выполнения + запуск + одиночный тест XCTest»22 минуты; Предупреждать, если превышено после обновления.
9 шагов перед удалением «огромной папки»
- Убедитесь, что в работе нет заданий архивирования.
- текущий
список симктлСнимок в GitOps. - прошлое30 днейОпределите время выполнения нулевого задания.
- Уведомите отдел контроля качества с указанием точной даты удаления.
- Сливайте воду только по одной полосе за раз.
- Удаление во время выполнения только с поддерживаемыми путями пользовательского интерфейса/CLI.
- Повторно выполните дым в оставшемся пункте назначения.
- До и после удаления
дфСравните и приложите разницу к билету. - Предварительные теги только для здоровых хостов.
Часто задаваемые вопросы: бета-версия, Apple Silicon, межрегиональный хостинг
| вопрос | Практические ответы (06.05.2026) |
|---|---|
| Должен ли я помещать бета-версии среды выполнения в производственную CI? | Изолирован от хозяина, меченного канарейками; не смешивается с полосами отправки в App Store. |
| Должны ли хозяева из Сингапура и США находиться в одной группе? | Соответствовать минимальному общему набору; Добавления для конкретного региона возможны, если они закодированы в YAML. |
Почему Mac mini M4 емкостью 1–2 ТБ выигрывает в CI на основе симулятора
Нагрузка на симуляторслучайное чтениеЭто близко. Узел MacXCode «голый металл»Мак мини М4NVMe обеспечивает предсказуемое время загрузки, даже если четыре канала загружают разные поколения ОС с одной и той же матрицей PR. Такая предсказуемость превращает численное бюджетирование в дисциплину, лучше, чем покупка загадочного «облачного диска высокой емкости», стоящего за Noisy Neighbor. Планирование мощностей – это второйЯпонияЕсли ты попросишь канарейкуРегиональные цены, если система безопасности запросит подтверждение того, кто удалил среду выполненияРуководство по доступу к SSH/VNCПожалуйста, добавьте.
Добавьте запас NVMe до того, как возобновится разрастание среды выполнения
Mac mini M4 · Гонконг/Япония/KR/SG/США · SSH/опционально VNC