От приёмки до стабильной работы

Подключите облачный Mac к рабочему процессу сборки

Получив данные устройства, сначала проверьте заказ и физический узел, затем настройте подключение, воспроизведите инструментальную цепочку и зарегистрируйте исполнитель CI. Каждый шаг содержит команды проверки, критерии готовности и перечень доказательств для диагностики ошибок.

Доступные узлы
5физических узлов
Доступные конфигурации
2выделенные физические машины
Маршрут работ
9групп проверок
Панель первого подключения Проверяйте по порядку
01

Проверьте данные поставки

Узел, конфигурация, версия системы, срок аренды и данные доступа должны совпадать с подтверждением заказа.

Приёмка
02

Создайте первую сессию

Сначала проверьте подключение по командной строке, затем при необходимости создайте графическую сессию и протестируйте восстановление после разрыва.

Подключение
03

Воспроизведите среду разработки

Зафиксируйте Xcode, зависимости и рабочий каталог; не копируйте содержимое старой машины целиком.

Настройка
04

Запустите реальную сборку

Выполните архивирование или тестовую задачу в настоящем репозитории и сохраните длительность, логи и результаты проверки артефактов.

Проверка
Статус поставки Ориентируйтесь на актуальный ответ консоли
Подготовка к началу

Сначала уточните устройство, узел и срок аренды

Не начинайте перенос среды, пока данные не проверены. Войдите в консоль и сверьте каждое поле с заказом и сведениями об устройстве; при расхождении сохраните информацию со страницы и отправьте обращение.

01

Узел и сетевой маршрут

Убедитесь, что узел находится в Сингапуре, Токио, Сеуле, Гонконге или на востоке США. Запишите код узла и проверьте маршрут подключения из основной рабочей сети.

  • Сверьте основное местоположение команды и часовой пояс узла
  • Проверьте подключение из рабочей и резервной сетей
  • Записывайте задержку, джиттер и потери пакетов, а не только результат одного ping
02

Конфигурация устройства

Каталог содержит две конфигурации. После получения данных сверьте по каждому полю чип, память и накопитель.

  • Базовая: M4, 16GB, 256GB
  • Производительная: M4 Pro, 64GB, 2TB
  • Дополнительное хранилище определяется подтверждением заказа
03

Система и данные доступа

Проверьте версию системы, имя хоста, адрес подключения, порт и временные данные доступа. Сразу после первого входа смените их по правилам команды.

  • Не вставляйте пароли или приватные ключи в общедоступные логи
  • Храните данные доступа в контролируемом менеджере секретов
  • Уточните, какие данные нужны отдельно для командного и графического подключения
04

Срок аренды и время завершения

При аренде на день, неделю, месяц или квартал заранее определите время экспорта данных и остановки задач, чтобы не оставлять очистку на последний момент.

  • Запишите дату начала и окончания аренды
  • Заложите время на экспорт артефактов и очистку кэша
  • Назначьте ответственного за продление или изменение аренды
Руководство по первому подключению

Сначала проверьте доступность устройства по командной строке, затем создайте графическую сессию

Командная строка подходит для базовой приёмки и автоматизации, а графическая сессия — для Xcode, симулятора и операций с интерфейсом. Проверяйте оба способа отдельно: успех одного не означает, что всё подключение исправно.

Подключение по командной строке

Создайте минимальную проверяемую сессию

  1. 1
    Проверьте данные назначения

    Скопируйте из консоли адрес хоста, порт и имя пользователя, проверьте символы и регистр. Не используйте устаревшие данные из старых обращений.

  2. 2
    Проверьте отпечаток хоста

    При первом подключении сравните его с данными поставки. При изменении отпечатка остановите подключение и выясните причину; не удаляйте локальную запись для повторной попытки.

  3. 3
    Выполните проверки только для чтения

    Проверьте текущего пользователя, имя хоста, версию системы, диски и путь к Xcode; не устанавливайте и не удаляйте ПО сразу.

  4. 4
    Проверьте восстановление после разрыва

    Принудительно отключитесь и подключитесь снова, чтобы проверить способ восстановления сессии, стратегию фонового выполнения длительных задач и каталог сохранения логов.

Удалённый графический доступ

