От первого входа до первого релиза

Подключение, сборка, релиз

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

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

Сначала проверьте статус экземпляра

Выберите способ подключения

Откройте страницу экземпляра в консоли и проверьте его номер, узел и статус готовности. Используйте адрес, имя пользователя, порт и начальные учётные данные, указанные именно для этого экземпляра. Не копируйте параметры с другой машины.

Вход по SSH

Подходит для запуска команд сборки, передачи файлов и просмотра логов. Порт SSH по умолчанию — 22; если для экземпляра указан другой порт, используйте его.

Возьмите адрес хоста и имя пользователя из сведений об экземпляре. При первом подключении проверьте отпечаток хоста, затем добавьте свой открытый ключ. Закрытый ключ храните локально и не прикладывайте к заявке.

Пример первой сборки

Графический рабочий стол VNC

Подходит для работы в Xcode, проверки Simulator и настройки графического интерфейса. Порт VNC по умолчанию — 5900; адрес подключения, пароль и фактический порт указаны в сведениях об экземпляре.

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

Решение проблем с графическим интерфейсом

Веб-терминал консоли

Войдите в консоль и откройте ссылку для подключения на странице экземпляра. Если веб-терминал доступен, подключайтесь через HTTPS в браузере — обычно используется порт 443, поэтому отдельно указывать порт терминала не нужно.

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

Открыть подключение к экземпляру
Сначала проверьте вручную, затем настройте CI

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

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

merge@tokyo-m4pro-07 Пример вывода сборки
$ ssh -p <SSH_PORT> <USER>@<HOST>
Welcome to MergeMac
$ xcode-select -p
/Applications/Xcode.app/Contents/Developer
$ xcodebuild -version
$ cd <PROJECT_DIRECTORY>
$ xcodebuild -scheme App archive
** ARCHIVE SUCCEEDED **
$ fastlane pilot upload
Successfully uploaded Build 214

Замените параметры и запустите

Замените параметры в угловых скобках значениями из сведений об экземпляре.App — пример scheme. Для проекта workspace также укажите свой параметр -workspaceи убедитесь, что scheme опубликована для совместного использования.

Успешное архивирование не означает, что загрузка завершена

Для загрузки нужны действительные данные подписи, параметры экспорта и учётные данные. В примере предполагается, что проект уже настроен для fastlane. Build 214 — не подтверждение вашей доставки: ориентируйтесь на фактический вывод инструмента загрузки.

Поручайте машине только конкретные задачи

Настройка self-hosted runner

MergeMac предоставляет выделенный физический узел, а доступ к репозиторию, настройки задач и учётные данные CI вы контролируете самостоятельно. Сначала выполните archive в терминале от имени того же пользователя, который будет использоваться для задач, и только потом регистрируйте runner. Так будет проще отделить проблемы окружения от проблем планировщика.

GitHub Actions

  1. Откройте настройки runner в нужном репозитории или организации и выберите macOS и соответствующую архитектуру Apple Silicon.
  2. На арендованном узле скачайте runner, проверьте его и зарегистрируйте по командам на текущей странице. Регистрационный token — секрет: не добавляйте его в репозиторий и не показывайте на снимках экрана.
  3. Добавьте метки, например mergemac,macos,m4. В workflow укажите runs-on с соответствующими метками.
  4. Запустите задачу, которая проверяет только версию Xcode, и убедитесь, что её получил нужный узел. Затем добавьте установку зависимостей, archive и загрузку.

Не позволяйте недоверенным внешним pull request запускаться на runner с материалами для подписи. Настройте для задач публикации отдельные права доступа, отличные от прав для обычных проверок.

GitLab Runner

  1. Создайте runner в проекте или группе и получите URL сервиса и token аутентификации, необходимые для текущей процедуры регистрации.
  2. Установите на узле GitLab Runner для нужной архитектуры и зарегистрируйте его по инструкциям. Если нужны локальные инструменты Xcode, выберите подходящий способ запуска Shell.
  3. Настройте метки macos,xcode и другие, а затем явно укажите их в задаче. Runner для публикации должен быть доступен только защищённым веткам или тегам.
  4. Сначала запустите задачу проверки окружения: проверьте рабочую директорию, пользователя и доступ к Keychain. Затем включайте полноценные сборки.

При смене token или окончании аренды отзовите права runner на платформе CI. Удаление файлов с узла само по себе не отменяет авторизацию на платформе.

Термины в консоли

Восемь терминов без лишних слов

Эти термины описывают ресурсы и способы подключения. Они не означают дополнительную лицензию на ПО и не объединяют несколько машин в один более мощный Mac.

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

Сузьте поиск по симптомам

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

  1. 01

    VNC: чёрный экран или нет ответа

    Сначала проверьте в консоли, готов ли экземпляр, затем попробуйте подключиться по SSH. Если SSH работает, а графический интерфейс — нет, проверьте, не выполняется ли вход, выход или переключение графического сеанса. Закройте клиент и подключитесь снова.

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

  2. 02

    Не совпадает версия Xcode

    Выполните xcode-select -p и xcodebuild -version. Проверьте и интерактивный сеанс, и runner: установка нескольких версий не означает, что командная строка переключилась на нужную.

    Для отдельной задачи можно задать DEVELOPER_DIR , указав каталог Developer целевой версии Xcode. Так вы не измените системную версию по умолчанию для других задач. Если каталога нет, сначала проверьте путь установки, а не копируйте пример вслепую.

  3. 03

    Simulator занял всё место на диске

    Запустите df -h , чтобы проверить свободное место, затем проверьте DerivedData, архивы, данные устройств и runtime симуляторов. Сначала экспортируйте нужные результаты сборки и остановите задачи, использующие Simulator.

    xcrun simctl delete unavailable удаляет записи недоступных устройств Simulator, но не удаляет все runtime. Перед очисткой проверьте, что именно удаляете. Не запускайте рекурсивное удаление для каталогов проекта или Keychain.

  4. 04

    Сертификат подписи недействителен

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

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

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

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

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

Переустановка во время аренды

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

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

После переустановки заново проверьте SSH, Xcode, зависимости и runner. Не рассчитывайте, что прежние настройки служб сохранились.

Очистка диска после окончания аренды

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

Также отзовите ключи развёртывания репозитория, token CI runner и учётные данные для загрузки. Стирание диска удаляет данные с узла, но не отзывает доступ к внешним системам.

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

Чтобы поддержка сразу перешла к диагностике

Обратитесь в службу поддержки

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

Заявка через консоль

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

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

Войти и отправить заявку

Email поддержки

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

Поддержка координирует работу по времени Азиатско-Тихоокеанского региона и восточного побережья США. Время первого ответа зависит от приоритета проблемы и текущей очереди. Актуальную информацию смотрите в ответе на заявку или письмо; мы не обещаем неуказанные средние сроки.

support@mergemac.com

Настройте среду и поручите ей сборки

Если машина уже арендована, сначала проверьте её статус в консоли. Чтобы добавить узел для сборок, выберите конфигурацию аренды. Каждый Mac mini — выделенная физическая машина, не виртуальная.