Runners de macOS self-hosted para GitHub Actions
Un runner de macOS self-hosted es un Mac que tú controlas. Ejecuta tus jobs de GitHub Actions en lugar de las máquinas compartidas de GitHub. Registras el runner una vez y apuntas tu workflow a él. Tus builds se ejecutan en un hardware que sigue en caliente entre un job y otro.
Por qué los equipos dejan los runners de macOS alojados
GitHub cobra los runners de macOS a unos $0.062 a $0.102 por minuto. Es unas diez veces la tarifa de Linux. Ese precio vale para builds ocasionales, pero sale caro a un equipo que publica cada día. Cuando la máquina es tuya, cambian tres cosas:
- El coste deja de crecer con el uso. Una máquina con tarifa mensual fija cuesta lo mismo con 1.000 minutos que con 20.000.
- Las cachés se conservan. Las cachés de DerivedData, CocoaPods, SwiftPM y npm se quedan en el SSD local. Así los builds incrementales se saltan casi todo el trabajo que un runner nuevo repite.
- El entorno es estable. Fijas Xcode una vez. No tienes que adaptarte a las actualizaciones de imagen que otro decide.
Las contrapartidas, sin rodeos
El self-hosting también tiene inconvenientes. Los jobs se ejecutan uno tras otro en una sola máquina, así que las matrices grandes en paralelo necesitan más unidades. Si compilas pull requests de terceros, la seguridad del runner es cosa tuya. Por eso GitHub recomienda los runners self-hosted para repositorios privados. Además, alguien tiene que encargarse de las actualizaciones de macOS, de instalar Xcode y de que el servicio del runner siga vivo.
MacRun existe para quitarte esa última parte. Tú tienes la máquina dedicada y el precio fijo. Nosotros nos encargamos del aprovisionamiento, la supervisión y los borrados.
Cómo cambia el workflow
Registrar el runner es un comando que ejecutas una vez. Después, el cambio en el pipeline son dos líneas:
jobs: build: - runs-on: macos-latest + runs-on: [self-hosted, macOS, macrun-unit-01]
Todo lo demás se queda igual, incluidos tus steps, secrets y artifacts. Tienes el paso a paso completo en la guía de configuración.
Montarlo tú o alquilarlo
Si ya tienes hardware de Apple libre y alguien que lo mantenga, montar el runner en tu propio Mac es una opción razonable. Si prefieres no comprar hardware, ni instalarlo, ni vigilar el servicio del runner, una máquina dedicada alquilada te da los mismos números sin el trabajo de operaciones. Haz tus propias cuentas con la calculadora de costes.
Preguntas frecuentes
¿Qué es un runner de macOS self-hosted?
+
Es un Mac que tú controlas y que ejecuta tus jobs de GitHub Actions en lugar de las máquinas compartidas de GitHub. Instalas el agente del runner de Actions y lo registras en tu repositorio u organización. Luego lo eliges desde tu workflow con una etiqueta runs-on.
¿Un runner de macOS self-hosted es más barato que uno alojado en GitHub?
+
Depende del volumen. macOS alojado en GitHub cuesta unos $0.062 a $0.102 por minuto. Un runner dedicado a $139 fijos al mes se amortiza hacia los 2,242 minutos al mes con la tarifa baja. A partir de ahí, todo lo demás es gratis.
¿Son seguros los runners self-hosted en repositorios públicos?
+
GitHub recomienda los runners self-hosted para repositorios privados. Si no, la pull request de un fork puede ejecutar código no fiable en tu máquina. Si tienes que usarlos en repos públicos, exige aprobación para los workflows de forks. Y aísla el runner de todo lo que te importe.
¿Tengo que mantener el servicio del runner en marcha?
+
Sí, el runner tiene que estar en línea para recoger jobs. En MacRun, un daemon de supervisión vigila el servicio. Si se cae, lo reinicia en unos 30 segundos, así que no tienes que vigilarlo tú.