Проверяйте качество изображения и стабильность задач отдельно

  1. 1
    Начните с консервативного качества изображения

    Сначала используйте низкое разрешение и качество цвета, чтобы проверить стабильность сессии, затем постепенно повышайте настройки и не принимайте задержки изображения за проблему производительности устройства.

  2. 2
    Защитите данные доступа и буфер обмена

    Не допускайте раскрытия паролей, приватных ключей и паролей сертификатов при демонстрации экрана, записи экрана или использовании неконтролируемого буфера обмена.

  3. 3
    Заблокируйте сессию без присмотра

    Перед уходом от устройства заблокируйте графическую сессию. При совместной работе заранее определите текущего оператора, чтобы избежать параллельных изменений среды.

  4. 4
    Проверьте состояние после переподключения

    После восстановления подключения проверьте, продолжаются ли приложения на переднем плане, процессы сборки и запись на диск. Не считайте задачу завершённой ошибкой только из-за остановки изображения.

Быстрая проверка в терминале

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

Команды ниже проверяют чип, память, диск, версию системы, сеть и пути инструментов разработки. Сохраните вывод, но перед отправкой обращения удалите имя пользователя, внутренние адреса репозиториев и другие чувствительные поля.

DPLYMAC / FIRST-RUN CHECK
printf '\n== CHIP ==\n'
system_profiler SPHardwareDataType | grep -E "Chip|Memory"

printf '\n== DISK ==\n'
diskutil info / | grep -E "Device Node|File System|Disk Size|Free Space"

printf '\n== SYSTEM ==\n'
sw_vers
uname -m

printf '\n== NETWORK ==\n'
route -n get default | grep interface
ping -c 5 1.1.1.1

printf '\n== XCODE ==\n'
xcodebuild -version
xcode-select -p
swift --version

printf '\n== TOOL PATHS ==\n'
command -v git
command -v ruby
command -v fastlane

Как определить успешное прохождение

  • Чип и память соответствуют конфигурации в заказе
  • Корневой том доступен для чтения и записи, свободного места достаточно для задачи
  • Архитектура системы выводится как arm64
  • Интерфейс по умолчанию существует, в серии проверок нет заметных потерь пакетов
  • Xcode и пути инструментов командной строки указывают на ожидаемые версии

Что сохранить

  • Время выполнения команды и узел
  • Полную команду, а не только последнюю строку
  • Исходный вывод и обезличенную версию для обращения
  • Ожидаемый результат, фактический результат и число воспроизведений
Xcode и среда подписи

Сначала зафиксируйте инструментальную цепочку, затем импортируйте материалы для сборки

Согласованность среды обеспечивается точными версиями и воспроизводимыми шагами, а не копированием всего каталога пользователя со старой машины. Импортируйте только необходимые материалы подписи и очистите их до окончания аренды.

Проверка Действие Критерий готовности
Версия Xcode

Выполните xcodebuild -versionи запишите основную версию и номер сборки; если проект требует фиксированную версию, внесите это требование в документацию репозитория.

Версия соответствует требованиям проекта
Инструменты командной строки

Выполните xcode-select -pпри необходимости переключите путь на утверждённый командой; не обновляйте его внезапно посреди задачи.

Путь указывает на целевой Xcode
Импорт сертификатов

Импортируйте только сертификаты, необходимые текущему проекту, используйте контролируемый канал передачи и ограничьте область доступа к связке ключей.

Целевая идентичность подписи определяется
Профили подготовки

Проверьте идентификатор приложения, сведения о команде, возможности и срок действия; не смешивайте файлы от других проектов.

Цель архивирования соответствует конфигурации проекта
Разблокировка связки ключей

Разблокируйте её в скрипте сборки на минимально необходимый срок, после задачи снова заблокируйте и не записывайте пароль в репозиторий или обычные логи.

Неинтерактивная сборка получает необходимые элементы
Проверка перед сборкой

Сначала проверьте разрешение зависимостей, список проектов и настройки подписи, затем запускайте полное архивирование.

Ошибка обнаруживается до официальной сборки
Маршрут миграции

Разделите миграцию на три этапа: данные, инструментальная цепочка и исполнитель

За один раз меняйте только одну переменную и сохраняйте точку отката. Так при различиях сборки можно определить, вызваны ли они данными, зависимостями или регистрацией CI.

Этап 01

Синхронизация данных

Входные данные
Исходный код, необходимые ресурсы, файлы блокировки зависимостей и скрипты сборки
Действие
Сначала получите данные из системы контроля версий; большие файлы проверяйте отдельно, не копируйте ненужный кэш и старые артефакты
Проверка
Коммит, число файлов и контрольные значения соответствуют ожиданиям, чувствительные файлы не попали в репозиторий
Типичные ошибки
Пропущенные правилами игнорирования файлы, различия регистра в путях, изменившиеся переводы строк, потерянные биты разрешений
Точка отката
Сохраните чистый рабочий каталог, чтобы после удаления синхронизированных данных можно было получить их заново
Этап 02

