От первого входа до архива сборки

Подключайтесь. Переносите. Собирайте.

Руководство охватывает первое подключение, перенос среды, настройку CI и подготовку к возврату. Сначала проверьте доступность узла одной командой SSH, затем перенесите код, средства подписи и инструменты. Вы получаете выделенный физический компьютер, а не виртуальную машину: macOS с графическим интерфейсом и командной строкой.

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

Шаг 1 · Проверка подключения

Сначала подключитесь, потом переносите среду.

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

SSH

Командная строка: сначала войдите вручную

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

ssh admin@<адрес-узла>

Если для экземпляра используется нестандартный порт SSH, добавьте в команду параметр -p <порт>. После входа выполните команды ниже, чтобы проверить текущего пользователя, версию системы и свободное место на диске.

whoami
sw_vers
df -h
passwd

passwd интерактивно изменяет пароль текущего пользователя. Затем локально создайте отдельный ключ ed25519 и добавьте открытый ключ в ~/.ssh/authorized_keys. Закрытый ключ храните только на своём устройстве или в защищённом хранилище ключей.

ssh-keygen -t ed25519
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

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

Проверка: вход по ключу из нового терминала
VNC

Графический интерфейс: выполните настройку вручную

Для работы с Связкой ключей, проверки настроек Xcode или просмотра симулятора подключитесь к экрану по данным из сведений об экземпляре. Адрес и порт подключения к экрану могут отличаться от SSH — не подставляйте их наугад.

  1. Убедитесь, что экземпляр готов, и возьмите адрес, порт и имя пользователя для общего доступа к экрану из консоли.
  2. На локальном Mac откройте приложение «Общий экран», подключитесь и войдите с выданными учётными данными.
  3. При первом входе в систему измените временный пароль и проверьте, что связка ключей входа разблокируется.
  4. Откройте нужную версию Xcode, примите лицензионное соглашение, установите необходимые компоненты и затем проверьте настройки в командной строке.
xcode-select -p
xcodebuild -version

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

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

Проверка: рабочий стол доступен, версия Xcode верна
Шаг 2 · Переносите зависимости по порядку

Локальный Mac → облачный Mac.

Порядок такой: данные, инструменты, CI. Для начала перенесите один проект, который можно проверить отдельно; не копируйте сразу весь каталог пользователя. Указанное ниже время — ориентир: на ход работ влияют размер репозитория, сеть и загрузка зависимостей.

01 / Данные

Сначала перенесите код и средства подписи

Клонируйте репозиторий из Git и переключитесь на тот же коммит, что и локально. Для приватного репозитория используйте ключ развёртывания с ограниченными правами или временный токен. Не добавляйте постоянные учётные данные в URL репозитория.

git clone <адрес-репозитория>
git rev-parse HEAD
rsync -av --progress ./Assets/ \
  admin@<адрес-узла>:~/work/Assets/

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

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

Ориентир: 3–10 минут · без передачи крупных файлов
02 / Инструменты

Восстановите версии, но не копируйте кэш

Экспортируйте Brewfile на локальном Mac, передайте его на узел и восстановите окружение. Сначала просмотрите список: удалите ненужные приложения и устаревшие зависимости, чтобы сократить объём первой загрузки.

brew bundle dump --file=Brewfile
brew bundle --file=Brewfile
xcodes list
xcodes install <нужная-версия>

Сверьте версии Xcode, Ruby и CocoaPods, необходимые проекту. При установке версии через xcodes соблюдайте условия лицензирования ПО и требования к доступу для загрузки. После установки проверьте выбранную версию командой xcodebuild -version — так вы убедитесь, какая версия выбрана фактически.

Если в проекте есть Gemfile, сначала выполните bundle exec pod install. Для SPM используйте файл блокировки из проекта, чтобы разрешить зависимости. Первую сборку считайте прогревом кэша, а не показателем скорости последующих сборок.

Ориентир: 5–15 минут · загрузка не включена
03 / Настройка CI

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

Сначала выполните сборку и подпись в интерактивном сеансе. Когда сборка из командной строки завершается созданием архива, зарегистрируйте self-hosted runner GitHub Actions или GitLab Runner. Так не придётся одновременно искать проблемы в инструментах и настройках планировщика.

bundle exec fastlane match development --readonly
bundle exec fastlane gym

Тип подписи match и нужный lane зависят от конфигурации проекта. Для CI используйте учётные данные с ограниченными правами, храните ключи в защищённых переменных или хранилище секретов и не записывайте пароли в скрипты.

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

Ориентир: 3–8 минут · при наличии настроенного конвейера CI

Условия успешного переноса:На узле можно создать и забрать архив для того же коммита, с той же версией Xcode и тем же файлом блокировки зависимостей. Одного успешного завершения установки зависимостей недостаточно, чтобы считать перенос среды завершённым.

Оформление заказа · около 4 минут

Застряли? Проверьте нужный этап.

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

  1. 01

    Проверьте параметры заказа

    Около 40 секунд

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

  2. 02

    Оплатите в долларах США

    Около 60 секунд

    Поддерживаются только USDT-TRC20 и Visa / Mastercard / Amex (через Stripe); расчёты ведутся в USD. Если процесс застопорился, проверьте статус платежа. Подтверждение транзакции в сети и проверка эмитентом карты могут занять дополнительное время.

  3. 03

    Дождитесь настройки узла

    Около 2 минут

    После подтверждения оплаты начнётся подготовка выделенного физического узла. Если процесс застопорился, проверьте статус экземпляра и сообщения системы. Если оплата прошла, но статус долго не меняется, сохраните номер заказа и отправьте запрос в поддержку.

  4. 04

    Проверьте уведомление о предоставлении

    Письмо с данными / консоль

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

  5. 05

    Проверьте первый вход

    Около 20 секунд

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

