GitHub Actions Are a Problem
Many developers praise GitHub Actions for free, convenient CI/CD across multiple platforms, but increasingly criticize it for opaque workflows, slow feedback loops, YAML complexity, and vendor lock-in. Commenters argue that core build and deploy logic should live in regular scripts that can be run locally or on any CI system, with Actions used only as thin orchestration. A range of alternatives and workarounds are mentioned — from tools like Dagger, Earthly, Garden, and `act` to self-hosted runners and generic workflow engines — all aiming to regain portability, testability, and control over pipelines.
Perceived Problems with GitHub Actions
- YAML workflows become complex, hard to debug, and not easily testable locally.
- Strong reliance on third‑party actions makes behavior opaque and increases vendor lock‑in.
- Terminology is confusing (actions vs workflows), and the runner implementation is seen as convoluted, with reports of odd behaviors and exit codes.
- Feedback loop is slow: needing commits and remote runs to iterate on pipeline logic is widely disliked.
- Some consider Actions “good enough” but inferior in conceptual clarity to simpler systems like GitLab CI.
Workarounds and Recommended Practices
- Keep YAML “thin”: use it mainly for triggers and orchestration; put real logic into scripts, Make/just targets, Magefiles, Bazel, etc.
- Ensure all CI steps can run locally with the same commands used by CI.
- Prefer local scripts and containers over heavy reusable actions; some avoid all but basic setup actions.
- Use Docker images or devcontainer images as the canonical environment for both local and CI runs.
- Centralize common logic via shared scripts or DSLs that compile to CI YAML; treat CI as a glue layer.
Local Execution and Tooling Gaps
- Strong demand for a first‑party way to run GHA locally; current self‑hosted runners still require commits and remote execution.
actand related emulators help some workflows but are described as incomplete, brittle, and hard to debug for complex pipelines.- Reverse‑shell/debug actions (e.g., tmate) are praised for troubleshooting on actual runners.
Vendor Lock‑in and Platform Concerns
- Actions’ ecosystem and free/cheap hosted runners (especially for Windows/macOS) are seen as a powerful lock‑in mechanism.
- Some argue GitHub’s CI monetization disincentivizes fully local, free runners.
- Others emphasize GitHub’s broader feature set and network effects as the primary “stickiness.”
Alternative CI/Workflow Approaches
- Multiple projects aim at CI‑agnostic or “pipelines as code” solutions (Dagger, Earthly, Garden, Windmill, Cirrus CLI, Cicada).
- Jenkins’ Groovy DSL and shared libraries are cited as a better abstraction model than raw YAML.
- Attempts to build universal workflow/CI engines face leaking abstractions, environment variance, and high migration costs.
Broader Reflections on CI/CD Complexity
- Many see CI pipelines as overcomplicated workflow engines repeatedly reinvented.
- There is agreement that deployments should be auditable, scriptable, and not entirely tied to a single CI provider.