act
Para probar y depurar workflows de GitHub Actions en tu máquina sin hacer commit y push continuos.
Herramienta de línea de comandos para ejecutar tus workflows de GitHub Actions en local.
Notas y contexto
Qué es
act es una herramienta de línea de comandos, escrita en Go y mantenida por el proyecto nektos, que ejecuta tus workflows de GitHub Actions directamente en tu máquina. Lee los ficheros de .github/workflows/, usa la API de Docker para descargar o construir las imágenes necesarias y orquesta los contenedores reproduciendo el entorno (variables, sistema de ficheros) que ofrece GitHub. Es software libre con licencia MIT.
Para qué sirve
- Probar cambios en un workflow de CI/CD en local antes de subirlos al repositorio.
- Obtener feedback rápido sin tener que hacer commit y push una y otra vez para depurar.
- Usar tus GitHub Actions como ejecutor de tareas local, en lugar de un Makefile.
- Validar la sintaxis y el comportamiento de jobs y steps antes de que fallen en GitHub.
Cuándo usarlo
Resulta ideal cuando iteras sobre la configuración de GitHub Actions y el ciclo de commit, push y espera del runner se vuelve lento y frustrante. Requiere Docker en marcha, ya que cada acción se ejecuta dentro de un contenedor. Si no usas GitHub Actions o prefieres una herramienta de tareas independiente del CI, alternativas como just, Task o un Makefile clásico encajan mejor.
Ejemplo
Instalación con Homebrew y uso básico:
brew install act
# Ejecutar el workflow asociado al evento push (por defecto)
act
# Simular un evento concreto
act pull_request
# Listar los jobs disponibles sin ejecutarlos
act -l
# Ejecutar un job concreto
act -j build
También está disponible vía Chocolatey, WinGet, Scoop, Nix, MacPorts, la extensión de GitHub CLI y otros gestores.
Puntos clave
- Reproduce el entorno de GitHub Actions en local apoyándose en contenedores Docker.
- Soporta simular distintos eventos (push, pull_request, etc.) y ejecutar jobs individuales.
- Permite encadenar workflows como ejecutor de tareas reutilizando definiciones que ya tienes.
Ten en cuenta
Depende de Docker: sin un demonio de contenedores en marcha no funciona. Las imágenes que replican los runners de GitHub son aproximaciones, por lo que un workflow puede comportarse de forma ligeramente distinta a la del entorno real (versiones de herramientas preinstaladas, secretos, servicios externos). Algunas acciones que dependen de la infraestructura propia de GitHub pueden no funcionar igual en local.