Подключение · перенос · CI/CD

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

Сначала определите уровень, на котором возникла проблема, затем соберите данные об узле, времени, полной ошибке и последнем изменении. Ниже приведён практический порядок проверок для графического интерфейса, командной строки, Xcode и self-hosted Runner на облачном Mac ArmMacs.

diagnostic-checklist

01 определить узел и модель

02 зафиксировать состояние локальной сети

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

04 собрать обезличенные журналы

05 прикрепить подтверждающие материалы к заявке

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

Маршрутизация поддержки

Сначала выберите тип проблемы

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

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

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

Нужно: узел · протокол · отметка времени

Среда разработки

Для проблем с версией Xcode, инструментами командной строки, разрешением зависимостей, доступом к материалам подписи, кэшем сборки и свободным местом на диске.

Нужно: версия · команда · исходный текст ошибки

CI/CD

Для офлайн-статуса Runner, несовпадения меток, очереди задач, конфликтов параллельного выполнения, загрязнения рабочего каталога или сбоя очистки после сборки.

Нужно: ID задачи · метки · журнал Runner

Хранилище

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

Нужно: свободное место · путь · объём данных

Счета

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

Нужно: номер заказа · сумма · время платежа

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

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

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

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

  1. 01

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

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

  2. 02

    Проверьте сеть от локального устройства до узла

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

  3. 03

    Установите подключение по VNC или SSH

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

  4. 04

    Измените начальные настройки безопасности

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

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

При сбое подключения зафиксируйте как минимум эти сведения

node: SG / JP / KR / HK / US-W
protocol: VNC or SSH
local_network: office / home / mobile
timestamp: YYYY-MM-DD HH:MM timezone
result: timeout / refused / authentication failed
last_success: YYYY-MM-DD HH:MM timezone

План переноса

От локального Mac к воспроизводимому пайплайну

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

ПЛАН 01

Перенос данных проекта

  1. Определите составПереносите только репозитории, необходимые наборы данных, шаблоны конфигурации и входные данные сборки; не копируйте лишний кэш.
  2. Рассчитайте объёмЗафиксируйте размер исходного каталога, число файлов и контрольные значения, оставив место для зависимостей и артефактов сборки.
  3. Передавайте частямиДля небольших репозиториев сначала проверьте права доступа и формат переводов строк; большие данные разделяйте по каталогам и выборочно проверяйте после передачи.
  4. Изолируйте секретыНастраивайте чувствительные учётные данные отдельно контролируемым способом; не включайте их в архивы, репозитории или обычные каталоги синхронизации.
ПЛАН 02

Воспроизведите Xcode и зависимости

  1. Зафиксируйте версииЗапишите версии Xcode, инструментов командной строки, языковых сред выполнения и менеджеров пакетов.
  2. Восстановите зависимостиВ первую очередь используйте lock-файлы и исполняемые скрипты установки, не копируйте локальный кэш сборки напрямую.
  3. Выполните базовую сборкуСначала запустите минимальную цель, затем тесты и полную архивацию; отдельно сохраните коды завершения и журналы.
  4. Зафиксируйте контрольный списокВнесите версии, порядок установки, названия переменных среды и команды проверки в эксплуатационное руководство команды.
ПЛАН 03

Подключите CI/CD Runner

  1. Создайте выделенную среду выполненияОтделите задачи пайплайна от обычной работы через удалённый рабочий стол, чтобы уменьшить конфликты прав и каталогов.
  2. Настройте точные меткиМетки должны как минимум отражать платформу, класс чипа и основную версию Xcode, чтобы задачи не направлялись ошибочно.
  3. Начните с одного параллельного заданияСначала проверьте сборку, тесты, архивацию и возврат артефактов, а затем оцените необходимость параллельного выполнения.
  4. Определите действия очисткиПосле завершения задачи удаляйте временные учётные данные, Derived Data и ненужные артефакты, сохраняя необходимые журналы.

Диагностика Xcode

Диагностируйте облачную сборку Xcode по уровням

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

Уровень проверки Что проверить Рекомендуемое действие Данные для заявки
Выбор версии Совпадают ли графическая версия Xcode, путь к инструментам командной строки и требуемый проектом SDK Зафиксируйте одну версию, выполните минимальную сборку и убедитесь, что пайплайн и интерактивный терминал используют один путь Вывод версии, выбранный путь, сбойная цель
Файлы подписи Полны ли файлы, не истёк ли их срок действия, правильно ли цель и конфигурация ссылаются на них Проверьте читаемость файлов в изолированной среде, не записывая секретные данные в журнал Обезличенные имена, срок действия, исходный текст ошибки
Права сертификатов Имеет ли пользователь, выполняющий сборку, доступ к нужным сертификатам и ключевым материалам Сравните окружения интерактивной сборки и пользователя Runner, чтобы сократить различия Пользователь выполнения, результат проверки прав, этап сбоя
Derived Data Не относится ли старый кэш к другой ветке, версии Xcode или конфигурации сборки Сохраните журнал сбоя, очистите целевой кэш и повторите ту же команду для сравнения Различия кодов завершения и журналов до и после очистки
Свободное место на диске Свободное место на системном томе, каталоги архивов, данные симуляторов и кэш зависимостей Сначала удаляйте восстанавливаемый кэш и устаревшие артефакты, не удаляя единственные копии Свободное место перед сбоем и самый большой каталог
Журнал сборки Полны ли первый реальный текст ошибки, сбойная цель, код завершения и окружающий контекст Сохраните исходный текстовый журнал, извлеките строки вокруг первой ошибки и обезличьте их Команда, отметка времени, код завершения, вложение журнала

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

