Быстрая диагностика инженерных проблем

Центр помощи облачного Mac

От подтверждения заказа до сборки в Xcode — разбирайте проблему на последовательные шаги проверки. Сначала выполните первичную диагностику на этой странице; если проблема не решена, отправьте обращение через консоль, указав ID узла, время возникновения и обезличенные журналы.

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

Выберите тип проблемы

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

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

Жизненный цикл заказа

Заказ и получение

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

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

Первичная проверка пяти распространённых неисправностей

Карточки расположены по принципу: сначала проверить состояние, затем сузить круг переменных и сохранить доказательства. Меняйте только одну переменную за раз — так можно понять, какое действие восстановило сервис.

Не удаётся подключиться к узлу

  1. Проверьте в консоли, что узел находится в состоянии нормальной работы.
  2. Последовательно проверьте адрес, порт, имя пользователя и протокол подключения.
  3. Проверьте тот же порт из другой сети, чтобы исключить ограничения локального выхода или брандмауэра.
  4. Запишите исходный текст ошибки клиента и время возникновения; не перебирайте множество паролей подряд.
Открыть руководство по удалённому доступу

Сборка внезапно завершилась ошибкой

  1. Зафиксируйте неудачный запуск, команду сборки, код выхода и первую информативную ошибку.
  2. Выполните xcodebuild -version для проверки текущего набора инструментов.
  3. Проверьте, не изменились ли lock-файлы зависимостей, переменные окружения и ресурсы подписи.
  4. Очищайте только соответствующий кэш после подтверждения проблемы с кэшем, не удаляйте сразу все доказательства.
Перейти к проверке Xcode

Недостаточно места на диске

  1. Выполните df -h для проверки объёма тома, а не только отдельного каталога.
  2. Проверьте DerivedData, архивы, данные симуляторов и кэш менеджера пакетов.
  3. Сначала удалите данные, которые можно восстановить, затем переходите к артефактам сборки и файлам проекта.
  4. Каталоги, которые постоянно растут, следует включить в правила очистки конвейера и контролировать их объём.
Посмотреть безопасный порядок очистки

Учётные данные недействительны

  1. Определите, что именно перестало работать: системный вход, SSH-ключ, токен репозитория или права подписи.
  2. Проверьте срок действия учётных данных, права доступа к файлам и пользователя, от имени которого они используются.
  3. После ротации учётных данных обновите переменные конвейера и отзовите старые значения.
  4. Не вставляйте полные учётные данные в историю команд, снимки экрана или текст обращения.
Открыть сведения о безопасности и правах доступа

Сетевая задержка или нестабильность

  1. Запишите город, оператора связи, регион узла и время возникновения проблемы.
  2. Проведите несколько последовательных тестов и используйте медианное значение, не делайте вывод по одному пиковому результату.
  3. Отдельно проверьте задержку взаимодействия, потери пакетов и пропускную способность при передаче больших файлов.
  4. Отключите необязательные аудио- и видеопотоки, а также высокое качество цветопередачи, затем сравните работу VNC.
Посмотреть способы оптимизации подключения
Основные термины

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

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

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

От подтверждения заказа до первого безопасного входа

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

  1. 01

    Подтверждение заказа и платежа

    около 1 минуты

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

    Сохраните: номер заказа, идентификатор результата платежа и время отправки.
  2. 02

    Распределение узла

    около 1 минуты

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

    Проверьте: ID узла, модель и регион.
  3. 03

    Проверка состояния узла

    около 1 минуты

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

    Дождитесь: статус в консоли должен измениться на «Доступен для подключения».
  4. 04

    Передача данных подключения

    около 1 минуты

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

    Выполните: первый вход, обновление пароля и проверку SSH-ключа.
Границы обращения с учётными данными

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

Путь диагностики Xcode

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

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

01

Проверьте версии Xcode и macOS

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

xcodebuild -version
sw_vers
whoami
02

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

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

xcode-select -p
xcrun --find xcodebuild
xcrun xcodebuild -version
03

Проверьте сертификаты и профили подготовки

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

security find-identity -v -p codesigning
ls -la ~/Library/MobileDevice/Provisioning\ Profiles
04

Точечно очистите DerivedData

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

du -sh ~/Library/Developer/Xcode/DerivedData
find ~/Library/Developer/Xcode/DerivedData -maxdepth 1 -type d
05

Соберите журнал xcodebuild

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

set -o pipefail
xcodebuild test 2>&1 | tee build.log
printf "exit=%s\n" "$?"
Правила оформления обращения

Помогите инженеру поддержки сразу воспроизвести проблему

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

Рекомендуемая структура обращения

ID узла
Скопируйте точный идентификатор из консоли, не заменяйте его пользовательским названием устройства.
Время возникновения
Укажите дату, часовой пояс, время начала и последнее время нормальной работы.
Регион узла
Укажите регион из заказа, а не только город, в котором вы находитесь.
Область воздействия
Уточните, затронута ли одна команда, один конвейер, все подключения или вся команда.
Шаги воспроизведения
Перечислите команды, ввод, ожидаемый и фактический результат в порядке выполнения.
Выполненные проверки
Укажите каждое действие и его результат, не ограничивайтесь фразой «всё пробовал».

Правила обезличивания журналов

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

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

Когда следует пропустить самостоятельную проверку и сразу отправить обращение?

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

Почему для операций с узлом нужна проверка принадлежности заказа?

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

Если одновременно не работают подключение и сборка, отправлять одно или несколько обращений?

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

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

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

По существующим заказам, подключению к узлу, сбоям сборки и вопросам биллинга в первую очередь отправляйте обращения через консоль. Предпродажную оценку, развёртывание команды и сообщения о безопасности можно направить через страницу контактов на support@hexvm.com. Для операций с узлом потребуется подтвердить принадлежность заказа.