Руководство поддержки Oakmini

Остановите проблему с облачным Mac на этапе, который можно точно проверить

Сначала определите, связана ли проблема с подключением, средой разработки, CI/CD, хранилищем, сетью или управлением аккаунтом, затем последовательно проверьте состояние, параметры и логи. Oakmini предоставляет выделенные физические узлы Mac mini, а не виртуальные машины. Проверяйте отдельно условия локального подключения, состояние узла и инструменты проекта.

6 категорий диагностики 5 доступных регионов узлов 365 дней стабильной работы
Сценарии разработки на облачном Mac и подключения через терминал
connection-check
$ uname -m
arm64
$ sw_vers -productVersion
macOS ready
$ ssh -v oak-node
debug1: Authentication succeeded
$ df -h /
Filesystem status: available
ДИАГНОСТИКА / 01

Сначала выберите правильный путь диагностики

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

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

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

Начать с проверки состояния хоста

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

Для различий в пути Xcode, пакетах Homebrew, настройках Git, Fastlane или версиях языковых сред.

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

CI/CD

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

Начать со статуса регистрации runner

Хранилище

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

Проверить объём, каталоги и занятое место

Сеть

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

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

Управление аккаунтом

Для идентификации заказа, прав управления хостом, статуса продления или отсутствия обновления результата операции в консоли.

Сначала проверить заказ и журнал операций
Хранилище

Сначала найдите, что занимает место

Используйте df -h для проверки объёма тома, затем выполните du -sh для проверки проекта, кэша сборки и каталогов экспорта. Перед удалением убедитесь, что артефакты сохранены в резервной копии; не очищайте неизвестные системные каталоги.

Сеть

Разделяйте задержку интерфейса и время выполнения задач

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

Управление аккаунтом

Ориентируйтесь на статус заказа в консоли

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

ПОДКЛЮЧЕНИЕ / 02

Выполняйте диагностику подключения в пять этапов

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

  1. 01

    Проверьте состояние хоста в консоли

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

    Условие успеха: хост работает нормально, идентификатор заказа, регион узла и цель подключения совпадают.
  2. 02

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

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

    nc -vz HOST PORT
    ssh -vvv USER@HOST
    Условие успеха: порт доступен, соединение не завершается по тайм-ауту до рукопожатия.
  3. 03

    Проверьте параметры SSH или VNC посимвольно

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

    ssh -G oak-node
    ssh -v USER@HOST -p PORT
    Условие успеха: фактические параметры клиента полностью совпадают с данными в консоли.
  4. 04

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

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

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

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

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

    chmod 600 ~/.ssh/id_ed25519
    ssh-add -l
    Условие успеха: рукопожатие завершено, аутентификация успешна, соединение открывает командную строку или графический интерфейс macOS.
Минимальный набор доказательств:Идентификатор заказа, регион узла, время и часовой пояс, способ подключения, исходный текст ошибки клиента и выполненные проверки. Удалите из логов все чувствительные поля, кроме имени пользователя, и замаскируйте данные хоста, ключи и токены.
ИНСТРУМЕНТЫ / 03

Проверяйте среду разработки по версиям, путям и результатам проекта

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

Инструмент Проверить Рекомендуемая команда Типичное расхождение
Xcode Текущий каталог разработчика, версия, список SDK xcode-select -p
xcodebuild -version
Командная строка указывает на другой Xcode, а требуемого SDK нет в текущей версии
Homebrew Путь к бинарным файлам, список пакетов, результат диагностики brew --prefix
brew doctor
Оболочка не загрузила правильный путь; после миграции список пакетов не совпадает с локальной средой
Git Версия, удалённый адрес, права репозитория и настройки пользователя git --version
git remote -v
runner и интерактивная оболочка используют разные учётные данные или рабочие каталоги
Fastlane Источник вызова, фиксация зависимостей, lane и имена переменных окружения bundle exec fastlane --version Напрямую вызывается глобальная версия вместо зависимостей проекта
Языковая среда выполнения Путь интерпретатора, менеджер версий и версия, закреплённая проектом which ruby
which node
Интерактивная оболочка и неинтерактивная задача загружают разные файлы инициализации
Базовая конфигурация

Храните машиночитаемый список

Записывайте версию macOS, архитектуру чипа, версию Xcode, список пакетов Homebrew, версию Git и языковые среды. При каждом обновлении меняйте только один основной компонент и сохраняйте список до и после обновления.

Управление путями

Проверьте PATH, который действительно видит задача

Если команда выполняется в локальном терминале, но runner завершается с ошибкой, добавьте в временный диагностический шаг echo "$PATH",which и команды проверки версий. После проверки удалите ненужный вывод окружения, чтобы чувствительные переменные не попали в лог.

Проверка воспроизводимости

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

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

БАЗОВЫЕ КОМАНДЫ