Руководство по Runner

Базовые правила подключения и очистки двух типов Runner

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

GitHub Actions

Self-hosted Mac Runner

  1. РегистрацияЗарегистрируйте Runner под отдельной учётной записью, убедитесь, что после запуска службы он постоянно отображается онлайн, и запишите имя Runner и рабочий каталог.
  2. МеткиСохраните метку платформы и добавьте метки класса чипа, основной версии Xcode и назначения. Рабочий процесс должен соответствовать только нужной комбинации меток.
  3. ПараллельностьСначала запускайте задачи последовательно, по одной. Одновременная архивация нескольких проектов Xcode создаёт конкуренцию за диск, кэш и ресурсы подписи, повышая вероятность случайных сбоев.
  4. ОчисткаПосле каждой задачи удаляйте временные учётные данные и файлы задачи; сохраняйте кэш с ограничениями по ключам и объёму, а после успешной передачи архива удаляйте локальные устаревшие копии.
GitLab CI

macOS Runner

  1. РегистрацияОпределите область принадлежности и способ выполнения Runner, проверьте права пользователя сборки на каталоги и сохраните время регистрации и сводку конфигурации.
  2. МеткиНастройте метки для macOS, класса чипа, основной версии Xcode и типа задачи; не допускайте, чтобы задачи без меток занимали выделенный узел.
  3. ПараллельностьНачальное число параллельных задач — 1. Увеличивайте его только после полной изоляции каталогов задач, портов, кэша и материалов подписи.
  4. ОчисткаВ конце задачи очищайте секретные файлы и временные артефакты в рабочем каталоге; очищайте также неуспешные задачи и отдельно сохраняйте обезличенные журналы.

Минимальная матрица проверки перед запуском

checkout ✓ восстановление зависимостей ✓ сборка ✓ тест ✓ экспорт артефактов ✓ очистка секретов ✓

Удалённый рабочий стол

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

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

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

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

Что делать при несовпадении разрешения или неправильном масштабировании интерфейса

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

Что делать при неправильной работе горячих клавиш или ввода символов

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

Нужно ли сразу перезапускать узел после разрыва сеанса

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

Что сохранить перед повторным подключением

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

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

Хранилище, резервное копирование и экспорт до окончания срока аренды

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

01

Классифицируйте данные до переноса

Разделите данные на четыре категории: восстанавливаемые из репозитория, пересобираемые из источника зависимостей, требующие резервного копирования и запрещённые к загрузке. Оцените пиковый объём проекта, зависимостей, Derived Data, архивов и журналов, а не только размер исходного кода.

02

Создайте внешнюю резервную копию со снимком

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

03

Управляйте чувствительными учётными данными

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

04

Контролируйте рост кэша

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

До окончания срока

Список действий до окончания срока аренды

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

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

Отправьте заявку, которую можно воспроизвести

При сбое арендованного узла сначала войдите в консоль и отправьте заявку. Консоль связывает проблему с заказом, помогая проверить модель, узел и статус предоставления. Если войти в консоль невозможно, отправьте письмо на support@armmacs.com.

ticket-evidence.txt
Номер заказа:
Модель:
Узел:
Тип проблемы:
Время возникновения и часовой пояс:
Время последнего успешного выполнения:
Шаги воспроизведения:
Ожидаемый результат:
Фактический результат:
Исходный текст ошибки:
Последнее изменение конфигурации:
Состояние локальной сети:
Вложения: обезличенный журнал / снимок экрана

Шаги воспроизведения должны быть выполнимыми

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

Отметка времени должна содержать часовой пояс

Используйте полную дату, часы, минуты и часовой пояс. Записей «только что» или «сегодня» недостаточно для точного сопоставления с событиями узла и журналами Runner.

Сначала обезличьте вложения

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

Готово к диагностике

Узел, отметка времени и журналы готовы

Войдите в консоль, свяжите заявку с заказом и отправьте её. Расчёты выполняются только в долларах; поддерживаются USDT-TRC20 и Visa / Mastercard / Amex (через Stripe). Фактически доступный платёжный шлюз определяется результатом в консоли.