Путь инженерной поддержки

Сначала определите этап сбоя — затем решайте, нужна ли эскалация

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

  • Сбой подключения
  • Сбой сборки
  • Требования к диску
  • Вопросы по узлу
  • Проверка счёта
ЗАПУСТИТЬ ДИАГНОСТИКУ

Панель диагностики ритма сборки

Узел отвечает
  1. 01
    Рукопожатие подключения Проверьте адрес узла, порт, отпечаток хоста и учётные данные
    ПРОВЕРКА
  2. 02
    Базовая конфигурация Зафиксируйте системное время, свободное место и версии инструментов
    ПРОВЕРКА
  3. 03
    Воспроизведение задачи Повторно выполните задачу с той же веткой, командой и параметрами
    ЗАПУСК
  4. 04
    Сбор логов Сохраните первую ошибку и связанные строки до и после неё
    ЗАФИКСИРОВАТЬ
  5. 05
    Эскалация Укажите идентификатор заказа, узел, время и ожидаемый результат
    ЗАЯВКА
Выделенный физический узел 1 заказ = 1 выделенный узел
Первичный порядок проверки

Шесть базовых проверок быстрее полной очистки среды

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

  1. 01

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

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

    ssh -v vmrunner-node
  2. 02

    Проверьте доступность сети

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

    nc -vz node.example 22
  3. 03

    Проверьте свободное место

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

    df -h
  4. 04

    Проверьте системное время

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

    date && systemsetup -gettimezone
  5. 05

    Зафиксируйте версии инструментов

    Запишите версии Xcode, Command Line Tools, Ruby, Fastlane и менеджера пакетов. Не обновляйте одновременно несколько компонентов во время воспроизведения.

    xcodebuild -version
  6. 06

    Сохраните первую значимую ошибку

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

    tee build.log
Повторная проверка в командной строке

Оставьте сопоставимый вывод той же группы команд

Команды ниже охватывают SSH-подключение, сборку Xcode и процесс Fastlane. Скопируйте их и адаптируйте scheme и lane под проект; не прикладывайте к публичной заявке ключи или полные токены.

build-session · ssh / xcodebuild / fastlane
Подключение и базовая конфигурация
ssh -v vmrunner-node
sw_vers
date
df -h
xcode-select -p
xcodebuild -version
Повтор сборки Xcode
set -o pipefail
xcodebuild \
  -workspace App.xcworkspace \
  -scheme App \
  -configuration Release \
  clean build | tee xcodebuild.log
Фрагмент вывода Fastlane
bundle exec fastlane beta --verbose | tee fastlane.log
grep -n -E "error:|failed|Exit status" fastlane.log
Xcode и подпись

Сначала отличите сбой компиляции, архивации и подписи

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

Сертификаты

Проверка сертификатов

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

security find-identity -v -p codesigning
Keychain

Разблокировка Keychain

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

security list-keychains -d user
Файлы описания

Соответствие файла описания

Проверьте Bundle Identifier, тип сертификата, целевую среду и область действия файла описания. Не смешивайте автоматическую и ручную подпись в одном target.

xcodebuild -showBuildSettings
Кэш

Очистка DerivedData

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

xcodebuild clean
Путь к инструментам командной строки тоже фиксируйте

Выполните также xcode-select -p и xcrun xcodebuild -version. Если графический интерфейс и Runner используют разные пути к Xcode, один и тот же проект может дать разные результаты.

Диагностика CI/CD

Запуск Runner не означает идентичность среды задачи

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

АВТОРИЗАЦИЯ

Права Runner

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

whoami
СРЕДА

Переменные среды

Проверьте, внедряются ли переменные в текущий job, а не только существуют в login shell. Выводите только список имён, не записывайте значения в лог.

env
КЭШ

Каталог кэша

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

du -sh
ЗАДАЧИ

Параллельные задачи

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

ps aux
АРТЕФАКТ

Возврат артефактов сборки

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

find
Удалённая сессия

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

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

01 · Задержка

Задайте базовые параметры локальной сети

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

02 · Изображение

Сравните работу при меньшем разрешении

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

03 · Ввод

Проверьте раскладку клавиатуры

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

04 · Сессия

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

Убедитесь, что исходная сессия не заблокирована и не разорвана. Безопасно отключите старую сессию и подключитесь заново; не создавайте несколько графических сессий для одного рабочего стола.

Запрос в поддержку

Укажите все шесть категорий данных — и заявка сразу попадёт на диагностику

Закрытый ключ не нужен. Укажите данные для связи с заказом, определения времени и воспроизведения ошибки; перед отправкой выполните необходимое обезличивание.

Идентификатор заказа
Номер заказа, который можно проверить в консоли
Город узла
Сингапур, Япония (Токио), Южная Корея (Сеул) или Гонконг
Время возникновения
Время начала сбоя и последнего воспроизведения с указанием часового пояса
Шаги воспроизведения
Укажите, с какой команды или операции всё началось, и перечислите ключевые шаги по порядку
Фрагмент лога
Первая ошибка, код выхода и связанные строки до и после неё; данные должны быть обезличены
Ожидаемый результат
Опишите ожидаемый результат сборки, подписи, сессии или расчёта
Эскалация

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

Точка подключения постоянно недоступна

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

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

Вы зафиксировали версии кода, команд и инструментов, но ошибка возникает на том же шаге.

Изменились требования к узлу или диску

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

Данные счёта не совпадают

Идентификатор заказа, расчётный период или платёжные данные не соответствуют отображению в консоли и требуют ручной проверки.

Начать работу

Нужен новый выделенный физический узел? Выберите конфигурацию и срок

Все три конфигурации Apple Silicon доступны для аренды посуточно, понедельно, помесячно и поквартально. Можно выбрать площадку в Сингапуре, Японии (Токио), Южной Корее (Сеул) или Гонконге; актуальная доступность отображается в консоли в реальном времени.