Guia
Como manter uma farm de CI para Mac em Mac mini dedicados
Como equipes rodam de 5 a 20 Mac mini dedicados como farm de CI: runners por projeto, uma conta, uma fatura, engenheiros que respondem.
Atualizado em 2026-09-20
Um Mac mini dá conta tranquilamente dos builds iOS de uma equipe. A partir do momento em que você tem três apps, duas branches fazendo build em paralelo e um release train, você precisa de uma farm, e a forma como você a estrutura decide se o CI continua rápido ou vira aquilo de que todo mundo reclama.
Veja como as equipes rodam de 5 a 20 Macs dedicados na MacDuty.
Comece pela concorrência de builds, não pelo tamanho da equipe
O único número que importa é quantos builds precisam rodar ao mesmo tempo no seu horário de pico. Não desenvolvedores, não repositórios: builds simultâneos.
Uma estimativa aproximada que vale para a maioria das equipes iOS:
| Situação | Máquinas |
|---|---|
| Um app, uma equipe, builds de PR | 1 a 2 |
| Dois ou três apps, PR em paralelo e nightly | 3 a 5 |
| Release train, testes de UI em uma matriz de dispositivos | 6 a 10 |
| Agência ou equipe de plataforma atendendo muitos produtos | 10 a 20 ou mais |
O tempo de fila é o sinal. Se os builds esperam mais do que alguns minutos no pico, adicione uma máquina. Sai mais barato do que a hora que cada desenvolvedor passa esperando.
Um runner por máquina, ou vários?
Cada Mac mini é a máquina inteira só para você: sem hypervisor, sem vizinho barulhento. Isso permite dois padrões válidos.
Um runner por máquina
O mais limpo. Um build fica com toda a CPU, a GPU e a memória. Use para builds do Xcode e testes de UI, em que um build consome sem problema todos os núcleos que você der a ele.
Dois ou três runners por máquina
Funciona quando seus jobs são pequenos e limitados por I/O: testes unitários, lint, empacotamento. Em um M4 ou M6 de 32 GB, dois jobs leves em paralelo rodam com folga.
Misturar os dois é normal: máquinas pesadas dedicadas a builds de release, máquinas mais leves cheias de jobs rápidos.
Dividindo a farm entre equipes e projetos
Coloque labels nas suas máquinas e deixe o pipeline direcionar os jobs para elas. As divisões úteis:
Por projeto
ios-app, sdk, internal-tools. Cada repositório aponta para o próprio label, então um build quebrado em um produto nunca bloqueia outro.
Por finalidade
máquinas pr, rápidas e sempre aquecidas, e máquinas release, apagadas antes de cada build assinado.
Por cliente
Agências dão a cada cliente as próprias máquinas, com as próprias credenciais e certificados. Nada compartilhado, nada para vazar entre contas.
Tudo isso em uma só conta MacDuty, com uma fatura no fim do mês.
Mantendo a farm saudável
Reinstale entre projetos, em vez de nunca
Um Mac que faz builds há um ano acumula versões do Xcode, simuladores e caches. Quando você passar uma máquina para um novo projeto, peça ao suporte uma reinstalação limpa. Só fazemos com a sua autorização, já que isso apaga o Mac.
Fixe sua toolchain
A mesma versão do Xcode em todas as máquinas de um pool, atualizada de propósito. Uma farm em que as máquinas vão divergindo produz builds que passam em um runner e falham em outro.
Observe a fila, não a CPU
Gráficos de CPU em máquinas de build sempre assustam e raramente indicam o que fazer. O tempo de espera na fila diz quando adicionar hardware.
Tenha uma reserva
Com dez máquinas, uma fora do ar deve ser um incômodo, não um incidente.
Como isso se compara a nuvens de Mac orquestradas
Plataformas de orquestração colocam um agendamento no estilo Kubernetes por cima de macOS virtualizado, e você paga por essa camada. Ela é realmente útil se você precisa de VMs efêmeras criadas por job em grande escala.
A maioria das equipes com menos de vinte máquinas não precisa. Elas precisam de alguns Macs rápidos e dedicados que fiquem no ar, mantenham os caches aquecidos e custem o mesmo valor todo mês. É isso que uma farm dedicada é: máquinas físicas inteiras a preço fixo, com o cache de build ainda lá para o próximo job, em vez de ser jogado fora junto com a VM.
Você também tem a diferença que aparece às 2 da manhã antes de um release: quem cuida dos racks responde o e-mail.
Como montar uma farm
Diga como ela deve ser: quantas máquinas, quais modelos, o que precisa estar instalado. Sob pedido, configuramos as máquinas com a sua versão do Xcode, o agente do runner, chaves e certificados, e cuidamos das reinstalações e das mudanças na frota conforme você precisar, cada uma com a sua autorização.
Em estoque hoje
Estes estão no rack agora. Escolha um, veja o que vem com ele e crie sua conta só quando fizer o pedido.
Verificando os racks
Seu próprio Mac mini
Escolha uma configuração. Quando uma não estiver disponível, deixe seu e-mail e escrevemos no dia em que ela for para o rack.
Anual: pelo menos 19% menos do que pagar por mês
Perguntas
- Posso ter vários Mac mini em uma só conta MacDuty?
- Sim. Uma conta comporta quantas máquinas você precisar, com uma fatura, para você ou para cada uma das suas empresas.
- Quantos Mac mini eu preciso para CI de iOS?
- Dimensione pelos builds simultâneos no pico, não pelo tamanho da equipe. Uma a duas máquinas para um único app, três a cinco para alguns apps com builds em paralelo, seis a vinte para um release train ou uma agência.
- Posso rodar vários runners de CI em um Mac mini?
- Sim. A máquina é inteiramente sua. Um runner por máquina para builds pesados do Xcode; dois ou três para jobs leves, limitados por I/O, em uma máquina de 32 GB.
- Equipes ou clientes diferentes podem ter máquinas separadas?
- Sim. As máquinas recebem labels e ficam separadas por projeto ou por cliente, com as próprias credenciais, em uma única conta e fatura.
- Uma farm de Mac dedicada sai mais barata do que uma nuvem de Mac orquestrada?
- Para carga de CI constante, sim: um preço mensal fixo por máquina física, sem cobrança por hora e sem camada de orquestração para pagar.
A seguir