Доверьте сегодняшнюю сборку iOS облачному Mac

Выделенный физический Mac, не виртуальная машина. 5 локаций, оплата за день, неделю, месяц или квартал. От $21.1 в день

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

Сборочный поток · готовый .ipascheme App-Prod · Release · пример: 19 минут
Токио · ArmRDP M4 Plus
Время 21:04Получение кодаgit fetch · main
Время 21:11xcodebuild archiveXcode 16.2 · arm64
Время 21:17codesign и экспортDistribution · .ipa
Время 21:23Загрузка в TestFlightfastlane pilot

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

runner · tko-plus-02GitHub Actions self-hosted · пример конфигурации
Пример простоя
Xcode16.2 · зафиксированная версия
macOS15 Sequoia
МеткиmacOS, xcode-16.2
ХостВыделенный Mac mini M4
Очередь на вечер · пример3 scheme
App-Prodarchive · с 21:11
Сборка
App-StagingОжидает runner
В очереди
WidgetОжидает runner
В очереди
Почему именно настоящий Mac

Три вещи, которые можно проверить

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

Выделенный физический узел

Весь Mac mini — только в вашем распоряжении. Процессор, унифицированная память и SSD не делятся с другими клиентами: без разделения ресурсов и перепродажи мощностей. Кэш сборки остаётся на вашем узле — среду не нужно заново подготавливать перед каждой задачей.

1 хост = 1 клиент

Не виртуальная машина

Xcode, симулятор и Metal работают в macOS нативно. Доступны графический интерфейс и командная строка; инструменты разработки не ограничены виртуализацией. Проверьте характеристики оборудования и модель Mac mini самостоятельно.

system_profiler SPHardwareDataType

Аренда от одного дня

Арендуйте на день, чтобы проверить зависимости и подпись; для релизного спринта выберите неделю, а для постоянно работающего runner — месяц или квартал. Цены указаны отдельно для каждого периода: месячная стоимость не пересчитывается в дневную ради рекламной цены.

M4 Base: $21.1/день · $57.1/неделю · $105.7/месяц

Характеристики без мелкого шрифта

Характеристики трёх моделей

Все модели — Apple Silicon Mac mini. Все три доступны во всех 5 локациях; объём памяти и SSD зависит от модели, дополнительное рабочее пространство можно выбрать отдельно.

ID m4-16-256

ArmRDP M4 Base

Чип
M4
Унифицированная память
16GB
SSD
256GB
Подключение
SSH / VNC
Доступность по локациям
Все 5 локаций

Выделенный физический узел · Mac mini

ID m4-24-512

ArmRDP M4 Plus

Чип
M4
Унифицированная память
24GB
SSD
512GB
Подключение
SSH / VNC
Доступность по локациям
Все 5 локаций

Выделенный физический узел · Mac mini

ID m4pro-64-2tb

ArmRDP M4 Pro

Чип
M4 Pro
Унифицированная память
64GB
SSD
2TB
Подключение
SSH / VNC
Доступность по локациям
Все 5 локаций

Выделенный физический узел · Mac mini

Можно добавить SSD на +1TB / +2TB и объединить накопители через Thunderbolt 5. Сетевые параметры, версии инструментов и конфигурацию проверьте при оформлении заказа и активации.

Все характеристики и дополнения
Цены

Три модели, аренда от одного дня

Оплата в долларах США. Для каждой модели отдельно выбирайте день, неделю, месяц или квартал. Указана полная базовая стоимость выбранного периода, а не пересчёт на день.

ArmRDP M4 Base

M4 · 16GB · 256GB

$21.1/день

Запустите первый конвейер

Для проектов с одним scheme и краткосрочных проверок. Сначала измерьте полное время сборки, объём кэша и пиковое потребление памяти, а затем решите, нужно ли больше постоянных ресурсов.

Арендовать M4 Base

ArmRDP M4 Pro

M4 Pro · 64GB · 2TB

$59.5/день

Для крупных проектов и объёмных рабочих данных

Для полной сборки крупных проектов, тестирования в симуляторе и проверки вывода локальных моделей. 64GB унифицированной памяти и SSD на 2TB хватит для нескольких наборов зависимостей и артефактов сборки.

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

Стартовая цена — $21.1/день; SSD на +1TB — от $3/день. Дополнения оплачиваются отдельно. Перед оплатой проверьте модель, срок, локацию и итоговую сумму.

Цены по периодам и дополнения
Ферма сборки iOS

Превратите разовую сборку в повторяемый процесс

Зарегистрируйте от 1 до N облачных Mac как self-hosted runner для GitLab или GitHub Actions. Сначала запустите один конвейер, затем распределите разные scheme по отдельным узлам.

  1. 01

    Измерьте время реальной сборки

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

  2. 02

    Зарегистрируйте runner и назначьте метки

    Назовите метки по macOS, версии Xcode и назначению проекта. Задачи матрицы выполняются параллельно на разных хостах, только если доступны несколько runner с подходящими метками.

  3. 03

    Зафиксируйте инструменты, затем масштабируйтесь

    Выберите нужную проекту версию Xcode и используйте её постоянно. Укажите версию через DEVELOPER_DIR, задайте отдельные пути для архивов и кэша, чтобы задачи не перезаписывали данные друг друга.

Одной версии Xcode недостаточно для воспроизводимой сборки. Фиксируйте в истории изменений команды также lock-файлы зависимостей, материалы для подписи, конфигурацию экспорта и переменные окружения.

Ночное архивирование

GitHub Actions · пример конфигурации
name: ios-nightly
on:
  workflow_dispatch:
  schedule:
    - cron: "0 13 * * *"
