Питание, сеть и охлаждение — забота дата-центраВаш узел сборки работает 365 дней в году

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

Port M4 Base от $19.7/деньДень · неделя · месяц · кварталОплата в USD

Расписание сборок

tokyo-node-07 · Apple Silicon M4 Pro · 64GB объединённой памяти · 2TB SSD

График работы за год365 дней в сетиПример графика · одна ячейка — 1 день
Pipeline · пример расписания
00:0006:0012:0018:00
main7 запусков · среднее время 6m12s, пример
release/2.43 запуска · среднее время 9m40s, пример
nightlyС 02:00 · включая UI-тесты

Пример задачи nightly: UI-тесты, 2h05m. Разные ветки используют ресурсы CPU, памяти и диска одной команды; число параллельных задач стоит определить по результатам тестов проекта.

Пример загрузки CPUТолько задачи вашей команды

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

Привычные инструменты сборки — как обычно, на выделенном узле

Xcode fastlane GitHub Actions GitLab CI Jenkins Flutter React Native

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

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

Свой Mac, общий runner или выделенный сервер: что подойдёт команде

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

Свой сервер

Mac mini в офисе

Выгоднее при редких сборках и наличии свободного Mac

Подходит, если

  • Вы собираете проект время от времени и у вас уже есть свободный Mac.
  • Кто-то готов следить за питанием, сетью и обновлениями системы.
  • Код или зависимости должны оставаться во внутренней сети компании.

Не подходит, если

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

Общий runner

Удобнее при небольшом объёме сборок и допустимом ожидании в очереди

Подходит, если

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

Не подходит, если

  • Сборки часто стоят в очереди, а сроки релиза зависят от общей ёмкости.
  • Для ускорения постоянно нужны DerivedData и кеши зависимостей.
  • Вам нужна управляемая среда macOS на длительный срок.
Выделенный сервер

Выделенный узел в дата-центре

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

Подходит, если

  • Слияния идут по нескольку раз в день и вы не хотите заниматься питанием, сетью и охлаждением.
  • Нужно сохранять кеш и самостоятельно задавать порядок сборок веток.
  • Команда разрабатывает на Windows и собирает проекты для macOS удалённо.

Не подходит, если

  • Вы собираете проект один-два раза в месяц, а своё оборудование простаивает.
  • Нужно мгновенно масштабироваться до десятков машин — возможности одного выделенного узла ограничены.
  • Вы хотите передать на обслуживание также зависимости проекта, сертификаты и pipeline.
Работа круглый год

Узел в дата-центре работает 365 дней в году

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

365дней

Работа круглый год

Узел не включается и не выключается по графику офиса.

0раз

Плановых отключений

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

5площадок

Дата-центры

Сингапур, Токио, Сеул, Гонконг и запад США.

1 узел / 1 команда

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

Оборудование не используется другими клиентами.

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

Замена узла
Выделенная машина

Весь Mac mini — в распоряжении одной команды

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

Выделенный

Только для одного клиента

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

Физический узел

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

Сборки выполняются непосредственно на физическом компьютере Apple Silicon. Доступны графический интерфейс macOS и командная строка; инструменты и зависимости можно настраивать под проект.

Эмблема станции OSXPort с орбитальными кольцамиOSXPort1 машина · 1 команда
Кеши

Кеш остаётся на месте

DerivedData, кеши CocoaPods и SPM не удаляются задачами других клиентов. Настройте очистку самостоятельно, чтобы архивы и кеши не заняли весь SSD.

Параллельность

CPU не делится с другими

При одновременной сборке main и release ресурсы распределяются только между задачами вашей команды. Выделенный узел не означает бесконечную параллельность: эмуляторы и компиляция используют ресурсы одной машины.

Apple Silicon M4 / M4 Pro

M4 или M4 Pro: выбор по размеру проекта

