Документация

Регистрация раннера за 10 минут

Ваша машина MacRun представляет собой стандартный self-hosted раннер GitHub Actions. Оставьте свой пайплайн и поменяйте две строки YAML.

01

Подключение к машине

Ваша машина находится в частной сети Tailscale, а не в открытом интернете. Поэтому нет открытого порта SSH, который можно найти, и ничего не нужно дополнительно защищать. Для входа нужно сделать две вещи, один раз.

Установите Tailscale с tailscale.com/download и войдите. Он бесплатен для личного использования и для аккаунтов того размера, который нужен большинству команд. Работает на macOS, Linux и Windows. Затем примите приглашение, которое мы пришлём, когда машина будет готова. Оно открывает доступ только к этой машине и больше ни к чему в нашей сети.

Точная команда с адресом вашей машины есть в личном кабинете:

ssh runner@100.x.x.x

Никаких паролей и ключей: аутентификацией занимается Tailscale. Если email вашего аккаунта Tailscale отличается от адреса для оплаты, запросите доступ для него в личном кабинете.

Задачам CI Tailscale не нужен. GitHub Actions связывается с раннером через исходящее соединение самого раннера с GitHub. Так что Tailscale нужен, только когда вы хотите получить shell на машине.

02

Общий экран, когда он нужен

Для CI хватает SSH. Если логов мало, к той же машине можно подключиться через общий экран по той же частной сети. Instruments, Simulator и интерфейс Xcode работают так же, как локально. В личном кабинете указаны адрес, пользователь runner и пароль, уникальный для вашей аренды.

На Mac откройте Finder, затем Go → Connect to Server (⌘K):

vnc://100.x.x.x

На Windows установите RealVNC Viewer или TightVNC и подключитесь к 100.x.x.x:5900. На Linux подойдут Remmina и TigerVNC, адрес тот же. Если клиент спрашивает только пароль, оставьте имя пользователя пустым.

Большинство CI-сервисов этого не умеют. Облачный раннер даёт вам только логи. Если сбой воспроизводится только под Instruments, расследовать его вы не сможете.

03

Получите токен регистрации в GitHub

В репозитории (или организации) откройте Settings → Actions → Runners → New runner. GitHub покажет одноразовый токен. Его нужно вставить в команду ниже. Раннеры уровня организации доступны всем репозиториям организации.

04

Зарегистрируйте раннер на машине

Зайдите по SSH, как описано выше, и выполните команду настройки из личного кабинета (метка вашей машины в ней уже подставлена):

cd ~/actions-runner
./config.sh --url https://github.com/YOUR-ORG/YOUR-REPO \
  --token <RUNNER_TOKEN> \
  --labels self-hosted,macOS,macrun-unit-01 \
  --unattended

# start it as a service (survives reboots)
./svc.sh install && ./svc.sh start

Демон runner-agent автоматически поддерживает этот сервис в рабочем состоянии. Если сервис упадёт, он будет перезапущен в течение 30 секунд.

05

Поменяйте две строки YAML

Направьте workflow на раннер. Вот и весь diff:

 jobs:
   build:
-    runs-on: macos-latest
+    runs-on: [self-hosted, macOS, macrun-unit-01]

Всё остальное в пайплайне остаётся как было.

06

Версии Xcode

Свежие версии Xcode уже установлены и закреплены через xcodes. Выберите нужную в задаче или запросите новую версию в личном кабинете (обычно в тот же день):

- run: sudo xcodes select 26.6
- run: xcodebuild -version
07

Кэши уже тёплые

Машина ваша, поэтому кэши сохраняются на локальном диске между запусками. Не нужно каждый раз всё скачивать заново. Типичные пути:

~/Library/Developer/Xcode/DerivedData   # build cache
~/Library/Caches/CocoaPods              # pods
~/.gradle  ~/.npm  ~/.gem               # toolchain caches
~/Library/Caches/org.swift.swiftpm      # SwiftPM

Вы по-прежнему можете использовать actions/cache, если нужны детерминированные ключи восстановления. Но для большинства iOS-сборок главный выигрыш даёт тёплый локальный диск.

08

Управление машиной

Перезагрузка, запрос версий Xcode и оплата доступны в личном кабинете. Нужно что-то ещё? Ответьте на любое письмо MacRun, и вам ответит человек.