jobs:
  archive:
    runs-on: [self-hosted, macOS, xcode-16.2]
    strategy:
      fail-fast: false
      matrix:
        scheme: [App-Prod, App-Staging, Widget]
    env:
      DEVELOPER_DIR: /Applications/Xcode-16.2.app/Contents/Developer
    steps:
      - uses: actions/checkout@v4
      - name: Archive
        run: |
          xcodebuild archive \
            -workspace App.xcworkspace \
            -scheme "${{ matrix.scheme }}" \
            -configuration Release \
            -archivePath "build/${{ matrix.scheme }}.xcarchive"
      - name: Export
        run: |
          xcodebuild -exportArchive \
            -archivePath "build/${{ matrix.scheme }}.xcarchive" \
            -exportPath "build/export/${{ matrix.scheme }}" \
            -exportOptionsPlist ci/export.plist
Время указано в UTCВ репозитории должны быть конфигурация экспорта и установленные материалы для подписи

Замените workspace, scheme и путь к Xcode на значения для своего проекта. В GitLab задачи также назначаются по меткам runner. Храните сертификаты и ключи в защищённых переменных или отдельной связке ключей — не добавляйте их в репозиторий.

Локации

5 локаций — выберите ближайшую к команде

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

SG

Сингапур

Юго-Восточная Азия

Часовой пояс
UTC+8
Ориентировочная задержка
20–50 ms
Расположение команды
Юго-Восточная Азия
Заказать узел в Сингапуре →
JP

Япония · Токио

Восточная Азия

Часовой пояс
UTC+9
Ориентировочная задержка
30–60 ms
Расположение команды
Япония и Восточная Азия
Заказать узел в Токио →
KR

Южная Корея · Сеул

Северо-Восточная Азия

Часовой пояс
UTC+9
Ориентировочная задержка
30–50 ms
Расположение команды
Южная Корея и Северо-Восточная Азия
Заказать узел в Сеуле →
HK

Гонконг

Южный Китай и Юго-Восточная Азия

Часовой пояс
UTC+8
Ориентировочная задержка
20–40 ms
Расположение команды
Южный Китай, Гонконг и Макао
Заказать узел в Гонконге →
US-W

Запад США

Западное побережье Северной Америки

Часовой пояс
UTC−8 / −7
Ориентировочная задержка
25–35 ms
Расположение команды
Западное побережье Северной Америки
Заказать узел на западе США →

Указаны ориентировочные диапазоны задержки для локаций, а не результаты измерений из вашей сети. Скорость передачи по SSH, клонирования репозитория и работы VNC зависит от конкретного канала связи; часовой пояс на западе США меняется при переходе на летнее время. Все узлы работают 365 дней в году. Актуальный статус доступности смотрите в консоли.

Удалённый доступ

Два способа подключиться к Mac

Используйте SSH для скриптов и CI, а VNC с общим экраном — для работы с Xcode и симулятором. Найдите адрес хоста и данные для доступа в консоли, затем настройте клиент по инструкции.

SSH · скрипты и runner

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

ssh -i ~/.ssh/armrdp admin@<адрес-хоста>

VNC · графический интерфейс

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

ssh -N -L 5901:localhost:5900 admin@<адрес-хоста>
Памятка по подключениюSSH + VNC

Один Mac — два способа работы

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

Командная строка
Локальный терминал → SSH → runner

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

Графический интерфейс
Общий доступ к экрану → macOS → Xcode

Настройки проекта, симулятор, подпись и отладка интерфейса

Адрес локального подключения после создания туннеляvnc://localhost:5901
Схема подключения, а не снимок работающего рабочего стола. Имя пользователя, адрес и конфигурация системы зависят от фактических данных при передаче.
Под разные рабочие процессы команды

Возможно, вам хватит этих трёх фраз

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

«Во время релизной недели хочу архивировать три scheme в отдельных каталогах. Если задачи можно распределить по разным runner, не придётся постоянно следить за одной очередью».

Руководитель iOS-разработки · пример запроса

«Хочу зафиксировать версию Xcode и lock-файл зависимостей. Сначала проверю результат на одном commit, а затем добавлю этот Mac в рабочий конвейер».

Инженер CI/CD · пример запроса

«Сначала арендую M4 Base на день и настрою сертификаты и GitLab runner. Когда пойму, сколько ресурсов занимает проект, выберу долгосрочный период».

Независимый разработчик · пример запроса
Вопросы и ответы

Перед заказом проверьте четыре пункта

Все вопросы и ответы

Это виртуальная машина?

Нет. Вы получаете отдельный физический Mac mini. Во время аренды ресурсы оборудования не делятся с другими клиентами. Проверьте модель чипа, объём памяти и хранилища в системной информации.

Можно ли держать несколько версий Xcode?

Да, установите и сохраните несколько версий для разных проектов. В скрипте сборки укажите нужную версию через DEVELOPER_DIR или переключитесь с помощью xcode-select. Перед установкой проверьте совместимость с системой и свободное место на диске.

Как оценить, сколько узлов нужно для параллельной сборки?

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

Как обращаться с файлами для подписи и артефактами сборки?

Храните сертификаты в отдельной связке ключей, а секретные переменные — в защищённых настройках CI. Синхронизируйте архивы и экспортированные артефакты с хранилищем команды. До окончания аренды создайте резервные копии и отзовите ненужные учётные данные.

Оплата

Два способа оплаты, расчёты в долларах США

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

USDT-TRC20Visa / Mastercard / Amex через Stripe
  1. Выберите модель, локацию и период
  2. Проверьте сумму в USD и оплатите
  3. Проверьте заказ и данные хоста в консоли

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

Закажите сегодня — собирайте уже сегодня вечером

M4 Base от $21.1 в день. Начните с одного проекта и одного runner, а затем расширьте ферму сборки iOS.

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