I'll think twice before using GitHub Actions again
GitHub Actions and Monorepos
- Many argue GitHub Actions is a poor fit for complex monorepos and conditional workflows; required status checks don’t play well with jobs that only run when certain paths change.
- Others counter that the core problem is monorepo complexity, not Actions itself, and suggest using monorepo tools (Bazel, Nx, turborepo, “meta”) plus a thin CI wrapper.
- Workarounds include “no-op” jobs or a final “all-done” job that inspects upstream job results so required checks can pass even when some jobs are skipped.
YAML, Logic, and “CI as Orchestrator”
- Strong sentiment that YAML “programming” doesn’t scale. People describe GitHub, GitLab, Azure DevOps, etc. as encouraging Turing-complete behavior in YAML with poor tooling.
- Popular pattern: keep CI config as a thin orchestrator calling repo-local scripts (
deploy.sh, Make/Just/Rake tasks, etc.). All real logic lives in tested scripts that run identically locally and in any CI. - Some note that caching, sharding, artifacts, and provider‑specific features inevitably push logic back into CI config.
Local Development and Debugging
- A major pain point is lack of an official way to run GitHub Actions locally. Third‑party tools (
act, others) are seen as helpful but incomplete or behaviorally different from real runners. - Many describe “search and deploy” debugging: tiny commits and force‑pushes just to see if YAML changes work.
- Several vendors (Buildkite, CircleCI, GitLab via gitlab-ci-local, Nix-based setups, Earthly, Dagger) are praised for better local or isomorphic pipelines.
Performance, Reliability, and UX
- GitHub-hosted runners are often called slow and flaky; jobs sometimes hang or fail randomly and pass on rerun.
- Others find Actions “good enough” and more productive than older systems (Jenkins, Travis, TeamCity) due to easy setup and marketplace actions.
Security, Secrets, and Vendor Lock‑In
- Actions’ secret handling and inherited permissions are seen as easy to misuse; role/OIDC-based cloud auth is recommended but underused.
- Several argue that deep coupling to any one CI (via proprietary DSLs and marketplace plugins) leads to lock‑in; scripts + generic runners are viewed as a safer long‑term architecture.