Руководство для начинающих

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

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

Две модели, 5 узлов, от $21.2 в день. Весь Mac в вашем распоряжении, не виртуальная машина. Статус выдачи и фактическая доступность отображаются в консоли.

Шаг 1 / Выберите ресурсы

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

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

Arm Line M4

M4 / 16GB / 256GB

Подходит для первой сборки Xcode, одной линии CI и временной сборки iOS-приложений. Сначала проверьте установку зависимостей, размер кэша и процесс сборки на реальном проекте.

$21.2/день

Арендовать Arm Line M4

Arm Grid M4 Pro

M4 Pro / 64GB / 2TB

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

$59.8/день

Арендовать Arm Grid M4 Pro

Обе модели доступны в 5 узлах

Сингапур, Япония (Токио), Южная Корея (Сеул), Гонконг и восток США. Для интерактивной работы учитывайте сетевой маршрут от команды до узла. Для сборки без участия пользователя важны также загрузка кода, скачивание зависимостей и передача артефактов. Расстояние — лишь ориентир, а не показатель фактической задержки.

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

Шаг 2 / Оплата и выдача

После оплаты проверьте статус заказа

Принимаются только USDT-TRC20 и Visa / Mastercard / Amex через Stripe. Расчёты — только в долларах США (USD). Доступность платёжных шлюзов проверяйте по ответу серверного интерфейса.

  1. 01

    Проверьте заказ

    Проверьте модель, срок, узел и дополнительные опции. Для USDT обязательно выберите сеть TRC20 и сверяйте реквизиты и сумму со страницей оплаты. Не используйте данные для оплаты из старого заказа.

  2. 02

    Дождитесь подтверждения

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

  3. 03

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

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

Шаг 3 / Первое подключение

Сначала проверьте SSH, затем откройте рабочий стол

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

Установить SSH-соединение

read -r -p "Node IP: " NODE_IP
read -r -p "SSH port: " SSH_PORT
read -r -p "Login user: " NODE_USER
ssh -p "$SSH_PORT" "$NODE_USER@$NODE_IP"

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

Сменить пароль текущего пользователя на удалённом Mac

whoami
hostname
passwd

passwd Выполните команду в SSH-сеансе облачного Mac. Введите старый, а затем новый пароль по запросу; символы при вводе не отображаются. Не используйте пароль от других сервисов и не записывайте его в журналы сборки.

Настройка VNC-клиента

ПолеЧто указатьКак проверить
Адрес сервераIP-адрес узла из консолиИспользуйте адрес из текущего заказа, а не IP своего компьютера.
ПортПорт VNC из консолиЕсли в клиенте есть отдельное поле для порта, укажите его отдельно. Не подбирайте порт наугад.
Данные для входаДанные для графического подключения из консолиНе предполагайте, что пароль VNC всегда совпадает с паролем SSH.
Начальные параметры экранаНачните с низкого разрешенияСначала проверьте изображение и ввод, затем повышайте качество с учётом пропускной способности сети.

В macOS можно также использовать системную функцию «Общий экран». После смены пароля проверьте по инструкции к узлу, нужно ли обновить данные для графического подключения. Не открывайте VNC напрямую для недоверенных сетей.

Шаг 4 / Подготовьте среду сборки

Проверьте инструменты до первой сборки

Выполняйте команды ниже на облачном Mac. Сначала проверьте систему и уже установленные инструменты, затем установите недостающие компоненты. Не заменяйте закреплённые командой версии Xcode, Ruby или зависимостей только ради копирования примера.

1. Проверьте систему и Xcode

sw_vers
uname -m
df -h /
ls /Applications
xcode-select -p
xcodebuild -version

xcode-select Если xcode-select указывает на отдельные инструменты командной строки, это не подтверждает наличие полного Xcode. Если полный Xcode не установлен, подготовьте дистрибутив, разрешённый командой, распакуйте его и поместите в /Applications; на диске должно хватить места для распаковки, зависимостей и артефактов архива.

2. Укажите полный Xcode и выполните инициализацию

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -license
sudo xcodebuild -runFirstLaunch
xcodebuild -version
xcodebuild -showsdks

В этом примере приложение называется Xcode.app. Если установлено несколько версий, укажите фактический путь. Перед принятием лицензии прочитайте её условия. Чтобы не менять инструментарий для других задач, для отдельной сборки можно задать DEVELOPER_DIR и указать нужную версию.

3. Проверьте Homebrew, Ruby и Fastlane

command -v brew
brew --version
ruby --version
bundle --version

Если Homebrew ещё не установлен, воспользуйтесь проверенной командой инструкцией команды. Не вставляйте удалённые скрипты установки из неизвестных источников. На Apple Silicon Homebrew обычно установлен в /opt/homebrew, но ориентируйтесь на фактический вывод. Если Homebrew установлен, но не найден в текущем сеансе, загрузите его окружение:

eval "$(/opt/homebrew/bin/brew shellenv)"
brew install ruby
export PATH="$(brew --prefix ruby)/bin:$PATH"
gem install bundler
bundle install
bundle exec fastlane --version

Последние четыре команды выполните в каталоге проекта. Предполагается, что в репозитории есть Gemfile с закреплёнными зависимостями Fastlane Gemfile и файл блокировки зависимостей. Если этих файлов нет, сначала согласуйте версии зависимостей в команде и добавьте файл блокировки в репозиторий, а затем устанавливайте их. Не устанавливайте массово зависимости сборки в системный Ruby с правами администратора.

