Начните с симптома

Разберите проблемы подключения и сборки на проверяемые шаги

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

6 категорий Разделы документации
2 способа Способы удалённого подключения
5 шагов Дерево решений по симптомам
Индекс документации

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

Каждый раздел ведёт к конкретным проверкам на этой странице. За раз меняйте только одну переменную и записывайте команды, версии и результаты до и после изменения.

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

SSH и VNC требуют разных способов проверки

SSH подходит для командной строки, автоматизации и передачи файлов, а VNC — для задач с графическим интерфейсом macOS. В обоих случаях сначала проверьте адрес узла, затем учётные данные.

Командная строка

Проверка SSH-подключения

  1. 01
    Подготовьте данные подключения

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

  2. 02
    Выполните первую проверку

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

  3. 03
    Замените временные учётные данные

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

  4. 04
    Корректно завершите сеанс

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

  5. 05
    Проверьте проблемы доступа

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

Графический интерфейс

Проверка VNC-подключения

  1. 01
    Подготовьте клиент и адрес

    Используйте надёжный VNC-клиент и укажите адрес узла и порт согласно данным поставки. Перед подключением отключите ненужное сохранение учётных данных в клиенте.

  2. 02
    Проверьте первый экран

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

  3. 03
    Обновите данные доступа

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

  4. 04
    Выйдите из неактивного сеанса

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

  5. 05
    Найдите причину проблем с экраном

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

Журнал диагностики подключения

Читайте подробный журнал SSH, а не повторяйте попытки вслепую

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

support-check · ssh diagnostic
$ ssh -v -p 22 build@203.0.113.24
OpenSSH: reading configuration data
debug1: Connecting to 203.0.113.24 port 22
debug1: Connection established
debug1: identity file ~/.ssh/id_ed25519 type 3

The authenticity of host cannot be established.
ED25519 key fingerprint is SHA256:verify-with-delivery-record
Continue connecting only after fingerprint verification.

debug1: Server host key accepted
debug1: Offering public key: ~/.ssh/id_ed25519
debug1: Authentication succeeded (publickey)
Connected to the dedicated physical Mac node

$ sw_vers
ProductName: macOS

$ exit
Connection closed.
TIMEOUT

Долго остаётся на Connecting

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

FINGERPRINT

Отпечаток хоста не совпадает с записью

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

AUTH

Сеть доступна, но аутентификация не проходит

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

Инструменты разработки

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

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

XCODE

Проверьте выбранные инструменты командной строки

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

Ожидается: путь и версия совпадают
TARGET

Выведите фактически доступные цели

Сначала выполните xcodebuild -listи убедитесь, что имена workspace, project, scheme и configuration существуют, затем укажите точные имена в команде автоматизации.

Ожидается: цели перечисляются
SIGNING

Отделите переменные подписи от конфигурации проекта

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

Ожидается: переменные существуют и не раскрываются
LOGS

Архивируйте полный журнал сборки

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

Ожидается: сбой можно воспроизвести
Автоматизированная сборка

Сделайте self-hosted runner доступным для идентификации, изолируйте его и корректно удаляйте

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

  1. 01

    Проверьте учётную запись перед регистрацией

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

    Проверка: ручная задача выполняется под той же учётной записью
  2. 02

    Описывайте реальные возможности метками

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

    Проверка: условия планирования однозначно выбирают нужный узел
  3. 03

    Изолируйте рабочие каталоги

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

    Проверка: задачи не перезаписывают артефакты друг друга
  4. 04

    Ограничьте параллелизм и конкуренцию за ресурсы

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

    Проверка: в пиковый период swap не растёт постоянно
  5. 05

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

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

    Проверка: старые метки больше не принимают задачи
Не передавайте один рабочий каталог нескольким параллельным задачам. Кэш зависимостей, DerivedData, архивы и временные файлы подписи могут перезаписывать друг друга и вызывать внешне случайные сбои сборки.
Термины

Сначала согласуйте значения восьми терминов

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

Физический узел
Аппаратное устройство, на котором фактически работает macOS. Заказ BookaMac соответствует физическому Mac mini, а не абстрактному общему вычислительному экземпляру.
Выделенный
В период аренды устройство предоставляется одному клиенту по заказу; рабочие нагрузки других клиентов не используют тот же физический компьютер.
Облачный Mac
Mac на удалённом узле, доступный по сети. Термин описывает расположение и способ доступа, а не виртуальную машину.
VNC
Способ удалённо просматривать и управлять графическим интерфейсом macOS для задач с окнами, экраном и интерактивными действиями.
SSH
Зашифрованное подключение к командной строке для запуска скриптов, передачи файлов, управления сборками и сбора диагностических журналов.
self-hosted runner
Исполнитель задач автоматизации, самостоятельно зарегистрированный и управляемый командой; задачи выполняются на указанном выделенном физическом Mac.
Кэш сборки
Промежуточные данные, сохраняемые для сокращения повторных загрузок и компиляции. Кэш ускоряет задачи, но изменения версий могут привести к расхождению среды.
Профиль подготовки
Один из материалов конфигурации подписи для публикации и тестирования. Управляйте им согласно правам проекта и удаляйте при передаче среды или завершении использования.
Дерево решений по симптомам

