От подключения до CI-пайплайна

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

Руководство составлено в порядке реальных действий: подключение, SSH-ключи, удалённый рабочий стол, Xcode, восстановление зависимостей и CI Runner. На каждом шаге есть контрольная точка, чтобы определить источник проблемы: устройство, инструменты или настройки пайплайна.

Паспорт устройства READY PATH
01
Защищённое подключение Проверьте адрес устройства, имя пользователя и SSH-отпечаток
02
Восстановление среды сборки Проверьте Xcode, зависимости, данные подписи и пути
03
Подключение CI Runner Запускайте задачи с минимальными правами и сохраняйте логи сборки
Подключение по инструкции 3 ЭТАПА
05 ПодготовкаПодключение, вход, безопасность, инструменты, CI
04 Инструменты пайплайнаActions, GitLab CI, Jenkins, Fastlane
01 Границы устройстваОдин заказ — один выделенный физический узел
Пять проверок перед началом

Сначала пройдите короткий путь, затем переносите полный рабочий процесс

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

  1. 01

    Получите данные для подключения

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

    Готово, если Адрес устройства и SSH-отпечаток сохранены отдельно
  2. 02

    Выполните первый вход

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

    Готово, если Командная строка и графический интерфейс открываются без ошибок
  3. 03

    Усильте безопасность аккаунта

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

    Готово, если Оставлены только необходимые текущей команде способы доступа
  4. 04

    Подготовьте набор инструментов

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

    Готово, если Тот же коммит собирается из командной строки
  5. 05

    Подключите CI

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

    Готово, если Логи сборки, артефакты и коды завершения отслеживаются
Примеры выполнения команд

Три вывода для поиска проблем в подключении, сборке и публикации

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

Панель проверки сборки MiniRent SESSION 01
CONNECT Установите SSH-сеанс
$ ssh -i ~/.ssh/minirent_ed25519 \
  <имя-пользователя>@<адрес-устройства>

The authenticity of host cannot be established.
ED25519 key fingerprint is <отпечаток>

$ sw_vers
ProductName: macOS
ProductVersion: <версия-системы>

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

BUILD Выполните сборку Xcode
$ xcodebuild -version
Xcode <версия>
Build version <номер-сборки>

$ xcodebuild \
  -workspace <имя-проекта>.xcworkspace \
  -scheme <Scheme> \
  -destination 'generic/platform=iOS' \
  clean build | tee build.log

** BUILD SUCCEEDED **

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

AUTOMATE Проверьте процесс Fastlane
$ bundle exec fastlane <имя-lane>

[fastlane] Checking environment
[fastlane] Resolving signing inputs
[fastlane] Building archive
[fastlane] Export completed
[fastlane] Lane finished successfully

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

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

От локального Mac к облачному: перенос данных, инструментов и автоматизации

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

Локальный Mac
Облачный Mac
  1. Этап 1 · Синхронизация данных

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

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

    • Запишите адрес исходного репозитория, целевую ветку и хэш коммита
    • Для крупных ресурсов проверьте число файлов, общий размер и контрольные суммы
    • Исключите DerivedData, временные архивы и кэши, которые можно создать заново
    • После синхронизации выполните проверку только для чтения и подтвердите права и формат переводов строк
  2. Этап 2 · Восстановление инструментов

    Восстановите среду Xcode по списку версий

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

    • Запишите версию Xcode, номер сборки и текущий каталог разработчика
    • Зафиксируйте версии Ruby, Bundler, Node и менеджера пакетов
    • Восстановите зависимости из lock-файлов, избегая неконтролируемых обновлений
    • Выполните clean build для фиксированного коммита и сохраните эталонный лог
  3. Этап 3 · Подключение CI

    Сведите права Runner и ключей к минимуму

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

    • Создайте для Runner отдельный каталог выполнения и метки
    • Ограничьте доступные репозитории, ветки и среды публикации
    • Маскируйте токены, пароли и пути к сертификатам перед выводом в лог
    • Сначала запускайте тестовую задачу, затем поэтапно включайте архивацию и распространение
Удалённый доступ

Разделяйте учётные данные, сеансы и аномальные подключения

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

Паспорт доступа

Выработайте проверяемую привычку подключения

ACCESS / 04

Хранение учётных данных

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

Раздельное хранение

SSH-ключи

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

Отдельный ключ

Сеанс удалённого рабочего стола

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

