От заказа до сборки

От заказа до первой сборки xcodebuild

Арендуйте выделенный Mac mini посуточно — не общую виртуальную машину. Выберите модель, получите данные для подключения и выполните первую сборку, следуя шагам ниже.

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

Минимальный срок — 1 день. Две модели M4; оплатить можно за день, неделю, месяц или квартал. Фактическая доступность отображается в консоли.

Первая сборка01 → 04
  1. 01
    Выберите срокМодель, узел и период оплаты
  2. 02
    Проверьте данныеАдрес хоста и данные для входа
  3. 03
    ПодключитесьЗагрузите открытый ключ, подключитесь по SSH или VNC
  4. 04
    Запустите сборкуПроверьте Xcode и выполните команды проекта
Один заказ — один выделенный физический Mac
01 / Выберите срок

Сначала определите задачи, затем срок аренды

При заказе выберите модель, узел, срок аренды и способ оплаты. Для разового релиза можно начать с 1 дня. Для непрерывной работы CI сравните недельный, месячный и квартальный тарифы. Вся сумма за выбранный период оплачивается заранее в долларах США.

M4 / 16GB / 256GB

Commit 16

Подходит для сборки одного приложения в Xcode, создания сборок через fastlane и настройки SSH, VNC и инструментов разработки. Если планируете одновременно запускать симуляторы и контейнеры, сначала проверьте фактическое потребление памяти проектом.

От $20.5 в деньАрендовать Commit 16
M4 / 24GB / 512GB

Commit 24

Подходит для одновременной работы с Xcode, симуляторами и контейнерами, а также для задач, которым нужны дополнительные ресурсы для моделей MLX и кэша сборки. Для больших файлов моделей проверьте доступные варианты увеличения SSD при заказе.

От $41.4 в деньАрендовать Commit 24
Как выбрать узел?

Доступны узлы в Сингапуре, Японии (Токио), Южной Корее (Сеул), Гонконге, на востоке и западе США. Выбирайте узел поближе к команде и серверам с кодом, к которому у вас стабильное подключение. Обе модели доступны во всех 6 локациях.

Оплата доступна только в USDT-TRC20 или картами Visa, Mastercard и Amex через Stripe. Фактические способы оплаты зависят от доступного платёжного шлюза в консоли.

02 / Проверьте данные

Получите данные для подключения и проверьте четыре поля

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

Данные для подключения: что проверить перед первым входом
ПолеНазначениеКак проверить
Адрес хостаАдрес назначения для подключений по SSH и VNC.Скопируйте адрес из консоли и проверьте, что в нём нет лишних пробелов.
Имя пользователяВместе с адресом хоста используется для входа по SSH.Используйте имя пользователя, указанное для вашего заказа. Не угадывайте системное имя по умолчанию.
Открытый ключ SSHПозволяет устройству подключаться с помощью ключа.Загрузите содержимое файла открытого ключа. Закрытый ключ храните только на своём устройстве.
Данные для VNCДля доступа к графическому интерфейсу macOS.Подключайтесь указанным на странице заказа способом и с предоставленными данными. Не используйте VNC как порт SSH.
Ещё нет ключа SSH?

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

Если не удаётся подключиться, сначала определите причину

Сначала проверьте адрес, имя пользователя и открытый ключ, затем убедитесь, что локальная сеть может достичь нужного узла. Тайм-аут TCP-соединения обычно указывает на проблему с сетью; отказ в доступе по ключу — на неверные данные или настройки авторизации.

03 / Проверка в терминале

Войдите по SSH и выполните первую сборку

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

vmcommit — sshM4
Подключение · выполните в локальном терминале, используя данные из заказа
ssh -i ~/.ssh/id_ed25519 "$VM_USER@$VM_HOST"

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

Проверка · выполните на удалённом Mac
sw_vers -productName
uname -m
sysctl -n machdep.cpu.brand_string

Ожидаемый результат: macOS, arm64 и Apple M4. Фактическую версию системы смотрите в выводе команд на выданном компьютере.

Сборка · перейдите в каталог проекта и укажите существующую scheme
xcodebuild -list
xcodebuild -scheme "$SCHEME" -destination 'generic/platform=iOS' build CODE_SIGNING_ALLOWED=NO

Сборка без подписи нужна, чтобы сначала проверить, собирается ли проект. Если всё прошло успешно, проверьте код завершения и BUILD SUCCEEDED; при ошибке начните разбор с первой ошибки сборки.

Архивация · выполните после настройки подписи
fastlane gym --scheme "$SCHEME"

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

Здесь VM_USER,VM_HOST и SCHEME — переменные shell. Сначала задайте им значения по данным из заказа и фактической scheme проекта. Если проекту нужна определённая версия Xcode, выполните xcodebuild -version и проверьте её перед переключением.

04 / Графический интерфейс

Откройте VNC, если нужен интерфейс Xcode

SSH подходит для передачи файлов, запуска сборок и просмотра журналов. Для работы с интерфейсом Xcode, симулятором или системными настройками подключитесь по VNC, используя данные из заказа. Оба способа дают доступ к одному и тому же выделенному Mac mini.

01Подключитесь по инструкции из заказа

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

02Начните с удобного для сети разрешения

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

03После работы в интерфейсе сохраните возможность запускать команды

Сборка должна по-прежнему запускаться и воспроизводиться через SSH. Если сеанс VNC оборвётся, для сборок, журналов и диагностики CI не придётся полагаться на изображение рабочего стола.

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

05 / Подключение CI

Превратите первую сборку в повторяемую задачу

Чтобы подключить self-hosted runner в GitHub Actions, сначала создайте команду регистрации и краткосрочный токен в настройках runner репозитория. Затем выполните на этом Mac команду, которую платформа предоставит для текущей регистрации. Не сохраняйте токен в репозитории, снимках экрана или журналах сборки.

РЕГИСТРАЦИЯ

Привяжите runner к нужному репозиторию

Зарегистрируйте runner в репозитории, которому нужны сборки, или в управляемой организации и присвойте ему метки, по которым можно определить этот хост macOS. Убедитесь, что в интерфейсе runner отображается как активный, и только после этого отправляйте workflow.

ЗАПУСК

Сначала выполните минимальную сборку

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

ЗАЩИТА

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

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

Что проверить в минимальном workflow?

Сначала убедитесь, что выбран нужный runner, код получен из репозитория, а командаxcodebuild -version показывает ту же версию, что и при ручной проверке. Затем запустите проверенную scheme. Укажите в workflow подходящие проекту scheme, целевую платформу и настройки подписи — пример команды не подходит автоматически для сборки любого проекта.

06 / Завершение аренды

До окончания аренды разберитесь с задачами и данными

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

01Сохраните нужные файлы

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

02Решите, продлевать ли аренду или выбрать старшую модель

Если сборка ещё не завершена, проверьте возможность продления в консоли. Если параллельные задачи ограничены объёмом памяти или диска, сравните характеристики Commit 16 и Commit 24 и выберите вариант по фактической нагрузке.

03Удалите связи с внешними задачами

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

Читайте дальше

Первая сборка готова? Ищите ответ на следующий вопрос

Если нужно уточнить способ подключения, команды сборки или правила оплаты, начните с документации. Советы по настройке удалённой среды разработки ищите в блоге по запросу «Настройка среды разработки на удалённом Mac». Актуальны статьи, опубликованные в блоге на данный момент.

Начните с одного дня

Готов проект? Пора выделить ему Mac.

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