GitHub Actions

CCCFreemium

Infra · Build

CI/CD in the repository; the only path to production in an agent-run codebase.

What it is

GitHub Actions runs workflows defined in YAML files under .github/workflows in response to repository events: a pull request opened, a push to main, a tag, a schedule, or a manual workflow_dispatch with inputs. Jobs run on hosted Linux, macOS and Windows runners or your own machines, and a marketplace of reusable actions covers checkouts, caching, language setups and deploys. Environments add required reviewers and scoped secrets, so "production" can require a human click while "staging" deploys automatically.

For public repositories minutes are free; private repositories get a monthly allowance on free and paid plans and pay per minute beyond it.

Where it fits in the AI OS

Build, the gate between an agent's branch and a live system. When several agents open pull requests a day, the pipeline is the reviewer that never gets tired: lint, type check, build, smoke test, deploy to staging. In the Work OS view, it is also where the deploy decision becomes a recorded event rather than a laptop command.

Insider notes

members

How Serge's stack uses it

The rule in the project is "deploy = GitHub Actions, never wrangler deploy by hand from a laptop." .github/workflows/ci.yml runs checks on every PR; a push to main deploys to staging on stage.bulaev.ai and runs a smoke check; production is a workflow_dispatch with a vX.Y.Z tag, run only after staging is verified. Secrets (Cloudflare API token and account id) live in GitHub secrets, and a Linear issue moves to Done only after the deploy is verified against the live site, not when the build goes green.

Setup in 5 minutes

  1. Create .github/workflows/ci.yml with on: [pull_request, push] and one job: actions/checkout@v4, actions/setup-node@v4 with cache, npm ci, npm run lint, npm run build.
  2. Push a branch and open a PR; watch the check appear.
  3. Add a second job gated on github.ref == 'refs/heads/main' that runs npx wrangler deploy with CLOUDFLARE_API_TOKEN from secrets.
  4. Create a production environment with a required reviewer and a workflow_dispatch trigger that takes a tag input.
  5. Turn on branch protection for main: require the check, require a PR.

Alternatives

  • GitLab CI — the same idea if your code lives on GitLab.
  • Cloudflare Workers Builds — Cloudflare's own git-connected builds; fewer knobs, no matrix jobs.
  • Buildkite / CircleCI — when you outgrow hosted runners.
  • Woodpecker / Gitea Actions — for self-hosted git backends.