Перед возвратом · сохраните данные

Машину нужно вернуть.
Артефакты заберите с собой.

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

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

Перед передачей выполните 4 пункта

  1. Сохраните артефакты сборки. Заберите .xcarchive, .ipa, dSYM и необходимые журналы сборки. Убедитесь, что загрузка или скачивание завершены.
  2. Удалите временного исполнителя CI. Удалите регистрацию runner на платформе CI, остановите процесс локального исполнителя и отзовите ключ развёртывания и временные токены доступа.
  3. Удалите материалы для подписи. Удалите импортированные закрытые ключи сертификатов, профили подготовки и временные настройки. Убедитесь, что в журналах конвейера не раскрыты ключи или пароли.
  4. Проверьте срок аренды и резервные копии. Сверьте дату окончания аренды и часовой пояс в консоли и заложите запас времени на последнюю сборку и передачу артефактов.

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

Частые задачи · минимальный рабочий пример

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

Обе модели — выделенные физические компьютеры с M4: SDK Pack 16 оснащён 16 ГБ / 256 ГБ, SDK Pack 24 — 24 ГБ / 512 ГБ. Выбирайте объём памяти и хранилища с учётом проекта, а не запускайте все параллельные задачи во время первой проверки.

Автоматическая сборка приложений

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

bundle install
bundle exec fastlane gym
bundle exec fastlane pilot upload \
  --ipa ./build/App.ipa

Замените пример пути на фактический путь к артефакту. Перед загрузкой через pilot настройте используемый проектом API-ключ публикации и сохраните его в защищённой переменной CI. Проверка прав на загрузку и успешная сборка — два отдельных пункта.

Проверка: архив можно забрать, загрузка завершилась

Разработка на удалённом Mac

Сначала проверьте обычное SSH-подключение, затем настройте VS Code Remote-SSH на использование тех же параметров подключения. Если редактор не подключается, сначала изучите журнал удалённого расширения, а не меняйте системные разрешения.

Host sdk-build
  HostName <адрес-узла>
  User admin
  IdentityFile ~/.ssh/id_ed25519
  ServerAliveInterval 30

Настройте локальный файл ~/.ssh/config. После подключения проверьте, на какой машине открыт терминал и какой выбран рабочий каталог. Подключайтесь к симулятору и графическим инструментам отладки через общий доступ к экрану; для редактирования кода и работы с Git достаточно SSH.

Проверка: редактирование и сборка используют одну рабочую копию

Рендеринг на GPU и инференс MLX

Сначала убедитесь, что задача поддерживает Apple Silicon и нужный графический бэкенд, затем создайте изолированное окружение Python. Заранее выделите место для весов модели, памяти приложения и промежуточных результатов.

python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install mlx
python -c "import mlx.core as mx; print(mx.default_device())"

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

Проверка: небольшая задача выполнена, потребление ресурсов под контролем
Устранение неполадок · меняйте только один параметр за раз

Сначала определите тип ошибки.

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

Тайм-аут SSH или ошибка аутентификации

Тайм-аут: проверьте адрес, порт, состояние экземпляра и ограничения локальной сети. Командой ssh -v определите, на каком этапе возникает сбой: подключения или аутентификации.

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

В запрос приложите: текст ошибки, порт и время возникновения

Чёрный экран при подключении к экрану

Сначала проверьте доступность узла по SSH, затем сверьте порт общего доступа к экрану и учётную запись. Убедитесь, что настройка экземпляра завершена и локальный клиент не использует старые данные подключения.

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

В запрос приложите: версию клиента и снимок экрана без конфиденциальных данных

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

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

Используйте для CI отдельную связку ключей подписи и настройте её разблокировку и права доступа согласно правилам команды. Сначала проверьте неинтерактивную сборку. Не выводите пароль от связки ключей в журнал.

В запрос приложите: этап сбоя и код ошибки подписи

Недостаточно места на диске

Сначала выполните команду df -h, затем проверьте DerivedData, архивы, данные симуляторов и образы контейнеров. Удаляйте только те кэши, которые точно можно восстановить; не трогайте неэкспортированные архивы и символы отладки.

Если проект и ресурсы постоянно превышают доступный объём, при оформлении заказа можно добавить SSD на +1TB или +2TB. Способ расширения уже арендованного экземпляра сначала уточните в запросе в поддержку: не рассчитывайте, что дополнительное хранилище станет доступно сразу после покупки.

В запрос приложите: свободное место и список самых объёмных каталогов
Читайте дальше · переходите к нужной теме

Нужны подробности? Читайте технические статьи.

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

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

Инструменты: установка ещё не означает, что проект можно собрать. Зафиксируйте версии Xcode, менеджеров зависимостей и файлов блокировки. В первую очередь сравните версии на локальном Mac и узле.

Безопасность: сам факт подключения не гарантирует правильную авторизацию. Для временного узла используйте отдельный ключ и токены с ограниченными правами. Перед возвратом отмените регистрацию и не используйте повторно личные постоянные учётные данные.

Выбор конфигурации: одна успешная сборка не гарантирует, что конфигурация подойдёт надолго. Оцените пиковое потребление памяти, прирост занятого места и параллельные задачи, прежде чем выбирать модель и срок аренды.

Нужна помощь инженера

Сохраните данные о проблеме —
мы начнём с текста ошибки.

По проблемам с арендованным экземпляром войдите в консоль и отправьте запрос в поддержку. Укажите номер заказа, узел, время и часовой пояс, шаги для воспроизведения и журналы без конфиденциальных данных. По вопросам до аренды и проблемам со входом также можно написать на support@macsdk.com.

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