Разделение задач

Завершайте неактивные сеансы

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

Завершайте вручную
Не удаётся подключиться

Сначала проверьте сетевой маршрут

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

Соберите данные и свяжитесь с командой
Неожиданный отпечаток

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

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

Создать обращение в консоли
Сборка Xcode

Каждая сборка должна показывать версию, входные данные, артефакты и точку сбоя

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

Проверьте версию

Выполните xcodebuild -versionи одновременно сохраните xcode-select -p вывод, чтобы инструменты командной строки не указывали на неправильный каталог.

Импортируйте материалы подписи

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

Управляйте DerivedData

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

Контролируйте параллельные сборки

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

Экспортируйте логи

Используйте tee для сохранения исходного вывода; записывайте код завершения, хэш коммита, Scheme, целевую платформу и путь к артефактам — это упростит воспроизведение.

Рекомендуемые базовые данные

После успешной сборки сохраните как минимум восемь параметров

  • Хэш коммита
  • Версия Xcode
  • Scheme
  • Целевая платформа
  • Lock-файл зависимостей
  • Время начала и завершения
  • Код завершения
  • Путь к артефактам
Подключение CI/CD

Четыре типа Runner — единый стандарт проверки подключения

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

GH
GitHub Actions

Чек-лист самохостируемого Runner

  • Задайте Runner метки, описывающие чип, назначение и среду
  • Ограничьте список репозиториев и рабочих процессов, которым доступен Runner
  • В начале задачи выводите версии Xcode и зависимостей
  • Используйте контролируемое внедрение секретов и запрещайте вывод чувствительных переменных
  • После задачи очищайте временную связку ключей, архивы и рабочий каталог
GL
GitLab CI

Чек-лист регистрации Runner

  • Используйте специальные метки для маршрутизации заданий macOS на нужное устройство
  • Убедитесь, что защищённые переменные доступны только разрешённым веткам и средам
  • Зафиксируйте каталог сборки, не позволяйте проектам совместно использовать чувствительный кэш
  • Настройте чёткие сроки хранения артефактов и логов
  • Проверьте завершение дочерних процессов и удаление временных файлов после отмены задания
JK
Jenkins

Чек-лист узла Agent

  • Настройте метки узла и число исполнителей с учётом возможностей устройства
  • Привязывайте учётные данные к конкретному Job, не помещайте их в глобальную среду
  • Задайте проверки объёма для рабочего пространства, кэша и каталогов архивов
  • Записывайте версии инструментов и параметры Pipeline
  • После сбоя архивируйте необходимые логи, затем выполните безопасную очистку
FL
Fastlane

Чек-лист автоматизированного Lane

  • Фиксируйте версии Fastlane и плагинов через Bundler
  • Разделите тестирование, архивацию и распространение на отдельные проверяемые lane
  • Перед запуском проверяйте наличие переменных окружения, не выводя их значения
  • Чётко укажите расположение архива, экспортированных файлов и логов
  • Сначала проверьте процесс без публикации, затем откройте официальные шаги
Хранилище и устройство вместе

Выбирайте объём по размеру рабочего набора, не храните кэш как постоянные данные

Базовый SSD подходит для кода, зависимостей и обычных сборок; увеличенный объём удобнее для крупных ресурсов, нескольких параллельных рабочих пространств и сохраняемых артефактов. Важные данные всё равно необходимо резервировать отдельно.

256 ГБ / 512 ГБ

Базовый SSD

MiniRent M4 Core оснащён SSD 256 ГБ, а MiniRent M4 Plus — SSD 512 ГБ. Подходит для репозиториев кода, зависимостей, инструментов и управляемого кэша сборки.

  • Регулярно проверяйте DerivedData и каталоги архивов
  • После загрузки артефактов удаляйте локальные копии
  • Не храните восстанавливаемый кэш как постоянные файлы
+1 ТБ SSD

Расширение для среднего рабочего набора

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

В день
$3
В неделю
$8
В месяц
$14.8
В квартал
$40.3
+2 ТБ SSD

Расширение для крупных ресурсов и архивов

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

В день
$6
В неделю
$16
В месяц
$29.6
В квартал
$80.6
Thunderbolt 5

Объединение физических устройств

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

В день за устройство
$1.8
В неделю за устройство
$4.8
В месяц за устройство
$8.9
В квартал за устройство
$24.2
Оцените пиковый рабочий набор до заказа

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

