От выдачи узла до базовой сборки

Подключите облачный Mac к процессам разработки и CI

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

Тип узла
Выделенный физический узел Apple Silicon
Доступные регионы
SG · JP · KR · HK
Цель
Первая сборка и CI-тест пройдены
ORB / NODE COMMISSIONING RUNBOOK 01
Выбор Защита Подключение Сборка Подключение к CI
Целевой узел Apple Silicon / выделенный физический узел
Регион
Не выбран
Ключ SSH
Не добавлен
Базовая конфигурация Xcode
Ожидает проверки
Раннер
Ожидает регистрации
Критерий готовности Запускайте рабочие задачи только после прохождения всех проверок
Адрес, учетные данные и текущий статус доступности определяются данными консоли 365 ДНЕЙ
Проверка перед началом

Подготовьте шесть исходных данных

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

01

Целевой регион

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

SG · JP · KR · HK
02

Модель узла

Для легких сборок начните с Orb M4 16; для больших графов зависимостей и параллельных задач рассмотрите Orb M4 24; для сборок с большим объемом памяти или локальных экспериментов с ИИ выберите Orb M4 Pro.

Всего 3 конфигурации
03

Срок аренды

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

День · неделя · месяц · квартал
04

Открытый ключ SSH

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

Рекомендуется Ed25519
05

Список доступа команды

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

Отдельные учетные данные для каждого
06

Инструменты macOS

Заранее зафиксируйте версии macOS, Xcode, инструментов командной строки, Ruby, Node, CocoaPods и менеджеров зависимостей. Запишите требования в репозитории и проверьте их по пунктам при инициализации узла.

Версии должны воспроизводиться
Заказ и выдача

Три выбора для формирования конфигурации узла

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

  1. 01

    Выберите одну из 3 моделей

    Orb M4 16: M4, 16 ГБ ОЗУ и 256 ГБ хранилища; Orb M4 24: M4, 24 ГБ ОЗУ и 512 ГБ хранилища; Orb M4 Pro: M4 Pro, 64 ГБ ОЗУ и 2 ТБ хранилища.

  2. 02

    Выберите регион и срок аренды

    Доступны Сингапур, Япония (Токио), Южная Корея (Сеул) и Гонконг; срок — день, неделя, месяц или квартал. Команда должна внести код региона и дату продления во внутренний реестр активов.

  3. 03

    Проверьте заказ и дождитесь записи о выдаче

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

Учетные данные и безопасность узла

Сначала защитите точку входа, затем устанавливайте среду разработки

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

FIRST ACCESS RECORD После первого входа выполните

Превратите временный доступ в контролируемую точку входа

  • Проверьте данные выдачи Убедитесь, что идентификатор узла, адрес, порт и регион соответствуют заказу, и занесите результат проверки в реестр активов команды.
  • Добавьте отдельный открытый ключ SSH Назначьте разные ключи администраторам, разработчикам и автоматизированным раннерам, чтобы доступ сотрудников и CI не использовал один закрытый ключ.
  • Настройте параметры доступа После проверки входа по ключу сузьте область действия временных учетных данных. После каждого изменения сохраняйте проверенный способ восстановления.
  • Сохраните данные восстановления Зафиксируйте идентификатор узла, авторизованных участников, отпечаток ключа, ответственного за восстановление и время последней проверки. Данные восстановления храните отдельно от самого узла.
Границы доступа

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

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

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

Сначала подтвердите путь отката

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

Посмотреть шаги диагностики подключения
Первое подключение по SSH

Сначала проверьте отпечаток, затем состояние системы

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

Запись о подключении узла Ожидает выполнения
# Установите переменную только после получения адреса из консоли
export NODE_HOST="ADRES_UZLA"
export NODE_PORT="22"

# Исправьте права выделенного закрытого ключа
chmod 600 ~/.ssh/orbvps_node

# Считайте и покажите отпечаток хоста, затем сверьте его с записью о выдаче
ssh-keyscan -p "$NODE_PORT" "$NODE_HOST" \
  | ssh-keygen -lf -

# Выполните первое подключение
ssh -p "$NODE_PORT" \
  -i ~/.ssh/orbvps_node \
  nodeadmin@"$NODE_HOST"

# После входа проверьте состояние оборудования, системы и диска
$ uname -m
arm64
$ sw_vers
$ sysctl -n machdep.cpu.brand_string
$ df -h /
$ uptime
SSH ACCEPTANCE 4 ПРОВЕРКИ
  1. Отпечаток совпадает Результат сканирования должен совпадать с доверенной записью о выдаче. При несовпадении прекратите подключение и проверьте данные через тикет в консоли.
  2. Корректные права ключа При слишком широких правах SSH откажется загружать закрытый ключ. Установите права, разрешающие чтение и запись только текущему пользователю.
  3. Архитектура arm64 После входа проверьте архитектуру процессора и сведения о чипе, чтобы не продолжать установку инструментов на неверном хосте.
  4. Диск и время работы доступны Запишите свободное место в корневом томе, версию системы и время работы — это исходное состояние для диагностики последующих ошибок сборки.
