Сначала определите уровень сбоя, затем отправьте данные для диагностики
Не удаётся подключиться, сборка завершается ошибкой или runner застрял в очереди? Не начинайте с переустановки среды. Проверьте заказ, сеть, систему и инструменты, затем передайте специалистам ключевые логи.
- Диагностируйте VNC, SSH, Xcode и CI/CD отдельно
- Укажите номер заказа, узел, время и полный контекст ошибки
- Удаляйте ключи, токены и пароли подписи из логов
Шесть направлений поддержки — шесть точек начала диагностики
Определите, связана ли проблема с подключением, сборкой, автоматизацией, сетью, хранилищем или оплатой. Точная классификация избавит от переключения между разными логами.
Изображение и сеанс VNC
Проверьте чёрный экран, тайм-ауты, раскладку клавиатуры, буфер обмена и разрывы сеанса. Сначала сохраните название клиента, сетевой выход и время сбоя.
Подпись, зависимости и архив
Проверьте сертификаты, профили provisioning, права Keychain, DerivedData, кэш зависимостей, свободное место и параметры экспорта.
Очередь runner и рабочий каталог
Проверьте соответствие меток, процессы службы, права проекта, лимит параллельных задач, права рабочего каталога и очистку после сбоя.
Репозиторий, источники зависимостей и удалённый доступ
Разделяйте локальную сеть, выход узла, репозиторий кода и источник загрузки зависимостей, чтобы не принять тайм-аут одного сервиса за отключение всей машины.
Оценка объёма и консультация по расширению
Сначала измерьте объём проектов, DerivedData, кэшей зависимостей, архивов и файлов моделей, затем уточните варианты +1TB, +2TB SSD или объединения устройств.
Период, дополнительные услуги и платёжные записи
Укажите номер заказа, расчётный период, категорию платежа и сообщение на странице. Не отправляйте полные платёжные данные или конфиденциальную информацию в открытом письме.
Сначала проверьте доступность машины, затем переходите к инструментам
Выполняйте шаги по порядку. Пока предыдущий пункт не подтверждён, не очищайте кэш и не переустанавливайте зависимости — это может стереть исходные признаки сбоя.
-
01
Уровень заказа
Проверьте статус заказа
Войдите в консоль и убедитесь, что заказ выдан, а модель, период и узел соответствуют проверяемому объекту. При несоответствии запишите номер заказа и сообщение на странице.
-
02
Уровень адресации
Проверьте адрес узла
Убедитесь, что VNC и SSH используют адрес и порт из данных поставки. Не применяйте настройки старого узла, старой закладки или другого заказа.
-
03
Уровень доступа
Проверьте учётные данные
Проверьте имя пользователя, ввод пароля и состояние Caps Lock. Не вставляйте пароль, закрытый ключ или данные восстановления в текст тикета.
-
04
Уровень рабочего стола
Перекрёстно проверьте клиент VNC
Запишите название и версию клиента, а также настройки качества изображения. Если возможно, повторите тест с другого локального устройства или через другую сеть, чтобы исключить проблему клиента.
-
05
Сетевой уровень
Проверьте соединение SSH
Запишите, на каком этапе останавливаются DNS-разрешение, установка соединения и аутентификация. Если VNC недоступен, а SSH работает, сначала проверьте графический сеанс, а не сеть всей машины.
-
06
Уровень ресурсов
Проверьте место на диске
Проверьте свободное место на системном диске, а также объём DerivedData, каталогов зависимостей, архивов, симуляторов и файлов моделей. Нехватка места вызывает множество неочевидных ошибок сборки.
-
07
Уровень инструментов
Зафиксируйте версию Xcode
Запишите фактически выбранные путь и версию Xcode. Убедитесь, что CI-скрипт и интерактивная сборка используют один toolchain, затем повторите неудачную команду.
Разделяйте проблемы изображения, сети и ввода
VNC обеспечивает графический сеанс, а SSH — командную строку. Раздельная проверка быстро показывает, проблема ли в локальном клиенте, сетевом маршруте или сеансе узла.
| Симптом | Что сделать сначала | Что записать | Чего не делать |
|---|---|---|---|
| Чёрный экран VNC | Дождитесь инициализации сеанса, установите соединение заново и проверьте, отвечает ли SSH. | Название клиента, время, узел, результат проверки SSH и снимок чёрного экрана. | Не выполняйте бесконечные принудительные переподключения и не удаляйте сразу системные или пользовательские настройки. |
| Тайм-аут подключения | Повторите тест через другую локальную сеть, проверьте адрес и порт, различая тайм-аут разрешения адреса и аутентификации. | Тип локальной сети, исходный текст ошибки, время начала и сбоя, результат теста через другую сеть. | Не публикуйте в логах пароль, закрытый ключ или полные данные аутентификации. |
| Неправильная раскладка клавиатуры | Сверьте локальную и удалённую раскладки, способ ввода и сочетания модификаторов; проверьте ввод в простом текстовом редакторе. | Клиент, раскладка, проблемные клавиши и воспроизводимые шаги. | Не судите только по сочетаниям IDE: сначала исключите собственные настройки клавиш приложения. |
| Буфер обмена недоступен | Убедитесь, что клиент разрешает синхронизацию буфера, и отдельно протестируйте обычный текст и небольшой фрагмент. | Направление копирования, тип содержимого, версия клиента и работает ли буфер в других приложениях. | Не используйте ключи, токены или пароли подписи в качестве тестовых данных. |
| Сеанс прерван | Запишите действия и длительность до разрыва, затем проверьте, работает ли SSH и не переключилась ли локальная сеть. | Точное время, активное приложение, изменения сети, результат переподключения и связанные логи. | Не перезапускайте задачу сборки многократно: это может изменить состояние ресурсов в момент сбоя. |
Начинайте с первой достоверной ошибки, а не с последней строки
Ошибки подписи, кэша, диска и экспорта часто возникают цепочкой. Зафиксируйте toolchain и команду воспроизведения, затем ищите в логах самую раннюю явную причину сбоя.
Сертификаты и профили provisioning
Убедитесь, что bundle identifier, команда, тип сертификата и назначение профиля provisioning совпадают. Не смешивайте автоматическую и ручную подпись в одной цели без фиксации изменений.
- Укажите проблемные target и configuration
- Проверьте срок действия и область применения ресурсов подписи
- Сохраните полный контекст ошибки codesign
Права Keychain
Если интерактивная сборка успешна, а CI завершается ошибкой, проверьте доступ сеанса runner к нужным объектам подписи и различия прав в контексте задачи.
- Сравните пользователя локального терминала и runner
- Проверьте состояние связки ключей во время задачи
- Удалите пароли подписи и конфиденциальные значения из логов
DerivedData и кэш зависимостей
Сначала убедитесь, что ошибка стабильно воспроизводится, затем очищайте кэш только конкретного проекта. Полная очистка диска не должна быть действием по умолчанию.
- Запишите каталог кэша и стратегию попаданий
- Зафиксируйте lockfile и версию менеджера зависимостей
- Сохраните по одному логу сборки до и после очистки
Место на диске
Архивы, симуляторы, зависимости и старые артефакты одновременно занимают место. Нехватка пространства вызывает не только ошибки записи, но и сбои распаковки зависимостей или подписи.
- Запишите свободное место на системном диске
- Проверьте объём архивов и кэша по проектам
- Перед очисткой определите, какие артефакты нужно сохранить
Архивирование и экспорт
Разделяйте сбой создания archive и сбой export. Для первого проверьте компиляцию и подпись, для второго — параметры экспорта, целевой канал и подпись в архиве.
- Укажите, был ли успешно создан archive
- Сохраните параметры экспорта и краткое описание ошибки
- Убедитесь, что артефакт и scheme соответствуют друг другу
Минимальная команда воспроизведения
В тикете укажите рабочий каталог, версию Xcode, scheme, configuration и команду. Если сбой происходит только в CI, добавьте различия среды без конфиденциальных значений.
- Сохраните хотя бы один фрагмент контекста до и после ошибки
- Укажите, успешна ли сборка через графический интерфейс
- Перечислите уже выполненные безрезультатные шаги
Метки определяют, куда попадёт задача, а каталог — что останется после сбоя
Если очередь не движется, сначала проверьте метки и статус доступности. Если задача запустилась и завершилась ошибкой, проверьте пользователя, рабочий каталог, параллельность и очистку.
Четыре переменные нужно фиксировать вместе
Метки задачи должны полностью совпадать с зарегистрированными метками runner; убедитесь, что задача не исключена условиями проекта или ветки.
Каталог должен быть доступен для чтения и записи выделенному пользователю выполнения. Не используйте между проектами временные пути с остаточным состоянием.
Настройте параллельность с учётом памяти, диска и типа сборки. При избытке задач сначала определите, стоят ли они в очереди или уже конкурируют за ресурсы.
Заранее определите, что сохранять и удалять после каждой задачи, оставляя для неудачных задач достаточно логов и диагностических артефактов.
Проверьте runs-on и группу runner
Проверьте область доступа репозитория или организации к runner, написание меток, состояние службы и права рабочего каталога. При ожидании задачи сначала проверьте наличие онлайн-runner с полностью совпадающей меткой.
Проверьте tags и права проекта
Проверьте tags job, область привязки runner, права проекта и параллельность. Если задача уже запустилась и завершилась ошибкой, добавьте логи исполнителя и вывод скрипта проекта.
Зафиксируйте личность исполнителя и жизненный цикл
Укажите ПО runner, способ запуска, пользователя, рабочий каталог и скрипт очистки. Для собственного планировщика также запишите обработку получения задачи, тайм-аутов и кодов выхода.
Восемь терминов для единого описания проблемы
Используйте при обращении одну систему терминов — так физические ресурсы, удалённые протоколы и ПО автоматизации не смешиваются.
- Физический узел
- Реальное устройство Apple Silicon, на котором поставляется и работает macOS, а не виртуальный экземпляр, выделенный из общего хост-сервера.
- Выделенный
- Вычислительные ресурсы, память и локальное хранилище заказа используются одним пользователем и не разделяются с другими арендаторами.
- Не виртуальная машина
- Система работает непосредственно на физическом устройстве. При диагностике учитывайте реальный хост macOS, сеть и периферийные цепочки.
- VNC
- Протокол удалённого рабочего стола для доступа к графическому интерфейсу macOS. Проблемы изображения, ввода и буфера обычно проверяют на уровне клиента и сеанса.
- SSH
- Протокол командного подключения и автоматического выполнения. Помогает определить, доступен ли узел и существует ли отдельно проблема графического сеанса.
- self-hosted runner
- Исполнитель, развёрнутый командой на облачном Mac для получения задач CI-платформы; метки и права проекта команда настраивает самостоятельно.
- Кэш сборки
- Сохранённые зависимости или промежуточные артефакты для сокращения повторных загрузок и компиляции. Кэш должен иметь ключ версии, ограничение объёма и стратегию очистки.
- Объединение устройств
- Консультация по нескольким устройствам или подключению Thunderbolt 5 для подходящих задач. Это не означает линейного ускорения всех инструментов сборки.
Передайте специалистам данные, с которых можно сразу начать диагностику
Ценность тикета не в объёме текста, а в полноте времени, объекта, шагов воспроизведения и исходной ошибки.
Номер заказа и узел
Укажите номер заказа с проблемой и фактический узел: Сингапур, Токио, Сеул или Гонконг. Для нескольких машин отметьте каждую отдельно.
Время воспроизведения
Укажите время и часовой пояс, а также длительность сбоя. При повторении перечислите время последних двух-трёх случаев.
Логи ошибок
Сохраните контекст до и после ошибки, команду и код выхода. Снимок экрана может помочь, но не заменяет копируемый текст лога.
Выполненные шаги
По порядку перечислите проверенные, изменённые и повторно протестированные пункты с результатом каждого, чтобы не выполнять одни действия повторно.
Ожидаемый и фактический результат
Опишите, чего хотели добиться и на каком этапе остановились. Для сборки укажите scheme, версию Xcode и способ запуска.
Удалите все данные аутентификации
Удалите из логов, снимков и фрагментов конфигурации пароли, закрытые ключи, токены доступа, пароли подписи, платёжные данные и прочие данные для входа или авторизации.
Тикеты — для вопросов по заказам, email — для общих консультаций
По вопросам уже оформленного заказа сначала отправьте тикет через консоль, чтобы связать его с заказом и узлом. Общие вопросы по решениям можно направить на support@macvpsgo.com.
Для каждой проблемы — своя очередь обработки
Правильный канал эффективнее повторных запросов. Для аппаратных проблем и подключения нужен связанный заказ, а общие консультации и корпоративные запросы лучше начать с описания сценария.
Консультация по использованию и выбору
Подходит для вопросов о версии Xcode, миграции CI, масштабе параллельности, хранилище и выборе одной из трёх конфигураций.
Перейти на страницу контактовПроблемы VNC или SSH
После быстрой самопроверки на этой странице отправьте через консоль тикет с номером заказа, узлом, временем и результатами перекрёстных тестов.
Отправить тикет о проблеме подключенияПредполагаемая неисправность физического узла
Если недоступны и VNC, и SSH либо воспроизводятся сбои диска, сети или устройства, прекратите повторные задачи и сохраните время и логи.
Отправить тикет о неисправности оборудованияВопросы заказа и оплаты
Укажите номер заказа, период, категорию платежа и сообщение на странице. Фактически доступный платёжный шлюз определяется актуальным ответом консоли.
Отправить тикет по биллингуГотовы запустить следующую сборку?
Выберите Go M4 Core, Go M4 Plus или Go M4 Pro и настройте конфигурацию в одном из четырёх доступных узлов. Актуальный статус доступности показывает консоль.