Два чипа доступны в трёх конфигурациях узлов. Для одного приложения начните с M4. Для крупных проектов с несколькими target, большего числа параллельных тестов и запуска моделей рассмотрите M4 Pro с 64GB памяти.

Apple Silicon M4

Модели Port M4 Base и Port M4 Plus

Чип
Apple Silicon M4
Объединённая память
16GB / 24GB
Накопитель
256GB / 512GB SSD

Для чего хватает M4

  • Одно приложение или несколько target.
  • Повседневная компиляция, архивирование и автоматическая публикация.
  • Контролируемое число симуляторов и сохранение инкрементного кеша.

Не рекомендуется

  • Запускать несколько симуляторов одновременно на 16GB.
  • Постоянно выполнять много параллельных задач на крупном проекте без ограничений.

Apple Silicon M4 Pro

Модель Port M4 Pro

Чип
Apple Silicon M4 Pro
Объединённая память
64GB
Накопитель
2TB SSD

Когда нужен запас

  • Крупные проекты с несколькими target и scheme.
  • Параллельные UI-тесты на нескольких симуляторах.
  • Запуск локальных моделей и оценка их квантования, которым нужна большая память.

Когда не нужен

  • Несколько сборок одного приложения в день.
  • Обучение на нескольких ускорителях или специальное аппаратное обеспечение.
Все цены

Три конфигурации узлов от $19.7 в день

Каждый тариф — целый выделенный физический Mac mini; доступно 5 регионов. Оплата за день подойдёт для тестового запуска pipeline, за месяц или квартал — для постоянных ночных задач. Актуальный статус доступности проверяйте в панели управления.

Port M4 Plus

Ежедневная параллельность

Apple Silicon M4 · 24GB объединённой памяти · 512GB SSD

$40.3/день

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

Арендовать Port M4 Plus

Оплата в USD · Доступны USDT-TRC20 и Visa / Mastercard / Amex через Stripe. Точный список способов зависит от платёжного шлюза, доступного на сервере.

Таблица выбора
5 регионов

Выберите узел ближе к репозиторию и команде

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

SG

Сингапур

Юго-Восточная АзияОриентир: 20~50 ms

Для команд в Юго-Восточной Азии и проектов, чьи код, зависимости и процессы публикации в основном находятся в этом регионе.

Узел в Сингапуре →
JP

Япония (Токио)

Восточная АзияОриентир: 30~60 ms

Для команд в Японии и проектов с репозиториями и источниками зависимостей в Восточной Азии, которым нужна сборка поближе.

Узел в Токио →
KR

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

Северо-Восточная АзияОриентир: 30~50 ms

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

Узел в Сеуле →
HK

Гонконг

Южный Китай и Юго-Восточная АзияОриентир: 20~40 ms

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

Узел в Гонконге →
US-W

Запад США

Западное побережье Северной АмерикиОриентир: 25~35 ms

Для команд на западном побережье Северной Америки и проектов с репозиториями, зависимостями или получателями артефактов в этом регионе.

Узел на западе США →
Сборка без Mac

Команды на Windows и Flutter могут поручить узлу сборку ipa

Как собрать iOS-приложение на Windows?

Пишите код на Windows как обычно, фиксируйте изменения и отправляйте их в репозиторий. Runner на выделенном узле заберёт код, запустит xcodebuild или fastlane gym, создаст ipa и вернёт артефакты в pipeline. Менять рабочий компьютер на Mac не нужно.

Нужен ли Mac для сборки iOS-приложения на Flutter?

Нужна среда сборки macOS, но не обязательно держать Mac в офисе. Установите на узел Flutter, Xcode и зависимости проекта, затем удалённо запустите flutter build ipa. Для подписи используются импортированные вами сертификат и профиль.