Настроить устройство и хранилище
План технических материалов

Продолжайте чтение по типу задачи

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

AI и MLX

Практика MiniRent: развёртывание инференса AI-моделей на облачном Mac

От выбора конфигурации Apple Silicon и установки среды MLX до удалённого запуска сервиса инференса: подготовка модели, наблюдение за производительностью, защита портов и экспорт результатов.

План материалов · Практика развёртывания
Выбор архитектуры

macOS в облаке или локальная разработка: как выбрать команде

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

План материалов · Командные решения
Сборка Xcode

Полное руководство по облачной сборке Xcode в MiniRent

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

План материалов · Руководство по сборке
Выбор оборудования

Mac mini или Mac Studio: сначала рабочая нагрузка, затем характеристики

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

План материалов · Оценка характеристик
Удалённая разработка

Как с нуля настроить удалённую среду разработки MiniRent на Mac

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

План материалов · Настройка среды
AI и MLX

Введение в MLX: первый эксперимент с инференсом на облачном Mac

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

План материалов · Вводный эксперимент

Сейчас отображаются все 6 тем.

Диагностика и помощь

Сначала соберите данные, затем решайте: очистка, повтор или обращение

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

В каком порядке проверять, если устройство не подключается?
  1. Проверьте в консоли текущие адрес устройства, порт, имя пользователя и состояние устройства.
  2. Различайте четыре ошибки: тайм-аут подключения, отказ в подключении, изменение отпечатка и отказ по ключу.
  3. Выполните контрольный тест из сети, которой известен доступ к целевому порту.
  4. Включите подробный режим и запишите этап согласования SSH, но перед отправкой удалите адрес устройства и чувствительные поля.
  5. Если подключиться по-прежнему нельзя, создайте обращение и укажите время проблемы, сетевое расположение и фрагмент ошибки.
С чего начать, если сборка Xcode внезапно завершилась ошибкой?
  1. Запишите неудачный коммит, версию Xcode, Scheme, целевую платформу и полный код завершения.
  2. Проверьте, изменился ли lock-файл зависимостей, а также успешно ли работают источники пакетов и сетевые запросы.
  3. Проверьте материалы подписи, права связки ключей и соответствие профиля целевому назначению.
  4. Выполните clean build в изолированном каталоге DerivedData.
  5. Сравните последний успешный лог и найдите первую настоящую ошибку, а не итоговую последнюю строку.
Что очищать при нехватке места на диске?
  1. Сначала оцените объём рабочего пространства, DerivedData, архивов, данных симуляторов и кэша зависимостей.
  2. Загрузите необходимые артефакты сборки в указанное командой место и проверьте их целостность.
  3. В первую очередь удаляйте восстанавливаемый кэш и старые архивы, уже подтверждённые как загруженные.
  4. Проверьте, не пропустил ли CI шаг очистки из-за неудачной задачи.
  5. Если рабочий набор продолжает расти, оцените переход на SSD +1 ТБ или +2 ТБ.
Как понять, где причина высокой задержки удалённых операций — в локальной сети или маршруте к узлу?
  1. Запишите время проблемы, текущий город подключения, оператора и способ доступа.
  2. Сравните проводную и беспроводную сети, исключив локальные потери пакетов и нестабильный сигнал.
  3. Отдельно проверьте интерактивность SSH, удалённый рабочий стол и передачу файлов, чтобы понять, затронут ли только один протокол.
  4. Остановите синхронизацию крупных файлов, потребляющую исходящую полосу, и повторите контрольный тест.
  5. В обращении укажите медианные результаты нескольких тестов, а не только одно пиковое значение.
Команда выполняется, но чтение, запись или подпись завершаются ошибкой прав. Что делать?
  1. Проверьте текущего пользователя и владельца файлов; не пытайтесь сразу обойти проблему командами с повышенными правами.
  2. Проверьте минимально необходимые права рабочего каталога, связки ключей, скриптов и каталога артефактов сборки.
  3. Убедитесь, что CI Runner и ручной вход не используют разных пользователей или переменных окружения.
  4. Проверьте бит выполнения скрипта, регистр символов в путях и права подключённых томов.
  5. Перед отправкой обращения удалите чувствительные данные из названий сертификатов, токенов и полных путей.

Готовы перенести задачи сборки на выделенный физический Mac mini?

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