Воспроизведение инструментальной цепочки

Входные данные
Требования Xcode, список зависимостей, файлы блокировки менеджера пакетов и версии сред выполнения скриптов
Действие
Установите минимальный набор инструментов по документации, зафиксируйте версии и явно укажите пути и переменные среды в конфигурации задачи
Проверка
Зависимости разрешаются успешно, один и тот же коммит даёт одинаковый результат в локальной команде и автоматизированном скрипте
Типичные ошибки
Неявные глобальные зависимости, различия версии Ruby по умолчанию, неверный путь Xcode, загрязнённый кэш
Точка отката
Сохраните список версий и логи установки; кэш инструментов можно очистить и воспроизвести настройку заново
Этап 03

Интеграция CI

Входные данные
Данные регистрации исполнителя, метки очереди, рабочий каталог, правила кэширования и предел параллельности
Действие
Зарегистрируйте один исполнитель, сначала запустите проверку только для чтения, затем полную цепочку на реальном репозитории
Проверка
Задача корректно запланирована, код выхода, логи, результаты тестов и артефакты отслеживаются
Типичные ошибки
Несовпадение меток, повторное использование рабочего каталога, слишком широкий ключ кэша, конкуренция задач за один ресурс
Точка отката
Удалите регистрацию исполнителя и вернитесь к ручной сборке, не затрагивая проверенные данные и инструментальную цепочку
Интеграция CI/CD

Регистрация исполнителя ещё не означает надёжность конвейера

После регистрации проверьте как минимум одну задачу с холодным кэшем, одну — с горячим кэшем и одну повторную попытку после сбоя. Рабочий каталог, кэш и параллельность должны явно управляться конвейером.

Проверка подключения распространённых исполнителей CI
Платформа Проверка регистрации Рабочий каталог Стратегия кэширования Рекомендации по параллельности
GitHub Actions Проверьте метки self-hosted Runner и область целевого репозитория или организации Используйте отдельное рабочее пространство для каждой задачи и очищайте временные файлы после завершения Ключ кэша должен включать сводку файла блокировки, Xcode и архитектуру Сначала проверьте одну задачу, затем повышайте параллельность с учётом нагрузки на память и диск
GitLab CI Проверьте метки Runner, права защищённых веток и состояние исполнителя Не допускайте использования несколькими проектами общего доступного для записи каталога и одинаковых путей артефактов Разделяйте область кэша по проекту, ветке и сводке зависимостей Создайте отдельные очереди для архивирования, тестов и лёгких проверок
Jenkins Проверьте метки узла, удалённый корневой каталог и область действия учётных данных После завершения конвейера очищайте workspace, сохраняя необходимые логи Управляйте кэшем зависимостей и артефактами сборки раздельно Ограничьте одновременное использование одного устройства тяжёлыми задачами архивирования
Собственный Runner Запишите способ запуска службы, пользователя и условия получения задач Создавайте каталог по идентификатору задачи и выполняйте предсказуемую очистку при завершении Определите владельца кэша, лимит объёма и условия недействительности Управляйте ресурсами очередью, не полагайтесь на случайную борьбу скриптов за блокировку

Регистрация завершена

Исполнитель в сети, метки совпадают, пользователь выполнения указан верно, а доступ разрешён только к утверждённым репозиториям и данным доступа.

Задача воспроизводима

Один и тот же коммит даёт одинаковые артефакты при холодном и горячем кэше; при сбое сохраняется понятный код выхода.

Каталог можно очистить

Для временных файлов подписи, производных данных и промежуточных артефактов определены правила очистки, не зависящие от ручного удаления.

Параллельность ограничена

Настройте очередь с учётом нагрузки на CPU, память и SSD, чтобы задачи архивирования не вытесняли друг друга.

Диагностика производительности

Сначала определите уровень узкого места, затем меняйте параметры

Для проблемы производительности запишите как минимум время, узел, версию коммита задачи, шаги воспроизведения и результат сравнения. Описания «очень медленно» недостаточно, чтобы отличить нагрузку ресурсов, сетевой маршрут и проблему графической сессии.

CPU

Определите: постоянная нагрузка или кратковременный пик

Запишите процессы с высокой загрузкой, число потоков и этап задачи. Сравните одну и несколько параллельных задач, проверьте повторную сборку, неконтролируемые тесты и фоновую индексацию.

