Docs

Registre seu runner em 10 minutos

Sua máquina da MacRun é um runner auto-hospedado padrão do GitHub Actions. Mantenha seu pipeline e mude duas linhas de YAML.

01

Conecte à sua máquina

Sua máquina fica em uma rede privada do Tailscale, e não na internet pública. Não existe porta SSH aberta para alguém achar nem nada para blindar. Para entrar você precisa de duas coisas, uma vez só.

Instale o Tailscale em tailscale.com/download e entre na sua conta. É grátis para uso pessoal e para os tamanhos de conta que a maioria das equipes precisa aqui. Funciona no macOS, Linux e Windows. Depois aceite o convite que enviamos quando sua máquina fica pronta. Ele dá acesso a essa máquina e a nada mais da nossa rede.

Seu portal mostra o comando exato, com o endereço da sua máquina já preenchido:

ssh runner@100.x.x.x

Não há senha nem chave para gerenciar: o Tailscale cuida da autenticação. Se sua conta do Tailscale usa um email diferente do email de cobrança, peça no seu portal um compartilhamento para ele.

Seus jobs de CI não precisam do Tailscale. O GitHub Actions chega ao runner pela conexão de saída do próprio GitHub. Isto é só para quando você quiser um shell na máquina.

02

Abra a tela, quando precisar

O SSH cobre o CI. Para quando um log não basta, você chega à mesma máquina com Compartilhamento de Tela pela mesma rede privada. Assim o Instruments, o Simulador e a interface do Xcode funcionam como no seu computador. Seu portal mostra o endereço, o usuário runner e uma senha exclusiva da sua locação.

Em um Mac, abra o Finder e depois Ir → Conectar ao Servidor (⌘K):

vnc://100.x.x.x

No Windows, instale o RealVNC Viewer ou o TightVNC e conecte a 100.x.x.x:5900. No Linux, Remmina e TigerVNC funcionam, com o mesmo endereço. Se seu cliente pedir só uma senha, deixe o usuário em branco.

Copiar e colar. Os visualizadores de Windows e Linux não conseguem compartilhar a área de transferência com o Mac, porque o Compartilhamento de Tela do macOS ignora a deles. O app Compartilhamento de Tela da Apple em um Mac compartilha. No Windows, passe o texto por SSH. Cole estas linhas no PowerShell:

# Once per window: send and read text as UTF-8
$OutputEncoding = [Console]::InputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::new($false)

# Mac to PC
ssh runner@100.x.x.x "LANG=en_US.UTF-8 pbpaste" | Set-Clipboard

# PC to Mac
Get-Clipboard -Raw | ssh runner@100.x.x.x "LANG=en_US.UTF-8 pbcopy"

A primeira linha faz o PowerShell enviar e ler UTF-8. Assim acentos e outros idiomas chegam certinhos. Ou use nosso pequeno script macrun-clip.ps1. Rode com push, pull ou sync e o seu endereço. O sync copia as mudanças nos dois sentidos até você apertar Ctrl+C. Ele só passa texto. No Linux, passe os mesmos comandos ssh pelo xclip ou wl-copy.

É isso que a maioria dos serviços de CI não consegue fazer. Um runner hospedado te dá logs e mais nada. Um crash que só aparece no Instruments é um crash que você não consegue investigar.

03

Pegue um token de registro no GitHub

No seu repositório (ou organização) vá em Settings → Actions → Runners → New runner. O GitHub mostra um token de uso único. Você vai colar ele no comando abaixo. Runners de organização são compartilhados por todos os repositórios da organização.

04

Registre o runner na sua máquina

Entre por SSH como acima e rode o comando de configuração do seu portal (ele já traz o label da sua unidade):

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

O daemon runner-agent mantém este serviço vivo automaticamente. Se ele cair, é reiniciado em até 30 segundos.

05

Mude duas linhas de YAML

Aponte seu workflow para o runner. O diff é só isto:

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

Todo o resto do seu pipeline continua exatamente igual.

06

Versões do Xcode

Versões recentes do Xcode vêm pré-instaladas em /Applications. Para escolher uma em um job, defina DEVELOPER_DIR. Não precisa de sudo. Você também pode pedir uma versão nova pelo seu portal (normalmente no mesmo dia):

jobs:
  build:
    env:
      DEVELOPER_DIR: /Applications/Xcode.app/Contents/Developer
    steps:
      - run: ls -d /Applications/Xcode*.app   # installed versions
      - run: xcodebuild -version
07

Os caches já estão quentes

Como a máquina é sua, os caches ficam no disco local entre execuções. Você não paga o pedágio de baixar tudo de novo. Caminhos comuns:

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

Você ainda pode usar actions/cache se quiser chaves de restauração determinísticas. Mas na maioria dos builds de iOS, o que faz diferença é o disco local quente.

08

Gerencie sua máquina

Reinicie, peça versões do Xcode e gerencie a cobrança pelo seu portal. Precisa de outra coisa? Responda qualquer email da MacRun e uma pessoa te responde.