The open-source tool Act, which promises to let developers run GitHub Actions workflows locally, has sparked considerable discussion among developers who have encountered mixed results when attempting to use it. While Act aims to provide faster feedback cycles and replace traditional task runners like Make, many users report significant challenges when implementing it in real-world scenarios.
Act was designed with two primary goals: providing fast feedback for GitHub Actions workflow changes without requiring commits and pushes, and serving as a local task runner. The tool works by reading workflow files from the .github/workflows/
directory, using Docker to pull or build necessary images, and then executing the actions in containers configured to match GitHub's environment.
Platform Compatibility Issues
Users attempting to run Act on different hardware architectures face significant hurdles. One developer reported persistent failures when trying to debug CI issues on M-series Macs, highlighting the inherent platform mismatch between local environments and CI runners. Even using specialized images like those from catthehacker – which reportedly consume over 60GB uncompressed – failed to resolve compatibility problems.
Just this week I tried giving this another chance to debug some weird CI failures for ruby tests. I'm on M-series macs so there is an inherent platform mismatch... I was never able to get it running past the dry-run stage.
The platform compatibility issues extend beyond just Apple Silicon, with another significant limitation being Act's lack of support for Podman, an alternative container engine. Users report that attempts to discuss Podman compatibility are quickly dismissed, which some find unusual for an open-source project.
Act Key Features:
- Runs GitHub Actions workflows locally
- Uses Docker to simulate GitHub's execution environment
- Configures environment variables and filesystem to match GitHub
- Requires Go tools 1.20+ for building from source
Common Issues Reported:
- Platform compatibility problems (especially on M-series Macs)
- No Podman support
- Large container images (up to 60GB uncompressed)
- Difficulty with environment variables and secrets
- Challenges with workload identity federation
- Requires workflow modifications for local execution
Configuration Complexity
Even when the tool runs successfully, developers face challenges with environment configuration. Many CI workflows depend on environment-specific variables and secrets that must be reconfigured locally. While Act does offer solutions for loading secrets from files, implementing workload identity federation and other advanced authentication mechanisms locally presents additional complexity.
Workflows that use GitHub's OpenID Connect (OIDC) tokens for accessing cloud resources like AWS require special conditional logic to function properly in both GitHub and local environments. This necessitates modifications to workflow files specifically to accommodate local testing.
The Reality of Local CI Simulation
The consensus among many developers is that attempting to run complex CI workflows locally may be fundamentally problematic. One commenter described it as a fairly hopeless enterprise except for fully containerized workflows. Even then, reproducing CI-specific environment variables and artifact-sharing between tasks remains challenging.
Some developers suggest that rather than focusing on perfect local replication, a better approach might be tools that facilitate remote builds without requiring git pushes, combined with SSH access to inspect the actual build environment. This approach acknowledges the inherent differences between local and CI environments while still providing improved debugging capabilities.
Despite these challenges, some users report that Act has helped them move the bar forward in their development workflows, suggesting that even with its limitations, the tool provides value for certain use cases and environments.
The discussion around Act highlights a broader issue in the GitHub Actions ecosystem: while GitHub has built a comprehensive CI/CD platform, the debugging tools have largely been left to the community to develop. This gap between platform capabilities and debugging tools represents an opportunity for either GitHub or third-party developers to create more robust solutions.
Reference: act