← К техническому блогу

Почему WWDC 2026
замедлила iOS CI?

MacBook с редактором кода и мультимониторным столом—iOS CI после WWDC
После Xcode 26 beta каждая холодная сборка напоминает: CI медленен из‑за модели исполнения, а не клавиатуры.

Вывод: WWDC 26 (8 июня) выпустила Xcode 26 / iOS 27 SDK — ни одного нового Mac объявлено не было. Для iOS-команд это классический сценарий «ПО идёт вперёд, железо молчит»: ваш CI-конвейер должен одновременно поглотить сброс кэша + полную перекомпиляцию + очереди переполненных хостируемых Runner-ов. Время сборки увеличивается не на 10%, а рушится структурно.

Четыре накладывающихся фактора: ① обновление до beta вынуждает полностью очистить DerivedData; ② модули iOS 27 SDK стали тяжелее, компиляция Swift — дороже; ③ без M5 Mac mini нет ближайшего пути к росту вычислительной мощности; ④ в июне вся отрасль одновременно гоняет CI, время ожидания macos-latest резко возрастает.

Ловушка, которую нужно избежать: объяснять замедление тем, что «M4 не справляется», и пассивно ждать осеннего M5 — смена чипа не исправляет ephemeral-модель Runner.

Решение, которое работает прямо сейчас: self-hosted Mac mini с постоянным диском, разделение beta-валидации и production-release по отдельным лейблам Runner. Подробности в руководстве по ускорению self-hosted Runner.

В понедельник, 9 июня, Slack-каналы iOS-лидов загорелись почти одновременно: «Archive на main вырос с 11 минут до 34 за ночь», «macos-latest висит в очереди 18 минут, не стартует», «установил Xcode 26 beta — DerivedData исчез». Это не ошибка конфигурации отдельного репозитория. Сезон WWDC каждый год вызывает CI-землетрясение. В 2026 году к нему добавились дефицит памяти, отсутствие нового десктопного Mac и заметно потяжелевший SDK Apple Intelligence. Почему не показали M5 — читайте в M5 Mac mini: почему его не было на WWDC 26. Эта статья отвечает на один вопрос: почему ваш конвейер резко замедлился и что изменить прямо сейчас.

1) Три типичных симптома замедления CI после WWDC

Откройте логи Actions. Если вы фиксируете два и более из следующих признаков — перед вами волна WWDC-шока, а не регрессия в собственном коде:

  • Фаза bootstrap резко растёт: pod install, SPM resolve и загрузка runtime iOS 27 Simulator съедают по несколько минут каждая — хостируемый Runner стартует с нуля при каждом job, поэтому эта фаза страдает больше всего.
  • Сборка откатывается к полной компиляции: после смены major-версии Xcode форматы ModuleCache и DerivedData несовместимы с предыдущей версией. Инкрементальная компиляция перестаёт работать; время xcodebuild приближается к холодному старту.
  • Очереди растягиваются: в первые 72 часа после WWDC тысячи команд одновременно обновляют workflow, чтобы опробовать beta, заполняя общий пул хостируемых macOS-минут GitHub. Время ожидания в очереди нередко превышает само время сборки.
Диагностика за 10 секунд: сравните длительность шагов Setup Xcode и Run script в последнем зелёном билде до WWDC и в текущем. Если Setup вырос с ~1 минуты до ~8 минут и компиляция перестала быть инкрементальной — проблема в смене тулчейна, а не в Swift-логике вашего приложения.

2) Xcode 26 beta: вынужденный «сезон сброса кэша»

Apple выложила beta Xcode 26 и iOS 27 SDK прямо в день WWDC. Для локального разработчика обновление — это переиндексация и немного ожидания; для CI-инфраструктуры это означает, что всё состояние на диске становится недействительным:

  • Изменение пути DerivedData и формата индекса — старый кэш не переиспользуется; первый Archive после обновления всегда будет полной сборкой.
  • Смена версии компилятора Swift — бинарные файлы .swiftmodule несовместимы; все таргеты компилируются заново.
  • Нестабильность lockfile CocoaPods / SPM — часть Pod-ов ещё не поддерживает iOS 27, что заставляет pod install повторно резолвить зависимости или запускать полный repo-update.
  • Новый Simulator runtime — несколько гигабайт на runtime; хостируемый Runner скачивает его заново при каждом job, добавляя 5–15 минут к bootstrap.