Инициализация графического рабочего стола

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

Графический рабочий стол подходит для настройки дисплея, системных параметров и первого интерактивного запуска Xcode. Данные доступа не публикуются; точный адрес и учетные данные доступны после активации.

DESKTOP BASELINE Чек-лист приемки графической сессии

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

01

Дисплей и разрешение

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

02

Язык системы и часовой пояс

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

03

Политика блокировки экрана

Убедитесь, что блокировка не прерывает задачи, которым требуется длительное выполнение, и одновременно ограничьте несанкционированный доступ. Интерактивные сессии и CI-задачи проверяйте отдельно.

04

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

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

Путь миграции

Перенесите локальный Mac на стабильный облачный узел сборки

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

LOCAL
01

Перенесите данные и репозитории

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

  • Проверьте ветку по умолчанию и удаленный адрес
  • Проверьте подмодули и зависимости больших файлов
  • Обезличьте тестовые данные
TOOLCHAIN
02

Установите и зафиксируйте инструменты

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

  • Зафиксируйте версии Xcode и SDK
  • Восстановите зависимости по lock-файлу
  • Зафиксируйте пути Shell и среды выполнения
CLOUD MAC
03

Подключите CI и проверьте откат

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

  • Ограничьте задачи специальными тегами
  • Проверьте попадание в кэш и его очистку
  • Отрепетируйте отключение раннера и откат

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

Первая сборка

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

Цель первой сборки — не минимальное время, а доказательство воспроизводимости инструментов, зависимостей, прав и путей вывода.

  1. 01

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

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

  2. 02

    Примите лицензию и установите зависимости

    Примите лицензию Xcode, затем установите Ruby, Node, CocoaPods и другие зависимости строго по lock-файлу.

  3. 03

    Запустите контролируемую сборку

    Явно укажите workspace, scheme и configuration, а полный стандартный вывод сохраните в отдельном файле журнала.

  4. 04

    Сохраните базовую запись

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

База первой сборки Примеры команд
$ xcode-select -p
/Applications/Xcode.app/Contents/Developer

$ xcodebuild -version
Xcode <VERSIYA_PROEKTA>

$ sudo xcodebuild -license accept
$ bundle install
$ bundle exec pod install

$ mkdir -p build-logs
$ set -o pipefail
$ xcodebuild \
  -workspace App.xcworkspace \
  -scheme App \
  -configuration Release \
  clean build \
  | tee build-logs/first-success.log

** BUILD SUCCEEDED **
Подключение к CI

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

После подключения self-hosted runner сначала ограничьте область специальными тегами и тестовой веткой, а затем постепенно открывайте рабочие сборки.

RUNNER PROFILE

Идентификатор раннера

Имя
orb-m4-ci-01
Теги
macos · arm64 · xcode
Рабочий каталог
/Users/runner/work
Стратегия параллельности
Начните проверку с одной задачи
ACCESS POLICY

Права и ключи

  • Отдельный пользователь раннера Не позволяйте автоматизированным задачам постоянно использовать интерактивную учетную запись администратора.
  • Разделите ключи по назначению Назначьте минимально необходимые права отдельно для чтения репозитория, записи артефактов и развертывания.
  • Не храните секреты в репозитории Передавайте их через контролируемые переменные CI и проверяйте, что журналы не выводят полное содержимое.
CACHE CONTROL

Кэш и восстановление

  • Версионируйте ключ кэша Включите сводку lock-файла, архитектуру и версии инструментов в ключ кэша.
  • Поддерживайте чистую пересборку Каждый конвейер должен полностью собираться после очистки кэша.
  • Ограничьте рост рабочего каталога Регулярно проверяйте объем DerivedData, архивов и временных артефактов.
CONTROLLED TEST JOB

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

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

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

Запускайте рабочие сборки только после уточнения всех шести состояний

Внесите результаты проверок в руководство команды. Узел может работать 365 дней в году, но процесс сборки по-прежнему требует четко определенных данных, мониторинга и ответственности за реагирование.

Резервное копирование

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

Восстановление проверено

Мониторинг

Как минимум фиксируйте свободное место на диске, коды завершения сборок, время ожидания задач и статус раннера; задайте пороги отклонений.

За метрики назначен ответственный

Контакты для уведомлений

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

Основной и резервный контакты назначены

Дата продления

Срок заказа и внутренняя дата подтверждения зарегистрированы и не зависят от памяти одного участника. Перед изменением конфигурации оцените окно текущих задач.

Срок зарегистрирован

Отзыв доступа

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

Отдельная запись для каждого

Путь связи при сбое

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

Материалы готовы к отправке
Готовы к развертыванию

Начните с проверяемого облачного Mac

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