Перейдите к следующей проверке по наблюдаемому симптому

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

Не удаётся подключиться к узлу: что проверить сначала?
  1. Проверьте адрес:Снова скопируйте адрес хоста, порт и имя пользователя из текущих данных заказа.
  2. Различите тайм-аут и отказ:При тайм-ауте обычно сначала проверяют локальную сеть или канал; при мгновенном отказе — адрес, порт и способ подключения.
  3. Откройте подробный журнал:Используйте ssh -v чтобы определить, установлено ли сетевое соединение, пройдена ли проверка отпечатка и на каком этапе остановилась аутентификация.
  4. Проверьте в другой доверенной сети:Если результат изменится, зафиксируйте обе сетевые среды, а не сообщайте лишь «иногда подключается».
  5. Обратитесь в поддержку:Если сбой повторяется в нескольких сетях, приложите идентификатор заказа, регион, время и обезличенный подробный журнал к заявке.
Сборка не удалась: проблема в Xcode, проекте или зависимостях?
  1. Зафиксируйте версии:Сохраните вывод xcode-select -p и xcodebuild -version .
  2. Выведите цели:Убедитесь, что имена scheme, configuration, workspace или project действительно существуют.
  3. Найдите первую ошибку:Найдите в журнале первую однозначную ошибку и не делайте вывод по итоговой сводке сбоя.
  4. Проверьте зависимости:Не изменяя файлы проекта, заново разрешите зависимости по файлу блокировки и сравните результат.
  5. Сузьте область поиска:Соберите минимальную цель отдельно, чтобы определить, связана ли ошибка со средой, конфигурацией проекта или конкретным модулем.
Недостаточно места на диске: какие каталоги проверить в первую очередь?
  1. Проверьте общий объём:Используйте df -h для просмотра свободного места на уровне тома, а не только в каталоге отдельного проекта.
  2. Найдите крупные каталоги:Проверьте DerivedData, архивы, данные симуляторов, кэш зависимостей и рабочий каталог runner.
  3. Разделите кэш и артефакты:Кэш можно пересоздать, а артефакты поставки и диагностические журналы сначала архивируйте, затем очищайте.
  4. Остановите активные задачи:Перед очисткой убедитесь, что сборка не записывает данные в целевой каталог, чтобы не получить повреждённое промежуточное состояние.
  5. Повторно проверьте источник роста:После очистки наблюдайте, сколько места добавляет следующая задача, и найдите каталог, который продолжает расти.
Проблемы сертификата или профиля подготовки: как не переустанавливать вслепую?
  1. Запишите исходный текст ошибки:Различайте отсутствие файла, истёкший срок действия, недостаток прав и несовпадение конфигурации.
  2. Проверьте цель сборки:Убедитесь, что текущие scheme, configuration и настройки подписи относятся к нужному проекту.
  3. Проверьте права связки ключей:Убедитесь, что учётная запись сборки имеет доступ к нужным материалам, не расширяя лишние права.
  4. Проверьте профиль подготовки:Убедитесь, что файл соответствует требованиям текущей задачи, и не храните одновременно несколько неразличимых старых версий.
  5. Защитите конфиденциальные материалы:В заявку отправляйте только ошибку, имена и необходимые метаданные; не отправляйте закрытые ключи или полные учётные данные.
Подключение или сборка работают нестабильно: как определить место проблемы?
  1. Укажите временной диапазон:Запишите время начала, окончания и факт продолжения проблемы; не используйте «в последнее время медленно» как единственное описание.
  2. Измеряйте отдельно:Отдельно проверяйте удалённый экран, передачу файлов, загрузку зависимостей и локальную сборку, не сводя их к одному выводу о скорости.
  3. Проверьте параллельные задачи:Узнайте, не занимают ли ресурсы одновременно другие сборки, индексация, перекодирование или задачи моделей.
  4. Сравните сети:Повторите то же действие в разных доверенных сетях, чтобы отделить локальные проблемы канала от нагрузки удалённых задач.
  5. Сохраните образцы:Приложите регион, время, длительность команды и обезличенный журнал, чтобы повторить проверку в тех же условиях.
Как обратиться в поддержку

Что должна содержать заявка, готовая к диагностике

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

01

Идентификатор заказа

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

02

Регион узла

Укажите Сингапур, Японию (Токио), Южную Корею (Сеул) или Гонконг, а также фактический способ подключения.

03

Время возникновения

Укажите часовой пояс, время первого появления, длительность и возможность стабильного воспроизведения.

04

Обезличенный журнал

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

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

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