Configurando un Runner de GitHub Actions en un Mac Mini (Apple Silicon)
GitHub Actions es una plataforma poderosa de CI/CD que te permite automatizar tus flujos de trabajo de desarrollo de software. Aunque GitHub ofrece runners hospedados, los runners auto-hospedados proporcionan mayor control y personalización para tu configuración de CI/CD. Este tutorial te guía a través de la configuración y conexión de un runner auto-hospedado en un Mac mini para ejecutar pipelines de macOS.
Prerrequisitos
Antes de comenzar, asegúrate de tener:
- Un Mac mini (regístrate en Macfleet)
- Un repositorio de GitHub con derechos de administrador
- Un gestor de paquetes instalado (preferiblemente Homebrew)
- Git instalado en tu sistema
Paso 1: Crear una Cuenta de Usuario Dedicada
Primero, crea una cuenta de usuario dedicada para el runner de GitHub Actions:
# Crear la cuenta de usuario 'gh-runner'
sudo dscl . -create /Users/gh-runner
sudo dscl . -create /Users/gh-runner UserShell /bin/bash
sudo dscl . -create /Users/gh-runner RealName "GitHub runner"
sudo dscl . -create /Users/gh-runner UniqueID "1001"
sudo dscl . -create /Users/gh-runner PrimaryGroupID 20
sudo dscl . -create /Users/gh-runner NFSHomeDirectory /Users/gh-runner
# Establecer la contraseña para el usuario
sudo dscl . -passwd /Users/gh-runner tu_contraseña
# Agregar 'gh-runner' al grupo 'admin'
sudo dscl . -append /Groups/admin GroupMembership gh-runner
Cambia a la nueva cuenta de usuario:
su gh-runner
Paso 2: Instalar Software Requerido
Instala Git y Rosetta 2 (si usas Apple Silicon):
# Instalar Git si no está ya instalado
brew install git
# Instalar Rosetta 2 para Macs Apple Silicon
softwareupdate --install-rosetta
Paso 3: Configurar el Runner de GitHub Actions
- Ve a tu repositorio de GitHub
- Navega a Configuración > Actions > Runners
- Haz clic en "New self-hosted runner" (
https://github.com/<username>/<repository>/settings/actions/runners/new
) - Selecciona macOS como imagen del runner y ARM64 como arquitectura
- Sigue los comandos proporcionados para descargar y configurar el runner
Crea un archivo .env
en el directorio _work
del runner:
# archivo _work/.env
ImageOS=macos15
XCODE_15_DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
- Ejecuta el script run.sh en tu directorio del runner para completar la configuración.
- Verifica que el runner esté activo y escuchando trabajos en la terminal y revisa la configuración del repositorio de GitHub para la asociación del runner y el estado Idle.
Paso 4: Configurar Sudoers (Opcional)
Si tus acciones requieren privilegios de root, configura el archivo sudoers:
sudo visudo
Agrega la siguiente línea:
gh-runner ALL=(ALL) NOPASSWD: ALL
Paso 5: Usar el Runner en Flujos de Trabajo
Configura tu flujo de trabajo de GitHub Actions para usar el runner auto-hospedado:
name: Flujo de trabajo de muestra
on:
workflow_dispatch:
jobs:
build:
runs-on: [self-hosted, macOS, ARM64]
steps:
- name: Instalar NodeJS
run: brew install node
El runner está autenticado en tu repositorio y etiquetado con self-hosted
, macOS
, y ARM64
. Úsalo en tus flujos de trabajo especificando estas etiquetas en el campo runs-on
:
runs-on: [self-hosted, macOS, ARM64]
Mejores Prácticas
- Mantén tu software del runner actualizado
- Monitorea regularmente los logs del runner para problemas
- Usa etiquetas específicas para diferentes tipos de runners
- Implementa medidas de seguridad apropiadas
- Considera usar múltiples runners para balanceo de carga
Solución de Problemas
Problemas comunes y soluciones:
-
Runner no conectando:
- Verifica conectividad de red
- Verifica validez del token de GitHub
- Asegúrate de permisos apropiados
-
Fallas de construcción:
- Verifica instalación de Xcode
- Verifica dependencias requeridas
- Revisa logs del flujo de trabajo
-
Problemas de permisos:
- Verifica permisos de usuario
- Verifica configuración de sudoers
- Revisa permisos del sistema de archivos
Conclusión
Ahora tienes un runner auto-hospedado de GitHub Actions configurado en tu Mac mini. Esta configuración te proporciona más control sobre tu entorno de CI/CD y te permite ejecutar flujos de trabajo específicos de macOS de manera eficiente.
Recuerda mantener regularmente tu runner y mantenerlo actualizado con los últimos parches de seguridad y versiones de software.