Впишите аренду в график сдачи проекта

От заказа до первого ipa за один день

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

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

Mac Mini M4: $20.2 в день. Выделенный физический компьютер, не виртуальная машина. По окончании проекта аренда остановится, если её не продлить.

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

Перед заказом согласуйте шесть пунктов

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

  • Цель: что нужно сдать

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

  • Узел: выберите с учётом расположения команды

    Доступны узлы в Сингапуре, Токио, Сеуле и Гонконге. Ориентируйтесь на сеть команды, которая будет чаще подключаться к машине. Если предстоит регулярно передавать файлы, учитывайте и маршрут передачи данных. Близость региона не гарантирует одинакового качества соединения: оно зависит от используемой сети.

  • Срок: оцените, как долго будете пользоваться машиной

    Оплата доступна за день, неделю, месяц или квартал. Для Mac Mini M4 цена за день — $20.2, за неделю — $54.6, за месяц — $101.1, за квартал — $275. При использовании от трёх дней недельный тариф выгоднее посуточного. Если график пока не определён, сначала сравните тарифы и только потом оплачивайте.

  • Оплата: проверьте доступные способы

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

  • Подпись: сертификата недостаточно — нужен закрытый ключ

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

  • Завершение: назначьте ответственного за окончание аренды

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

Перейдите от графика к заказу

При выборе Mac учитывайте размер проекта

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

Mac Mini M4

M4 / 16 ГБ RAM / 256 ГБ SSD

Подойдёт для небольших проектов на Swift, обычных сборок Flutter и краткосрочного тестирования. Проверьте суммарный объём исходников, зависимостей, симуляторов и архивов, а не только размер репозитория.

Не подойдёт, если вы планируете постоянно хранить на одной машине много ресурсов, несколько крупных проектов и все старые архивы.

$20.2 в день · $54.6 в неделю
$101.1 в месяц · $275 за квартал

Mac Mini M4 Pro

M4 Pro / 64 ГБ RAM / 2 ТБ SSD

Подойдёт для крупных проектов Unity, сборок с несколькими Target и работы с большим количеством зависимостей. Большой объём памяти и хранилища оставляет запас для сложных проектов, но не гарантирует одинакового ускорения для каждого из них.

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

$59.3 в день · $160 в неделю
$296.3 в месяц · $805.9 за квартал

  1. 01

    Проверьте конфигурацию

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

  2. 02

    Оплатите заказ

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

  3. 03

    Откройте сведения об инстансе

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

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

При первом подключении проверьте среду

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

Рабочий стол с компьютером и кодом — иллюстрация проверки среды сборки после подключения
Сначала проверьте, что среда сборки готова к работе, затем переносите код клиента и материалы для подписи. Фото — иллюстрация рабочего процесса.

Удалённый рабочий стол: для первой проверки и Archive

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

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

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

SSH: для сборки командами и сохранения логов

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

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

Сначала проверьте командную сборку — затем подключайте автоматизацию

После установки или переключения Xcode проверьте, какая версия используется

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

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

Выполните в терминале облачного Mac

xcode-select --print-path
xcodebuild -version

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

Следуйте инструкциям для своего фреймворка и не пропускайте подпись

Подготовьте первую сборку так, чтобы её можно было повторить

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

Нативный Xcode: сначала архив, затем экспорт

  1. Получите код из нужного коммита и восстановите зависимости по инструкции проекта. Если зависимости управляются через workspace, не открывайте вместо него отдельный project.
  2. Проверьте Scheme, идентификатор пакета, версию и номер сборки. Импортируйте разрешённые клиентом сертификат, закрытый ключ и профиль подготовки и убедитесь, что они соответствуют текущему Target.
  3. Выберите устройство для архивирования и выполните Product → Archive. Проверьте запись архива в Organizer, затем экспортируйте ipa с учётом назначения сборки.
  4. Сохраните архив, файлы символов и лог сборки. Зафиксируйте, из какого коммита получены артефакты, чтобы при доработке можно было восстановить ход сборки.

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

Flutter: сначала проверьте цепочку инструментов iOS

Используйте согласованную для проекта версию Flutter. Перейдите в корневой каталог проекта, проверьте инструменты, восстановите зависимости и выполните сборку:

flutter doctor -v
flutter pub get
flutter build ipa --release

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

После проверки цепочки инструментов настройте подпись и нативные зависимости проекта iOS. Проверьте путь к ipa и результат экспорта в выводе сборки.

React Native: проверьте конфигурацию Release

  1. Установите зависимости JavaScript по файлу блокировки. Используйте согласованные для проекта версии Node и менеджера пакетов.
  2. Восстановите нативные зависимости iOS, откройте соответствующий workspace и проверьте Scheme и конфигурацию Release.
  3. Проверьте упаковку ресурсов JavaScript, нативные модули, настройки среды и материалы для подписи, затем выполните Archive и экспорт.
  4. Убедитесь, что экспортированный пакет не зависит от сервера разработки. Успешный запуск в режиме разработки не заменяет проверку Release-сборки.

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

Границы между клиентами важнее названий папок

Одна машина для сменной работы или отдельная для каждого клиента?

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

Одна машина по очереди: для редких сборок

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

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

Сначала убедитесь, что клиент согласен с таким вариантом

Отдельная машина на клиента: если сдачи проектов совпадают по времени

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

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

Собирайте параллельно, передавайте клиентам отдельно
Проект сдан — аренду пора завершить

Перед остановкой машины верните проект под свой контроль

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

  1. 01

    Экспортируйте файлы и проверьте их

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

  2. 02

    Отзовите ненужный доступ

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

  3. 03

    Решите, продлевать ли аренду

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

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

В обращении укажите номер машины, узел, время возникновения проблемы, последовательность действий и полный текст ошибки. На скриншоте закройте пароли и закрытые ключи. Если вы ещё не начали аренду, напишите на адрес support@vmssd.com и укажите срок проекта и используемый фреймворк. По вопросам уже работающего инстанса лучше создать обращение в панели управления, чтобы его можно было связать с заказом.

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

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