Практическая инженерная поддержка

От подключения к облачному Mac до выдачи артефактов сборки — решайте задачи пошагово

Это не обзорная документация. Каждое руководство содержит подготовку, шаги, проверку результата и логи, которые нужно сохранить при сбое. Подходит для SSH, удалённого рабочего стола VNC, Xcode, fastlane, самостоятельных Runner и управления счетами.

4 категории руководств 5 узлов 365 дней стабильной работы
build-diagnostics Проверка пройдена
Способ подключения SSH / VNC
Инструменты сборки Xcode / fastlane
Архитектура выполнения Apple Silicon
$ xcodebuild -version Xcode 16.x $ uname -m arm64 $ df -h / volume check: ready
Сначала проверьте среду, затем запускайте полный конвейер Сузьте область сбоя до подключения, зависимостей, подписи или параллелизма.
Поиск в центре поддержки

Фильтруйте по задаче — читать всё с начала не нужно

Выберите текущую задачу или введите ключевые слова: SSH, архив, подпись, Runner, узел, счет. Фильтр меняет только карточки индекса, а полные инструкции остаются ниже на странице.

Подключение устройства

Первое подключение по SSH и VNC

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

Около 10 минут
Настройка среды разработки

Выбор Xcode и установка зависимостей

Зафиксируйте версии инструментов, проверьте пути командной строки и восстановите зависимости Ruby, Pods или Swift Package по lock-файлу.

Около 15 минут
Запуск сборки

Архивирование и экспорт артефактов

Запускайте архивирование с явно заданными workspace, scheme и destination; сохраняйте xcresult и логи экспорта.

Около 20 минут
Запуск сборки

Автоматизация и очистка fastlane

Временно передайте чувствительные переменные, выполните фиксированный lane, сохраните артефакты и очистите временные файлы и окружение процесса.

Около 20 минут
Запуск сборки

Подключение самостоятельного Mac Runner

Зарегистрируйте выделенный Runner, ограничьте область репозиториев, задайте метки возможностей и очищайте рабочий каталог после каждой задачи.

Около 25 минут
Настройка среды разработки

Пять проверок при сбое сборки

Последовательно проверьте сеть, диск, материалы подписи, кэш зависимостей и параллелизм; не меняйте несколько переменных одновременно.

Около 15 минут
Подключение устройства

Выбор узла и запрос миграции

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

Около 5 минут
Управление счетами

Проверка заказа и дополнительных опций

Укажите идентификатор заказа, срок аренды, узел и опции хранилища или объединения Thunderbolt 5, чтобы найти запись в счёте.

Подготовьте 4 пункта
Управление счетами

Эскалация в службу поддержки

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

Два способа связи
Руководства по подключению

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

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

Подключение по SSH

  1. 1
    Подготовьте открытый ключ на компьютере

    Используйте отдельный ключ с защитой парольной фразой. Загружайте только открытый ключ; не отправляйте закрытый ключ через тикет или почту.

  2. 2
    Считайте данные подключения

    Сверьте в консоли идентификатор устройства, узел, адрес хоста, порт и имя пользователя; не используйте повторно данные старой аренды.

  3. 3
    Проверьте отпечаток хоста

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

  4. 4
    Выполните базовую проверку

    Выполните uname -m, xcodebuild -version и df -h /, зафиксируйте архитектуру, версии инструментов и свободное место на диске.

Подключение к удалённому рабочему столу VNC

  1. 1
    Сначала убедитесь, что SSH работает

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

  2. 2
    Получите данные сессии из консоли

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

  3. 3
    Проверьте графическую среду

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

  4. 4
    Завершите и очистите сессию

    Закройте запущенные инструменты разработки, удалите временные загрузки и учетные данные в открытом виде, затем завершите сеанс удалённого рабочего стола.

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

Явно задавайте версии, зависимости и параметры экспорта для воспроизводимой сборки

Не полагайтесь на scheme, выбранную в графическом интерфейсе ранее. Автоматизация должна явно задавать путь Xcode, workspace, scheme, configuration, destination и параметры экспорта.

01

Выберите и проверьте версию Xcode

Сначала прочитайте требования проекта и с помощью xcode-select укажите нужную версию. Затем выполните xcodebuild -version и xcrun swift --version по отдельности, записав вывод в начало лога сборки.

02

Установите зависимости по lock-файлу

Для проекта Ruby сначала выполните bundle install, для Pods восстановите зависимости по lock-файлу, а для Swift Package сначала разрешите зависимости. Кэш лишь ускоряет работу и не заменяет ограничения версий из lock-файла.

03

Запустите архивирование

Направьте DerivedData и archivePath в отдельные каталоги текущей задачи. Параллельные задачи не должны использовать один путь вывода, иначе индексы, кэш или архивы будут перезаписаны.

04

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

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

05

Сохраняйте информативные логи

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

archive.sh
xcode-select -p
xcodebuild -version
xcrun swift --version

bundle install
bundle exec pod install

xcodebuild archive \
  -workspace App.xcworkspace \
  -scheme App \
  -configuration Release \
  -destination "generic/platform=iOS" \
  -archivePath output/App.xcarchive \
  -resultBundlePath output/App.xcresult

xcodebuild -exportArchive \
  -archivePath output/App.xcarchive \
  -exportPath output/export \
  -exportOptionsPlist ExportOptions.plist
Входные данные репозиторий, lock-файлы, контролируемые переменные среды Среда выполнения выделенный облачный Mac Результат архив, экспортированные файлы, xcresult, обезличенные логи
Руководство по автоматизации fastlane

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

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