Для подписи: вам по-прежнему нужна действующая подписка Apple Developer Program, а также собственные сертификат подписи, профиль и App Store Connect API Key. Узел предоставляет среду сборки, но не заменяет эти требования для публикации.

  1. 1

    Отправьте код с Windows

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

    git push origin main
  2. 2

    Runner на узле получает задачу

    Зарегистрируйте self-hosted runner и направляйте задачи macOS на нужный узел с помощью меток. Не забудьте настроить разумный уровень параллельности для задач команды.

    runs-on: [self-hosted, macOS, osxport]
  3. 3

    Соберите и подпишите ipa

    Импортируйте сертификат и профиль, затем настройте подпись. Храните секреты в защищённых переменных CI, а не в репозитории.

    flutter build ipa --release
  4. 4

    Загрузите в TestFlight

    Настройте автоматическую загрузку через App Store Connect API Key и передавайте в pipeline журналы ошибок и расположение артефактов.

    fastlane pilot upload
Примеры

Три команды — три pipeline

Ниже приведены вымышленные примеры типичных сценариев для выбора тарифа. Это не отзывы реальных клиентов и не результаты тестирования производительности.

Ночные сборки в команде из 5 подрядчиков

02 чВремя запуска nightly

«Раньше сервер сборки стоял в офисе, и после отключения электричества на выходных приходилось переносить задачи. Теперь nightly запускается на узле в Сингапуре, а код и отчёты возвращаются в прежний pipeline. Команде больше не нужно дежурить у оборудования».

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

Port M4 Base · $98.5 в месяц

Сборка Flutter без Mac

0 машинЛокальные Mac

«Вся команда разрабатывает на Flutter под Windows. После отправки кода узел в Токио собирает ipa и загружает его в TestFlight. Сертификаты и профили мы храним сами, а при сбое сначала проверяем журнал CI — больше не нужно срочно искать Mac для сборки».

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

Port M4 Base · от $19.7 в день

Параллельные сборки перед релизом

3Pipeline веток в очереди

«Нужно собирать main, release и hotfix. Лёгкие задачи запускаем параллельно, а тесты с высокой нагрузкой на память — по очереди. Выделенный узел занят только нашей работой, ждать освобождения ресурсов другими клиентами не нужно».

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

Port M4 Plus · $201.6 в месяц

Частые вопросы

Что обычно спрашивают перед запуском

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

Узлы действительно работают без плановых отключений?

Узлы в дата-центре работают 365 дней в году без плановых отключений. Аппаратный сбой всё же может повлиять на задачу. Войдите в панель управления и создайте обращение: укажите узел, симптомы и последние действия — мы поможем с диагностикой и заменой. График работы не является историей безотказности.

Можно установить Homebrew и выбрать версию Xcode?

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

Когда выгоднее перейти с оплаты за день на месяц?

Для сравнения разделите месячную цену на дневную. Port M4 Base стоит $19.7 в день и $98.5 в месяц: по цене тарифа пять периодов дневной оплаты равны одному месяцу. Если планируете продолжать пользоваться узлом, выбирайте месячную оплату. Перед заказом проверьте даты начала и окончания периода и правила продления.

Какие способы оплаты доступны?

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

Можно пользоваться узлом всей командой?

Да, один узел можно использовать внутри команды: к нему могут подключаться несколько разработчиков и pipeline. Другим клиентам он не передаётся. Разграничьте доступ к каталогам сборки, материалам для подписи и runner, а также ограничьте число одновременно запущенных задач компиляции и симуляторов.

Следующий шаг

Запустите свой pipeline на один день

Оплата за день: Port M4 Base — $19.7/день. Подключите существующий runner, выполните чистую сборку, инкрементную сборку и полное архивирование с подписью. После этого решите, переходить ли на оплату за месяц или квартал.

Пример счёта · за месяц

Регион узла
Токио
Port M4 Plus
$201.6
+1TB SSD
$12.9
Итого · USD
$214.5

Пример за месяц: $201.6 + $12.9, без дополнительных услуг.

Оплата: USDT-TRC20 или Visa / Mastercard / Amex через Stripe.