4. Сначала проверьте архив без подписи

read -r -p "Workspace path: " WORKSPACE
read -r -p "Shared scheme: " SCHEME
xcodebuild -list -workspace "$WORKSPACE"
xcodebuild \
  -workspace "$WORKSPACE" \
  -scheme "$SCHEME" \
  -destination 'generic/platform=iOS' \
  -archivePath "$HOME/BuildArtifacts/FirstBuild.xcarchive" \
  CODE_SIGNING_ALLOWED=NO \
  archive

Сначала перейдите в каталог проекта, установите заявленные в нём зависимости и убедитесь, что схема доступна другим пользователям. Если проект содержит только .xcodeproj , замените -project вместо -workspace. Эта команда проверяет компиляцию и создание архива, но не создаёт подписанный пакет для распространения и не гарантирует успешную работу всех скриптов, которым требуется подпись.

Шаг 5 / Подключите автоматизацию

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

Выберите GitHub Actions или GitLab Runner в зависимости от платформы, где хранится код. Сначала проверьте задачу на доверенной ветке, убедитесь в настройке пользователя службы, переменных среды и доступе к связке ключей, а затем передайте управление основной CI-сборке.

GitHub Actions: регистрация и установка службы пользователя

В настройках runner репозитория или организации выберите macOS и ARM64. Следуйте актуальным инструкциям платформы: скачайте пакет, проверьте его и распакуйте в отдельный каталог. Выполните команды ниже из этого каталога. URL регистрации и временный токен возьмите на текущей странице настроек.

read -r -p "Repository or organization URL: " RUNNER_URL
read -r -s -p "Registration token: " RUNNER_TOKEN
printf '\n'
./config.sh \
  --url "$RUNNER_URL" \
  --token "$RUNNER_TOKEN" \
  --labels armvnc,macos,arm64
unset RUNNER_TOKEN
./svc.sh install
./svc.sh start
./svc.sh status

В workflow укажите runs-on: [self-hosted, macOS, ARM64, armvnc], сверив метки с фактическими метками, показанными платформой. Запуск службы пользователя зависит от сеанса входа в систему. После установки проверьте её работу после повторного входа и перезагрузки: успешная регистрация не означает, что задачи будут выполняться при любом состоянии системы.

GitLab Runner: регистрация shell-исполнителя

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

brew install gitlab-runner
read -r -p "CI server URL: " CI_SERVER_URL
read -r -s -p "Runner authentication token: " RUNNER_TOKEN
printf '\n'
gitlab-runner register \
  --url "$CI_SERVER_URL" \
  --token "$RUNNER_TOKEN" \
  --executor shell \
  --description "ArmVNC macOS ARM64"
unset RUNNER_TOKEN
gitlab-runner install
gitlab-runner start
gitlab-runner status
gitlab-runner verify

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

Добавьте эти четыре проверки в первую задачу CI

  1. Выведите whoami、xcode-select -p и xcodebuild -version, чтобы убедиться, что задача выполняется в нужной среде.
  2. Явно задайте PATH для инструментов. Фоновая служба может не читать настройки интерактивной оболочки.
  3. Сначала выполните сборку без подписи, затем настройте контролируемый доступ к связке ключей и шаги подписи. Не выводите ключи, пароли или токены в журналы.
  4. Настройте передачу и очистку артефактов. Не запускайте непроверенный код из открытых источников на runner, где хранятся материалы для подписи.

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

Разберитесь в терминах через практику

Восемь терминов о выдаче и подключении

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

Физический узел
Реальный Mac в центре обработки данных. Консоль показывает данные для подключения к этому устройству, а не к среде разработки на вашем компьютере.
Выделенный физический Mac
Весь вычислительный ресурс и хранилище одного Mac выделены под ваш заказ. Вы сами управляете параллельными задачами, зависимостями и кэшем.
Не виртуальная машина
Вы получаете реальное физическое устройство с macOS. Работать можно как в графическом интерфейсе, так и в командной строке.
VNC
Протокол удалённого графического подключения. Позволяет просматривать и использовать рабочий стол Mac с разных операционных систем; удобство зависит от сети и настроек качества изображения.
Общий экран
Встроенный в macOS способ удалённого графического подключения. На Mac-клиенте можно подключиться к рабочему столу узла по данным, полученным при выдаче.
self-hosted runner
Узел CI, который регистрируете и обслуживаете вы. Платформа разработки отправляет ему задачи, а процесс runner на облачном Mac выполняет сборку.
Общая память
Память, совместно используемая CPU и GPU на Apple Silicon. Её занимают модели, задачи сборки и системные процессы.
Объединение через Thunderbolt 5
Дополнительная конфигурация для подключения нескольких устройств через Thunderbolt 5; оплата взимается за каждое устройство. Она не объединяет память нескольких Mac в общее адресное пространство — задачи нужно планировать самостоятельно.
Далее / Действуйте по результатам проверки

Сборка проходит? Зафиксируйте процесс

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

Настройте графическое подключение

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

Инструкция по удалённому подключению

Настройте долгосрочную работу

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

Сравнить варианты аренды

Найдите этап, который не прошёл проверку

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

Открыть справочный центр

Проверьте всё на реальном проекте

Начните с аренды на день и проверьте подключение, зависимости и создание архива. Принимаются только USDT-TRC20 и Visa / Mastercard / Amex через Stripe; расчёты — в USD.