INPUT

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

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

  • Имя переменной можно записывать, её значение — нет
  • Конфигурация подписи должна иметь ясное соответствие ветке проекта
  • Временный каталог нельзя повторно использовать в следующих задачах
RUN

Выполните фиксированный lane

Используйте bundle exec fastlane для фиксации версий Ruby и gem. В lane явно задайте scheme, способ экспорта, каталог вывода и условие завершения при ошибке.

  • Перед сборкой выводите версии инструментов, но не учетные данные
  • При сбое сохраняйте лог текущей задачи и xcresult
  • Перед повтором определите, связана ли проблема со средой или кодом
CLEAN

Сохраните артефакты и очистите среду

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

  • Проверьте наличие артефактов и разумный размер файлов
  • Удалите чувствительные команды из истории shell
  • Убедитесь, что фоновые процессы сборки не остались запущенными
bundle exec fastlane ios archive Фиксированные версии зависимостей Отдельный каталог вывода При ошибке возвращается ненулевой код
Руководство по интеграции CI/CD

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

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

GitHub Actions

Подключение самостоятельного Runner

  1. Определите область действия

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

  2. Создайте отдельного системного пользователя

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

  3. Задайте метки возможностей

    Метки должны описывать архитектуру, основную версию Xcode и тип задачи, чтобы workflow точно выбирал узел.

  4. Настройте последовательное или параллельное выполнение

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

  5. Очищайте среду после задачи

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

Распространённые системы конвейеров

Подключение через Agent или исполнитель SSH

  1. Создайте одностороннюю точку входа задач

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

  2. Ограничьте команды и каталоги

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

  3. Проверьте инструменты до запуска

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

  4. Используйте единый код завершения

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

  5. Очищайте после загрузки

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

Рекомендации по параллельным задачам:MiniRents M4 с конфигурацией M4, 16GB и 256GB подходит для лёгких сборок и подписи одного проекта; MiniRents M4 Pro с конфигурацией M4 Pro, 64GB и 2TB лучше подходит для параллельных сборок и большого кэша зависимостей. Выбирайте по пиковому объёму памяти одной сборки, числу параллельных задач и размеру кэша.
Список диагностики

Исключайте по одной переменной

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

Как диагностировать тайм-аут сети и подключения

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

ssh -v user@host
Недостаточно места на диске или ошибка записи архива

С помощью df -h / проверьте свободное место на томе, затем изучите DerivedData, кэш зависимостей, старые archive и данные симуляторов. Сначала найдите крупные каталоги, затем удаляйте только явно пересоздаваемый кэш. Не очищайте каталоги, используемые во время сборки.

du -sh ~/Library/Developer/*
Несоответствие сертификата подписи или профиля

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

security find-identity -v -p codesigning
Кэш зависимостей вызывает дрейф версий или ошибку компиляции

Сначала сравните lock-файл с фактическими версиями в логах. Выполните сборку в новом каталоге без общего кэша; если проблема исчезнет, поочерёдно возвращайте кэш Swift Package, Pods, Ruby и DerivedData, чтобы найти источник загрязнения.

swift package resolve
Конкурентные сборки создают дефицит ресурсов

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

ps -axo pid,%cpu,%mem,command
Узлы и доступность

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

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

Каталог и рекомендации по выбору двух моделей MiniRents в пяти узлах
Узел Расположение команды, которое стоит рассмотреть в первую очередь MiniRents M4 MiniRents M4 Pro Рекомендация
СингапурSG Команды Юго-Восточной Азии и близкие репозитории Достаточно Достаточно В первую очередь сравните стабильность соединения разработчика с узлом и репозитория с узлом.
Япония (Токио)JP Команды Японии и Восточной Азии Достаточно Достаточно Подходит для workflow, где репозитории и участники в основном находятся в Восточной Азии.
Южная Корея (Сеул)KR Команды Южной Кореи и соседних стран Восточной Азии Достаточно Достаточно Перед выбором протестируйте стабильность SSH из рабочей сети.
ГонконгHK Команды Южного Китая и Юго-Восточной Азии Достаточно Достаточно Подходит командам, которым нужно учитывать несколько азиатских точек взаимодействия.
Восток СШАUS-E Команды востока Северной Америки и Западной Европы Достаточно Достаточно Подходит для workflow, где репозитории, сервисы артефактов или основные участники находятся на востоке Северной Америки.
01

Сначала оцените интерактивное подключение

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

02

Затем оцените направление данных

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

03

Запросите миграцию через тикет

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

Эскалация в службу поддержки

Если руководство не помогло, отправьте воспроизводимое описание проблемы

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

Тикет в консоли

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

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

Адрес поддержки

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

  • Имя для связи и рабочий адрес электронной почты
  • Тип консультации и целевой workflow
  • Желаемый узел и параллелизм сборки
  • Шаги воспроизведения отчёта по безопасности и область воздействия
  • Идентификатор заказа и дополнительные опции для вопросов по счету
support@minirents.com
Данные для счета

Укажите четыре пункта при обращении по счету

Укажите идентификатор заказа, срок аренды, узел, а также расширение хранилища или объединение Thunderbolt 5. Поддерживаются только USDT-TRC20 и Visa / Mastercard / Amex (через Stripe); все платежи проводятся в долларах США (USD), а фактически доступный шлюз определяется ответом серверного интерфейса.

Готовы начать сборку

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

Две модели, четыре срока аренды и пять узлов на выбор. Устройства — выделенные физические машины, не виртуальные, от $21.5 в день.