Self-hosted macOS runner GitHub Actions на облачном Mac mini M4 (руководство 2026)
Облачные раннеры macos-latest от GitHub удобны, но iOS-команды упираются в холодный кэш, очереди в релизные недели и внутренние инструменты, которые нельзя положить на эфемерные раннеры. Self-hosted runner на арендованном Apple Silicon Mac даёт постоянный DerivedData, предсказуемую производительность и выбор региона — HK / JP / KR / SG / US рядом с разработчиками. Сначала сравните экономику в аренда vs покупка Mac mini M4, затем подключайте Actions к железу по SSH.
Когда в 2026 году нужен self-hosted macOS runner
- Длинные пайплайны
xcodebuild— тёплый кэш экономит минуты на каждом запуске. - Свои SDK или внутренние фреймворки, которые нельзя загрузить на стандартные раннеры.
- Комплаенс — задачи не покидают Mac, который вы контролируете по договору.
- Параллельные релизы — отдельные раннеры и связки ключей на приложение.
Чеклист безопасности до ./config.sh
| Контроль | Рекомендация |
|---|---|
| SSH | Только ключи, нестандартный порт, по возможности белый список IP. |
| Пользователь runner | Неадминская учётка автоматизации; sudo по минимуму. |
| Секреты | GitHub Environments и обязательные ревьюеры для прод-деплоев. |
| Рабочие каталоги | На чувствительных репо чистить _work или одноразовые каталоги на job. |
Установка на узлах MacXCode
- SSH — порт и пользователь из письма об аренде; проверить Xcode CLT или полный Xcode.
- Каталог —
mkdir ~/actions-runner && cd ~/actions-runner. - Скачать runner — URL tarball macOS arm64 из «Add runner» (Settings → Actions → Runners).
- Настроить —
./config.sh --url https://github.com/ORG/REPO --token RUNNER_TOKENс краткоживущим токеном. - Метки — например
macxcode-m4,ap-sg,xcode16для пула. - Сервис —
./svc.sh installи./svc.sh startдля переживания перезагрузки.
GUI-шаги (первая связка с ключницей) — один раз через VNC, дальше headless job’ы GitHub; см. SSH и VNC на облачном Mac.
Фрагмент workflow
runs-on: [self-hosted, macxcode-m4]
Закрепите Xcode через DEVELOPER_DIR или xcode-select в шаге настройки. Подпись — в login keychain пользователя runner, для CI — security set-key-partition-list. Archive: гид по удалённому Xcode.
GitHub-hosted vs self-hosted на арендованном M4
| Тема | GitHub-hosted | Self-hosted облачный Mac |
|---|---|---|
| Настройка | Без инфраструктуры | Однократная установка runner |
| Кэш | Холодные старты | Постоянный диск |
| Регион | Ограничен | Узлы HK/JP/KR/SG/US |
| Безопасность | На стороне GitHub | SSH и ОС усиливаете вы |
FAQ
| Вопрос | Ответ |
|---|---|
| Один runner на несколько репо? | На уровне организации да, но секреты разделяйте; прод и эксперименты — на разных машинах. |
| GitLab или Jenkins? | Та же логика; история «голый M4 + SSH» та же, меняется установщик агента. |
| Схемы сети? | См. справку MacXCode по топологиям SSH/VNC. |
Почему Mac mini M4 как хост GitHub Actions
Раннеры долго компилируют Swift; производительные ядра M4 и быстрый NVMe держат очередь ровной. В отличие от чрезмерных VM, Mac mini мало ест в простое — удобно, когда ночью мало job’ов, но раннер должен быть онлайн. MacXCode даёт физический Apple Silicon с SSH и опциональным VNC в нескольких регионах — в духе типичных меток GitHub.
Возьмите узел в ценах, пройдите чеклист, зарегистрируйте runner и запустите первый workflow_dispatch — разница заметна со второй сборки.
GitHub Actions на выделенном M4
Bare metal · Глобальные узлы · SSH за минуты