По состоянию на 16 сентября 2026 года Apple сообщает, что часть полного набора материалов для iPhone Duo и Xcode 27.1 beta должна появиться позднее в этом месяце, а загрузка соответствующих материалов в App Store Connect ожидается позже в течение года. Это подтверждается официальной страницей Apple Developer для iPhone Duo. Поэтому наше решение на эту неделю — не расширять парк Mac массово: сначала создать изолированный узел Xcode 27.1, пройти проверку поз, сборки и границ подписи, а затем принять решение по фактической очереди и длительности задач.
Эта инструкция предназначена для трёх групп:
- технических руководителей, которые задают единый порог адаптации для нескольких iOS-приложений;
- QA и команд инженерной эффективности, отвечающих за симулятор, UI-автотесты и реальные устройства;
- IT и закупщиков, выбирающих между сохранением текущей ёмкости, новым Mac-узлом, арендой удалённого Mac и смешанной схемой.
Тестирование iPhone Duo в Mac CI: сначала разделите ответственность
Новая форма устройства не означает, что вся задача сводится к покупке ещё одного Mac. В корпоративном процессе здесь есть как минимум шесть разных состояний: адаптация приложения, визуальная оптимизация, проверка в симуляторе, проверка на реальном устройстве, подготовка материалов и производственный выпуск.
Ошибки появляются, когда эти состояния смешивают. Например, успешная сборка не доказывает корректность перехода между экранами. Рабочий снимок в симуляторе не подтверждает поведение камеры. Наличие формата изображения в справке App Store Connect не означает, что соответствующий канал загрузки уже открыт.
Apple отдельно публикует материалы по дизайну, компоновке и поведению приложений для iPhone Duo. Их следует использовать как источник требований, а не заменять обычной проверкой портретного и альбомного режима. Полезны технический разбор Apple о подготовке интерфейса и материал о связанных сценариях разработки.
Что фиксирует технический руководитель
До запуска задач в CI создайте запись решения. В ней должны быть:
- перечень приложений и веток;
- бизнес-приоритет каждого приложения;
- дата целевого выпуска;
- владелец совместимости;
- перечень блокирующих дефектов;
- допустимый уровень дефектов интерфейса;
- состояние инструментов: производственный Xcode 27 или отдельный Xcode 27.1;
- запрет на использование производственных ключей в экспериментальном контуре.
Результатом должна быть не фраза «приложение поддерживает iPhone Duo», а проверяемое условие: какие состояния покрыты, каким способом получено доказательство и кто имеет право снять блокировку.
Что передаёт команда разработки
Разработчики составляют карту рискованных экранов. Для каждого экрана нужны:
- ссылка на код или компонент;
- начальное состояние приложения;
- поза устройства;
- действие пользователя;
- ожидаемый результат;
- фактический результат;
- скриншот или видеозапись;
- статус исправления;
- возможность автоматизации.
Особое внимание требуется навигации, модальным окнам, камере, сценам, пользовательским переходам и самописной вёрстке. Обычный тест поворота не заменяет проверку раскрытия, складывания и сохранения состояния.
QA против CI-платформы: разные доказательства для одной совместимости
QA отвечает за полноту матрицы. CI-платформа — за повторяемость запуска. Эти задачи нельзя передавать одной команде без явного соглашения о входных и выходных данных.
| Область проверки | Кто отвечает | Что запускается | Приемлемое доказательство | Причина отказа |
|---|---|---|---|---|
| Базовая компиляция | CI-платформа | Сборка представительного проекта | Артефакт, журнал, версия Xcode | Неповторяемая среда или ручная установка |
| Компоновка | Разработка и QA | Набор экранов в разных состояниях | Снимки, описание отклонений | Обрезка, перекрытие, потеря контекста |
| Переходы состояний | QA | Раскрытие, складывание, поворот, возврат | Скриншот до и после, шаги воспроизведения | Потеря данных или неверная навигация |
| UI-автотесты | QA и CI | Детерминированные сценарии | Лог теста, видео сбоя, идентификатор сборки | Нестабильный тест без классификации |
| Камера и физическое поведение | QA на устройстве | Сценарии, зависящие от оборудования | Запись с реального устройства | Только симуляторное подтверждение |
| Материалы магазина | Release-команда | Генерация нужных изображений | Повторяемый процесс и архив файлов | Предположение, что загрузка уже доступна |
Симулятор полезен для быстрой обратной связи. В него разумно вынести компиляцию, проверку базовой вёрстки, стабильные UI-сценарии и генерацию промежуточных снимков. Но камеру, фактическую производительность, сенсоры, физические переходы и спорные визуальные дефекты следует подтверждать на реальном устройстве.
Именно здесь возникает типичная ошибка планирования. Команда считает количество тестовых устройств, но не измеряет время занятости Mac, повторные запуски и очередь. Для ёмкости CI важнее фактический профиль заданий, а не число разработчиков.
Шаг первый: изолируйте Xcode 27.1 от выпуска
На дату подготовки материала Xcode 27 уже относится к официально выпущенной ветке, а сведения о следующем инструменте и его доступности нужно сверять с журналом релизов Xcode и официальным разделом новых возможностей Xcode.
Создайте отдельный экспериментальный контур:
- Подготовьте отдельный Mac с чистой системой или отдельным профилем, предназначенным для проверки.
- Установите Xcode 27.1 только после подтверждения доступности нужной версии и симулятора.
- Назначьте отдельную метку Runner, например для задач iPhone Duo.
- Отделите рабочую директорию, кэш пакетов, архивы и журналы.
- Запустите один небольшой и один репрезентативный проект.
- Сравните ошибки компиляции, тестовые падения и несовместимые зависимости с производственным Xcode 27.
- Зафиксируйте способ очистки и восстановления узла.
- Только после этого расширяйте список репозиториев.
Не устанавливайте предварительный инструмент поверх производственной среды. Это усложняет расследование: при сбое уже нельзя уверенно определить, вызван ли он кодом, SDK, симулятором или изменением окружения.
Таблица передачи между ролями
| Роль | Входные данные | Проверка | Выходной артефакт | Кто может отклонить |
|---|---|---|---|---|
| Разработка | Карта экранов и рискованные компоненты | Состояния интерфейса и сохранение данных | Реестр дефектов | Технический владелец приложения |
| QA | Сценарии и матрица поз | Симулятор, UI-автотесты, устройство | Отчёт с уровнем блокировки | QA-лид |
| CI-платформа | Версия Xcode, Runner, скрипты | Повторяемость сборки и теста | Лог, артефакт, метрики очереди | Владелец CI |
| Безопасность | Политика ключей и аккаунтов | Изоляция подписи, секретов и логов | Акт допуска узла | Ответственный за безопасность |
| Release | Правила материалов и публикации | Генерация и хранение файлов | Архив материалов | Владелец выпуска |
| IT и закупки | Метрики нагрузки и риски | Сопоставление ёмкости и спроса | Решение по схеме | Руководитель инфраструктуры |
Шаг второй: разделите экспериментальную сборку и производственную подпись
Экспериментальный Mac не должен автоматически получать сертификаты распространения, приватные ключи и права публикации. Даже если сборка требует подписи, используйте минимальный набор разрешений и отдельные тестовые учётные данные.
Проверка безопасности включает:
- отсутствие производственных приватных ключей на узле исследования;
- отдельные секреты для тестовых задач;
- ограниченный доступ к внутренним пакетам;
- понятный срок хранения логов и артефактов;
- очистку Keychain и переменных окружения при завершении задачи;
- удаление временных архивов после проверки;
- документированный процесс восстановления узла;
- повторную проверку после пересоздания Mac.
Если узел можно передать другому проекту без очистки, он ещё не готов для общего пула. Если Runner после сбоя возвращается в очередь без проверки состояния, он не должен выполнять задачи, связанные с подписью или публикацией.
Apple уже публикует спецификации скриншотов для соответствующих продуктов в справке App Store Connect. При этом статус наличия формата и статус загрузки — разные вещи. Пока официальный канал загрузки не открыт, команда должна готовить воспроизводимый процесс генерации и архивирования, но не объявлять приложение готовым к публикации на основании одного файла.
Чек-лист допуска iPhone Duo в CI
- [ ] Для каждого приложения назначен владелец совместимости.
- [ ] Состояния внешнего экрана, внутреннего экрана, раскрытия, складывания и поворота внесены в матрицу.
- [ ] Для рискованных экранов указаны код, шаги воспроизведения и ожидаемый результат.
- [ ] Симуляторные проверки отделены от проверок реального устройства.
- [ ] Xcode 27.1 размещён на отдельном узле или в отдельном пуле Runner.
- [ ] Производственный Xcode 27 продолжает обслуживать обычный выпуск.
- [ ] Представительный проект собран до расширения очереди.
- [ ] Записаны ошибки компиляции, тестовые сбои и повторные запуски.
- [ ] На экспериментальном узле нет производственных ключей подписи.
- [ ] Определён срок хранения логов и артефактов.
- [ ] Описано восстановление Mac после сбоя или пересоздания.
- [ ] Проверено, какие материалы можно только подготовить, а какие уже можно загружать.
- [ ] Зафиксирован критерий расширения ёмкости.
- [ ] Ответственный за IT получил исходные журналы, а не только итоговый статус.
Сохранить ёмкость против расширить пул: решение по данным, а не по тревоге
Новые задачи iPhone Duo могут временно увеличить спрос на CI. Однако из этого не следует, что компании нужен постоянный Mac. Сначала соберите журнал за репрезентативный период: частоту заданий, длительность каждой стадии, ожидание в очереди, число повторных запусков, занятость диска и долю задач, которые действительно требуют нового инструмента.
Не следует публиковать универсальную формулу вида «один новый тип устройства равен одному новому Mac». Такая формула не учитывает параллельность, кэш, размер проекта, число приложений и распределение пиков.
| Наблюдение в журнале | Предварительное решение | Что проверить до утверждения | Подходящая схема |
|---|---|---|---|
| Новые задачи редкие, очередь не блокирует выпуск | Сохранить текущий пул | Достаточно ли окна для ручной проверки | Отдельный экспериментальный узел |
| Задачи сосредоточены в коротком периоде | Не покупать постоянно | Длительность пика и доступность временного узла | Краткосрочная аренда удалённого Mac |
| Регрессия запускается постоянно | Рассмотреть фиксированный узел | Стабильность нагрузки и требования к среде | Выделенный Mac в пуле |
| Производство требует отдельной подписи | Не смешивать контуры | Политика сертификатов и восстановления | Гибрид: производство отдельно, проверка отдельно |
| Очередь растёт вместе с несколькими проектами | Сравнить варианты масштабирования | Параллельность, дисковый рост, стоимость простоя | Смешанный пул с резервом |
Для временной проверки удобно использовать удалённый Mac MESHLAUNCH, если команде нужен отдельный хост с доступом по SSH, VNC или через веб-консоль. Но такой ресурс нужно принимать как инфраструктурный узел: заранее проверить права, сетевые ограничения, установку Xcode, очистку секретов и возможность повторить эксперимент.
Если нужен отдельный сценарий с Mac mini, параметры заказа и доступность следует сверять на странице аренды Mac mini для корпоративного теста. Это не заменяет расчёт нагрузки. Задача аренды — получить измерение на изолированной среде, а не скрыть отсутствие исходных данных.
FAQ для IT, QA и владельца CI
Четыре вопроса ниже закрывают разные поисковые намерения, но решение всегда должно возвращаться к одной цепочке: состояние устройства — доказательство — граница безопасности — нагрузка — решение по ёмкости.
Финальное решение: сохранить, расширить или перейти к смешанной схеме
После завершения проверок технический руководитель должен выпустить один из четырёх результатов:
- Сохранить текущую ёмкость. Подходит, если экспериментальные задачи редки, очередь не влияет на выпуск, а отдельный узел можно обслуживать без нарушения SLA.
- Временно расширить инфраструктуру. Подходит, если адаптация концентрируется вокруг ограниченного окна и после него нагрузка снизится.
- Добавить фиксированный узел. Обоснованно при регулярной регрессии, устойчивой очереди и понятном владельце среды.
- Выбрать гибридную схему. Производственные архивы и подпись остаются на доверенном контуре, а адаптация и расширенная регрессия выполняются на изолированных Mac.
Текущая схема на одном общем Mac часто проигрывает по трём причинам: экспериментальный Xcode загрязняет производственную среду, очередь новых UI-тестов блокирует обычные сборки, а общие ключи и кэши усложняют расследование. Полностью самостоятельная закупка также не всегда рациональна, если пик адаптации краткосрочен и оборудование затем будет простаивать.
В такой ситуации аренда Mac у MESHLAUNCH может дать более чистый эксперимент: отдельный хост, контролируемый период использования и возможность сначала измерить очередь, длительность задач и восстановление. Но для постоянной тяжёлой нагрузки, строгих физических интерфейсов или неизменной производственной подписи целесообразнее собственный выделенный узел.
Практическая последовательность остаётся короткой: сначала создайте изолированный контур Xcode 27.1, затем прогоните представительный проект, соберите доказательства по позам и реальному устройству, проверьте отсутствие производственных секретов и только после этого принимайте решение по Mac CI. Так IT получает не предположение о будущей нагрузке, а журнал, на основании которого можно обоснованно выбрать текущую ёмкость, временную аренду или постоянное расширение.