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

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

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

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

Если устройство недоступно, проверьте пять ключевых пунктов

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

01

Проверьте состояние устройства

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

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

Проверьте учётные данные

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

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

Проверьте локальную сеть

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

  • Отдельно проверьте разрешение доменного имени и порт назначения.
  • Сравните результаты в домашней и корпоративной сетях.
  • Не ограничивайтесь фразой «подключение не удалось».
04

Проверьте удалённый рабочий стол

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

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

Проверьте настройки SSH

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

ssh -vvv user@host
chmod 600 ~/.ssh/id_ed25519
ssh-add -l
Ограничения безопасности

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

Xcode и подпись

Проверяйте версии, подпись и архивацию раздельно

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

Пункт проверки Результат проверки
XCODE Версия совпадает с инструментами командной строки

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

xcode-select -p
CERT Текущий пользователь может прочитать сертификат

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

security find-identity -v -p codesigning
PROFILE Профиль подготовки соответствует цели

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

~/Library/MobileDevice/Provisioning Profiles
KEYCHAIN Интерактивной задаче разрешён доступ

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

security list-keychains
ARCHIVE Сохраните первую ошибку, указывающую причину

Найдите в логе архивации самую раннюю ошибку, а не только итог в конце. Запишите цель, конфигурацию, SDK и команду запуска.

xcodebuild -showBuildSettings

Руководство по сбоям CI/CD

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

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

Симптомы сбоев CI/CD, порядок проверок и критерии восстановления
Симптом Сначала проверить Порядок действий Критерий восстановления
Runner офлайн Процесс, сеть, регистрационные данные, пользователь запуска Убедитесь, что устройство доступно, затем изучите логи службы; проверьте область регистрации и пользователя запуска, не перерегистрируя Runner сразу. Runner постоянно онлайн и успешно получает минимальную тестовую задачу.
Задача долго стоит в очереди Теги, лимит параллельности, существующие задачи Убедитесь, что тег задачи соответствует Runner; проверьте незавершённые процессы и занятые слоты выполнения. Новая задача получена в ожидаемой очереди, состояние старой задачи определено.
Не удаётся восстановить кэш Ключ кэша, права каталога, свободное место на диске Сравните ключи кэша успешной и неуспешной задач; проверьте владельца каталога и очистите только восстанавливаемый кэш. Зависимости восстановлены, следующая задача повторно использует то же правило кэширования.
Ошибка прав скрипта Бит выполнения, интерпретатор, рабочий каталог Убедитесь, что скрипт добавлен в репозиторий с сохранённым битом выполнения; проверьте интерпретатор в первой строке и относительные пути. Скрипт успешно выполняется в неинтерактивном сеансе пользователя Runner.
Тайм-аут сборки Последний активный этап, CPU, память, диск Найдите последнюю действительную запись лога и определите, заблокирован ли процесс, не хватает ли ресурсов или ожидается сетевая зависимость. Один и тот же коммит выполняется подряд, время близко к базовому, зависших процессов нет.
RUNNER BASELINE

Сохраните минимальную проверку работоспособности

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

whoami
pwd
df -h
xcodebuild -version
git --version

Производительность и хранилище

Определите причину замедления по трём группам данных

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

CPU и память

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

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

Диск и кэш

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

Проверьте
DerivedData, архивы, симуляторы, кэш пакетов
Проверьте результат
После очистки повторно запустите тот же коммит

Логи сборки и цепочка инструментов

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

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

Повторите проверку с меньшей параллельностью; если время стабильно меняется вместе с ней, оцените более мощную конфигурацию.

B Диск близок к пределу ёмкости

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

C Ресурсы в норме, но этап завис

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

Узлы и сеть

Четыре доступных узла с единым форматом сетевого отчёта

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

SGВ наличии

Сингапур

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

Выбрать узел в Сингапуре
JPВ наличии

Япония (Токио)

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

Выбрать узел в Японии
KRВ наличии

Южная Корея (Сеул)

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

Выбрать узел в Южной Корее
HKВ наличии

Гонконг

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

Выбрать узел в Гонконге
Сетевой отчёт

Что должен содержать проверяемый сетевой отчёт

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

  • Время:С точностью до минуты и с указанием часового пояса
  • Маршрут:Локальная сеть, адрес назначения и порт
  • Результат:Тайм-аут, отказ, ошибка аутентификации или разрыв
  • Сравнение:Результат через другую сеть или другим способом подключения

Биллинг и периоды

Сначала проверьте период заказа, затем платёжные данные

Устройства доступны в аренду на день, неделю, месяц или квартал. Сумма заказа рассчитывается в долларах США (USD); период и конфигурация указаны в заказе.

DAY

Посуточно

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

WEEK

Понедельно

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

MONTH

Помесячно

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

QUARTER

Поквартально

Подходит для длительных проектов и фиксированного Runner. Заранее зафиксируйте процесс ротации учётных данных, резервного копирования и передачи задач.

Проверьте данные перед отправкой

Не возвращайте диагностику к началу

Эти сведения позволяют специалистам сразу перейти к воспроизведению и локализации, не запрашивая повторно базовую информацию.

Что отправить в первую очередь, если не работают и удалённый рабочий стол, и SSH?

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

Нужно ли сразу переустанавливать инструменты после сбоя сборки Xcode?

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

Стоит ли заново регистрировать Runner, если он офлайн?

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

Как обезличить логи?

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

Как ускорить диагностику срочного сбоя сборки?

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

Обратиться к специалисту

Оформите обращение с чёткими действиями

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

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