Выборка процессов
Память

Проверьте давление на память и активность подкачки

Запишите пиковое и сжатое использование памяти, а также изменения подкачки. Если сбой возникает только при параллельной работе, сначала уменьшите параллельность и сравните результаты, а не списывайте проблему на сеть.

Сравнение нагрузки
SSD

Отличите нехватку места от перегрузки случайного чтения и записи

Проверьте свободное место, производные данные, кэш зависимостей и старые артефакты. Перед очисткой запишите размеры каталогов, чтобы не потерять доказательства проблемы.

Объём и I/O
Сеть

Сравните задержку, джиттер, потери пакетов и пропускную способность

Проводите последовательную проверку из фиксированной локальной сети и сравнивайте с резервной. При медленной загрузке репозитория также отделяйте маршрут до узла от ответа сервиса зависимостей.

Непрерывная выборка
Графическая сессия

Задержка изображения не означает замедление процесса сборки

Повторите проверку после снижения разрешения и качества цвета, одновременно наблюдая выполнение задачи по командной строке. Запишите состояние приложений на переднем и заднем плане после переподключения.

Отдельная сессия
Безопасность и завершение

Готовьте финальную передачу с первого входа

Для данных доступа, материалов подписи, артефактов сборки и кэша определены владельцы. До окончания аренды последовательно экспортируйте, проверяйте, удаляйте и перепроверяйте данные — не полагайтесь на память при очистке.

Непрерывное выполнение

Данные доступа и права

  • Смените временные данные доступа после первого подключения
  • Разделите минимальные права по репозиториям и задачам
  • Регулярно проверяйте область действия ключей исполнителей и автоматизации
  • Не записывайте пароли в скрипты, репозитории и обычные логи
Перед экспортом

Артефакты и данные

  • Экспортируйте архивы, отчёты тестов и необходимые логи
  • Проверьте в целевом месте число файлов и контрольные значения
  • Убедитесь, что коммит репозитория и удалённая ветка синхронизированы
  • Запишите базовые параметры сборки, которые нужно сохранить
До окончания аренды

Очистка среды

  • Удалите исполнителя CI и отзовите связанные данные доступа
  • Удалите сертификаты, профили подготовки, приватные ключи и коды восстановления
  • Удалите рабочие каталоги, временные файлы и чувствительный кэш
  • Повторно проверьте каталог загрузок, рабочий стол и историю команд
Расширенная поддержка

Сделайте обращение воспроизводимым уже с первого сообщения

По вопросам существующего заказа войдите в консоль и отправьте обращение. Если войти не удаётся, отправьте письмо на support@deploymac.com; перед отправкой удалите пароли, приватные ключи, пароли сертификатов и другие чувствительные данные.

Шаблон записи инцидента Копируйте поля, но не чувствительные данные
Идентификатор заказа

Укажите идентификатор из консоли, по которому можно найти заказ

Узел

Сингапур, Токио, Сеул, Гонконг или восток США

Время возникновения

Укажите часовой пояс, время первого возникновения и последнего воспроизведения

Конфигурация устройства

Базовая или производительная конфигурация, а также сведения о дополнительном хранилище

Шаги воспроизведения

Начните с чистого состояния и перечислите шаги в фактическом порядке выполнения

Вывод команд

Приложите полные команды, коды выхода и обезличенный вывод, а не только снимок экрана

Ожидаемый результат

Опишите состояние, файл или возвращаемое значение, ожидаемые при нормальной работе

Фактический результат

Опишите отклонение, число воспроизведений и влияние на все ли задачи

Выполненные действия

Перечислите повторные попытки, переподключения, уменьшение параллельности или очистку кэша и их результаты

Существующий заказ и сбой подключения

Обращение из консоли связывается с заказом, узлом и данными устройства и подходит для проверки поставки, сбоев подключения и проблем выполнения.

Отправить обращение через консоль

Заказ не оформлен или вход невозможен

Укажите в письме назначение, целевой узел, предполагаемый срок аренды и область влияния проблемы. Не отправляйте пароли, приватные ключи или пароли сертификатов.

Отправить письмо в поддержку
Следующий шаг

Выберите конфигурацию по нагрузке и начните первое подключение

Базовая конфигурация подходит для лёгких сборок и повседневной разработки; производительная — для экспериментов с большим объёмом памяти, параллельной работы над несколькими проектами и тяжёлых сборок. Обе конфигурации используют выделенные физические машины, а не виртуальные машины.