Более глубокий организационный риск — вынужденное принятие beta под давлением: на следующий день после keynote в каждой компании кто-то спрашивает «мы поддерживаем Siri AI?» — и команда проталкивает Xcode 26 в main, не будучи готовой. Одно изменение workflow переводит весь CI-парк в режим холодного старта. Правильный подход — разделение конвейеров: production release остаётся на стабильном Xcode 16; только ветка ios-27-beta или специальный beta-Runner используются для работы по адаптации. Справочная информация — в матрице поддержки Xcode.

3) Раздувание SDK: объём компиляции растёт, мощность остаётся прежней

Программный нарратив WWDC 26 — Siri AI и расширение Apple Intelligence (обзор WWDC 26 на MacRumors). Для инженеров приложений это оборачивается реальными издержками на сборку:

  • Новые зависимости от фреймворков (App Intents, абстракции пайплайнов Vision/Speech) — в граф линкера добавляются дополнительные модули.
  • Более строгая проверка конкурентности Swift 6 — одинаковый исходный код требует больше работы от компилятора.
  • Разрастание Asset Catalogs и ресурсов локализации — фаза Copy Bundle Resources заметно удлиняется.

На локальном M4 MacBook с тёплым кэшем всё это может ощущаться как «пара лишних минут». На хостируемом Runner без постоянного кэша добавки накладываются на штраф холодного старта и превращают «медленно» в «неприемлемо». Apple выпускает AI-возможности, а счёт оплачивают разработчики, стоящие в очереди CI.

4) Нет нового Mac: путь к апгрейду вычислительной мощности закрыт

В предыдущих циклах WWDC десктопные команды могли утешить себя мыслью «после конференции купим новый Mac mini для CI». В 2026 году анонсов железа не было; M5 Mac mini ожидается в осеннем окне, а глобальный дефицит памяти делает SKU на 24 ГБ / 32 ГБ труднодоступными даже при наличии. Практические последствия:

  • Команды, рассчитывавшие «откупиться» от медленных сборок новым железом — решение о закупке заморожено на 3–4 месяца.
  • Команды, уже работающие на M2/M3 с 16 ГБ RAM — после обновления SDK памяти становится ещё меньше; когда swift-frontend и Simulator работают параллельно, включается своп и время сборки нелинейно ухудшается.
  • Команды, планировавшие добавить второй Runner для повышения параллелизма — сроки поставки железа не позволяют успеть к дедлайну адаптации beta.

Речь не о том, что M4 не хватает — для подавляющего большинства iOS CI M4 16 ГБ достаточно. Главное: основная причина замедления после WWDC — не производительность чипа, а модель выполнения (ephemeral vs. постоянный диск). Ждать M5 — значит подменять инженерную проблему аппаратным нарративом.

5) «Давка WWDC» в хостируемых Runner-ах

Каждый июнь хостируемый macOS-пул GitHub испытывает пик спроса. Особенность 2026 года: AI-нарратив привлёк в macOS-задачи не-iOS-команды — запускать конвертацию Core ML, тестировать примеры Apple Intelligence, — которые конкурируют за тот же пул с настоящими release-конвейерами приложений.

Три структурных недостатка хостируемых Runner-ов усиливаются в сезон WWDC:

НедостатокВ обычное времяПосле WWDC
Ephemeral-дискХолодный старт терпимыйКаждый beta-job заново скачивает все компоненты SDK
Общая очередьНочью сносноВ рабочее время queued >10 мин — норма
Инвалидация cache actionDerivedData частично попадаетСмена major-версии Xcode обнуляет все cache key

Переключение на лейблы macos-15 или macos-latest не поможет — смена лейбла меняет образ ОС, но не «ваш DerivedData сохранится завтра». В нашем анализе скорости GitHub Actions iOS CI среднее Swift-приложение на хостируемых Runner-ах показывает P50 ~28 минут, из которых очередь + bootstrap обычно занимают больше половины; рост bootstrap на +40% сам по себе после WWDC — не редкость в наших данных.

6) До и после WWDC: типичные изменения времени для одного репозитория (выборка)

