Восстановление рабочего процесса

От проверки подключения до логов сборки: ищем проблему по шагам

Руководство по диагностике нагрузок iOS, macOS, CI/CD и Apple Silicon. Сначала проверьте узел и сеть, затем инструменты и логи задач — не меняйте несколько переменных одновременно.

5 уровней проверки подключения
4 типа сбоев сборки
6 доступных узлов
Рабочий лист Сначала сохраните исходное состояние, затем исключайте причины по одной
ГОТОВО
A01
Проверьте данные узла регион, адрес хоста, способ подключения, статус заказа
01
A02
Проверьте локальный маршрут DNS, порт, брандмауэр, потеря пакетов и джиттер
02
A03
Сузьте область поиска в инструментальной цепочке Xcode, SDK, зависимости, подпись и тесты
03
A04
Отправьте минимальный набор доказательств время события, шаги воспроизведения, логи и масштаб влияния
04
Не отправляйте пароли, закрытые ключи или коды восстановления ПОДДЕРЖКА / УЗЕЛ
Первое подключение

Первое подключение за четыре шага

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

  1. 01

    Считайте данные узла

    Войдите в консоль и проверьте заказ, регион, адрес хоста, имя пользователя и разрешённые способы подключения. Узел находится в одном из регионов: Сингапур, Япония (Токио), Южная Корея (Сеул), Гонконг, восток или запад США.

  2. 02

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

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

  3. 03

    Выберите способ подключения

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

  4. 04

    Проведите базовую проверку

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

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

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

Диагностика подключения

Проверяйте SSH и VNC в фиксированном порядке

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

01

Соответствуют ли учётные данные текущему узлу

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

02

Доступен ли порт из локальной сети

Выполните проверку доступности порта, указанного в консоли. Тайм-аут обычно указывает на сетевой маршрут, а немедленный отказ — на доступность цели при несовпадении сервиса или порта.

03

Не блокирует ли локальный брандмауэр

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

04

Стабилен ли сетевой маршрут

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

05

Работает ли узел штатно

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

Проверка инструментальной цепочки

При проблемах Xcode сначала проверьте выбранную версию, затем проект

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

Версия и путь

  • Выполните xcodebuild -version, чтобы записать версии Xcode и сборки.
  • Выполните xcode-select -p, чтобы убедиться, что Command Line Tools указывает на ожидаемый каталог.
  • Проверьте, не зафиксирован ли в скрипте путь к старой версии Xcode.

SDK и зависимости

  • Убедитесь, что существуют scheme, destination и имя SDK.
  • Повторно разрешите Swift Package, CocoaPods и другие зависимости проекта.
  • Сравните lock-файлы, источники зависимостей и тип конкретного адреса, с которого не удалось выполнить загрузку.

Среда подписи

  • Проверьте наличие переменных подписи, которые считывает конфигурация сборки.
  • Убедитесь, что процесс CI имеет доступ к необходимым материалам и не записывает их содержимое в логи.
  • Запустите сбой подписи и сбой компиляции отдельно и запишите коды завершения.
БАЗОВАЯ ЛИНИЯ

Рекомендуемый минимальный снимок окружения

sw_vers xcodebuild -version xcode-select -p df -h
Подключение автоматизации

Рассматривайте self-hosted runner как управляемый исполнитель

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

РЕГИСТРАЦИЯ

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

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

Результат: имя runner и список меток
ОБЛАСТЬ

Ограничьте область выполнения

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

Результат: правила доступа к репозиториям и веткам
ОЧИСТКА

Очистите рабочий каталог

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

Результат: скрипт очистки и стратегия кэширования
РОТАЦИЯ

Ротируйте учётные данные доступа

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

Результат: ответственный за учётные данные и журнал ротации
Разделение логов

Определяйте тип сбоя сборки по первой значимой ошибке

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

Как распознать и в каком порядке устранять распространённые сбои xcodebuild и fastlane
Категория сбоя Типичные сигналы в логе Проверить сначала Что приложить к обращению
Разрешение зависимостей конфликт версий пакетов, ошибка получения репозитория, несовпадение lock-файла lock-файл, источник зависимостей, ключ кэша и результат сетевой загрузки способ управления зависимостями, имя сбойного пакета, первый фрагмент ошибки
Конфигурация подписи ошибка сопоставления сертификата, недоступные права, отсутствующая переменная конфигурации scheme, конфигурация сборки и процесс внедрения секретов обезличенный исходный текст ошибки и цель сборки
Сбой тестов ошибка утверждения, различия среды имитации, тайм-аут теста сбойный тест, destination, параметры параллелизма и результат повторного запуска имя теста, код завершения, воспроизводимая команда
Сетевая загрузка сброс соединения, ошибка разрешения адреса, тайм-аут загрузки повторный запрос к тому же адресу, DNS, прокси и маршрут выхода в сеть время события, тип цели и результат сетевой проверки
01

Сохраните полный исходный лог

02

Найдите первую значимую ошибку

03

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

04

Удалите учётные данные и отправьте фрагмент

Работа с данными

Управляйте проектом, кэшем и дополнительным SSD отдельно

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

ПРОЕКТ

Синхронизация проекта

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

  • Отдельно проверьте исходный код и конфигурацию
  • Зафиксируйте способ синхронизации больших файлов
  • После переноса выполните минимальную сборку
КЭШ

Очистка кэша

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

  • Сначала проверьте свободное место на диске
  • Удаляйте только данные, которые можно создать заново
  • Не допускайте одновременного изменения кэша параллельными задачами
ДОПОЛНЕНИЕ

Границы дополнительного SSD

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

  • Чётко определите место хранения данных
  • Отслеживайте скорость роста и оставшуюся ёмкость
  • Перед переносом проверьте целостность файлов
Перед переносом пользователь должен сохранить необходимые копии

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

Набор данных для обращения

Информация, достаточная для начала диагностики одним обращением

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

Шаблон запроса Скопируйте поля и укажите факты
ОБРАЩЕНИЕ
Регион узла
Сингапур, Япония (Токио), Южная Корея (Сеул), Гонконг, восток или запад США
Время события
Укажите местное время и часовой пояс, а также сообщите, возникает ли проблема постоянно или периодически
Шаги воспроизведения
Перечислите фактические шаги по порядку: от входа и выполнения команды до появления ошибки
Фрагмент лога
Включите первую значимую ошибку, код завершения и необходимый контекст до и после неё
Масштаб влияния
Одна задача, один участник, все сборки или подключение всего узла
Выполненные проверки
Перечислите выполненные действия и результаты: смена сети, повтор команд, очистка кэша и другое

Не отправляйте эти данные

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

Свяжите обращение с существующим заказом

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

Войти в консоль и создать обращение
Маршрут эскалации

Выберите очередь обработки по типу проблемы

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

Разрыв подключения

Учётные данные верны, но SSH или VNC не устанавливается

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

Категория: подключение и доступ
Неисправность узла

Несколько задач завершаются ошибкой одновременно или состояние узла нестабильно

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

Категория: работа узла
Вопрос по оплате

Требуется проверить период заказа, дополнительные опции или платёжную запись

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

Категория: заказы и расчёты
Продолжайте в той же переписке

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

Открыть консоль и отслеживать обращение

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

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