Команды для снимка среды

Этого вывода достаточно для базовой записи версий. Перед отправкой обращения удалите из каталогов название проекта и все чувствительные параметры.

uname -m
sw_vers
xcode-select -p
xcodebuild -version
brew --prefix
git --version
which ruby
which node
df -h /
CI/CD / 04

От статуса runner онлайн до лога отдельной задачи

Проблемы CI/CD следует проверять по уровням: принята ли задача, вошла ли она в рабочий каталог, получила ли права, нашла ли зависимости и завершила ли сборку. Не делайте выводы только по финальному сообщению об ошибке.

01

Регистрация runner

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

  • Проверьте имя runner и целевой проект
  • Проверьте процесс службы и пользователя запуска
  • Убедитесь, что служба автоматически восстанавливается после перезагрузки системы
02

Совпадение меток

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

  • Оставьте одну понятную метку Apple Silicon
  • Удалите неиспользуемые старые метки
  • Проверьте, разрешено ли целевой ветке использовать этот runner
03

Права и рабочий каталог

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

  • Зафиксируйте пользователя, от имени которого выполняется задача
  • Проверьте наличие права на выполнение у скриптов
  • Убедитесь, что временный каталог позволяет создавать и удалять файлы
04

Кэш и параллельное выполнение

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

  • Запишите ключ кэша и версии файлов блокировки зависимостей
  • Разделяйте общий кэш и рабочий каталог задачи
  • Сравните результаты одной и параллельных задач
05

Логи и коды завершения

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

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

Задача постоянно стоит в очереди

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

Задача сразу завершается с ошибкой

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

Установка зависимостей нестабильна

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

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

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

МИНИ-ГЛОССАРИЙ / 05

Восемь терминов, часто используемых в обращениях

Единая терминология сокращает число уточнений. Описывайте конкретный объект, например «тайм-аут SSH на узле в Токио», а не просто «сервер недоступен».

Облачный Mac
Среда разработки macOS, доступная удалённо по сети для графического интерфейса, командной строки, сборок и автоматизации.
Физический узел
Фактически развернутое устройство Mac mini. Oakmini предоставляет выделенные физические машины, не разделяя один вычислительный экземпляр между пользователями через виртуальные машины.
Выделенный
В течение срока заказа пользователь получает ресурсы соответствующего физического узла, что помогает контролировать параллельные сборки, кэш и версии инструментов.
VNC
Способ удалённого подключения к графическому интерфейсу macOS. Качество изображения, разрешение и локальный канал влияют на удобство работы.
SSH
Способ безопасного доступа к командной строке, зависящий от адреса хоста, порта, имени пользователя и действительных учётных данных.
self-hosted runner
Программа CI, развёрнутая в среде под контролем пользователя; она принимает задачи, входит в рабочий каталог и запускает скрипты сборки.
Кэш сборки
Промежуточные данные, сохраняемые для сокращения повторных загрузок или компиляции. Несовпадение ключа кэша, версий зависимостей и рабочего каталога может вызвать ошибки.
Регион узла
Регион размещения физического узла. Сейчас доступны только Сингапур, Япония (Токио), Южная Корея (Сеул), Гонконг и запад США.
ОБРАЩЕНИЕ / 06

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

У Oakmini есть только два канала связи: отправка тикета после входа в консоль или письмо на support@oakmini.com. Для существующих заказов, состояния хоста и продолжающейся диагностики используйте тикет; перед покупкой или при недоступности консоли можно написать по электронной почте.

Обязательно укажите

Контекст проблемы

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

Чувствительные данные не должны попадать в тикет или письмо

  • Пароль аккаунта Для диагностики поддержке не нужен сам пароль.
  • Закрытый ключ или токен доступа Можно указать тип ключа или текст ошибки, но не содержимое ключа.
  • Исходный текст сертификата подписи Опишите назначение сертификата, его действительность и ошибку; не загружайте полный материал.
  • Платёжные данные Укажите только идентификатор заказа и статус операции; не отправляйте чувствительные данные карты или кошелька.
  • Необезличенные логи проекта Сначала удалите адрес репозитория, переменные окружения, данные клиентов и внутренние пути.
СТРУКТУРА ДЛЯ КОПИРОВАНИЯ

Структура обращения в поддержку

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

Тема: идентификатор заказа / категория проблемы / регион узла
Время возникновения и часовой пояс:
Способ подключения или тип задачи:
Ожидаемый результат:
Фактический результат:
Шаги воспроизведения:
1.
2.
3.
Выполненная диагностика:
Исходный текст ошибки и код завершения:
Описание обезличенных вложений логов:
ПОРТАЛ / 07

Заказы, состояние хоста и операции управления выполняются в консоли

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

Консоль: заказы и управление хостом Страница поддержки: диагностика и подготовка данных Тикет или электронная почта: помощь специалиста