Ниже — наблюдения P50 от клиентов Nuvcloud, которые не меняли модель Runner, просто обновив main до Xcode 26 beta — Swift/UIKit-проект с CocoaPods и одной схемой. Это не SLA; проверяйте на своём репозитории:

Таблица: Хостируемый macOS-Runner · до WWDC (Xcode 16) и первая неделя после WWDC (Xcode 26 beta)
ФазаP50 до WWDCP50 после WWDC
queued5 мин12 мин
bootstrap7 мин14 мин
build / archive9 мин16 мин
sign + upload4 мин5 мин
Итого~25 мин~47 мин

Тот же репозиторий на self-hosted Mac mini M4 — production-job зафиксирован на Xcode 16, обновляется только beta-Runner — удерживает production P50 на уровне до WWDC. Beta-ветка требует 20+ минут на полную сборку в первую неделю, но не затрагивает main. В этом и ценность разделения Runner-ов.

7) Что делать прямо сейчас: исправить модель выполнения, не ждать M5

В первые 48 часов после WWDC выполните следующие шаги в порядке приоритета:

  1. Зафиксировать версию Xcode для production release — жёстко прописать xcode-select или DEVELOPER_DIR в workflow; запретить main автоматически следовать за любой beta.
  2. Beta-работа — в отдельную ветку + отдельный лейбл Runner — например runs-on: [self-hosted, macos, xcode26-beta], изолированно от production-лейбла ios-ci.
  3. Перейти на self-hosted Runner с постоянным диском — DerivedData, Pods и SPM-кэши переживают границы job-ов; начиная со второй beta-сборки время возвращается к инкрементальному. Инструкция: документация по self-hosted runners GitHub.
  4. Simulator runtime устанавливать только один раз — запечь iOS 27 runtime в образ Runner; больше не запускать xcodebuild -downloadPlatform в шагах workflow.
  5. Проверить на 48-часовой дневной аренде — перед переходом на месячный план возьмите облачный Mac mini на два дня, чтобы замерить реальное время сборки. Выбор региона — в сравнении TCO Runner-ов по шести регионам.
Границы статьи: здесь не повторяются детали Fastlane-подписи — для TestFlight / signing читайте соответствующий раздел в руководстве по self-hosted Runner; трёхуровневое кэширование Flutter — в руководстве Flutter iOS CI. Суть в одной фразе: WWDC изменила SDK; сделайте так, чтобы диск Runner пережил смену job-ов.

8) Часто задаваемые вопросы

Нужно ли немедленно обновляться до Xcode 26 после WWDC? Нет. Отправка в App Store по-прежнему требует стабильной версии Xcode; beta используется только для ранней адаптации к API iOS 27 и должна быть изолирована в отдельном конвейере.

M5 Mac mini осенью решит всё раз и навсегда? Структурно — нет. Новый чип может ускорить полную компиляцию на 10–15%, но не исправит накладные расходы холодного старта при каждом job. При дефиците памяти SKU M5 на 24/32 ГБ могут оказаться дорогими — просчитайте TCO прежде, чем вас захлестнёт волна launch-ажиотажа.

Разве кэширования DerivedData через actions/cache недостаточно? В сезон WWDC обычно нет. Cache-ключи инвалидируются после major-обновления Xcode; а сетевое время загрузки/скачивания гигабайт DerivedData нередко дороже, чем работа с локальным постоянным диском.

Что делать, если beta нестабильна и CI целиком краснеет? Это ожидаемо. Beta-Runner не должен блокировать мёрж в main — пометьте beta-конвейер как optional status check или запускайте его только ночью (nightly).

Чем WWDC 2026 хуже предыдущих? Три фактора одновременно: раздувание SDK под влиянием AI, отсутствие нового десктопного Mac и давление на цепочку поставок памяти. По отдельности каждый из них управляем; вместе они заставляют диагностировать замедление как «железо слабое» — что ведёт к неверным закупкам или бессмысленному наращиванию хостируемых минут.

WWDC выпустила новый SDK — вычислительная мощность не обязана ждать осени

Production на Xcode 16, beta — на выделенный Runner: попробуйте Nuvcloud M4 Mac mini на 48-часовой дневной аренде → руководство по ускорению self-hosted Runner

LIMITED Тарифы