- Build, test, and deploy code on pushes and pull requests.
- Run checks and analyses (linting, security scans, dependency updates).
- Orchestrate repository automations (comment bots, labeling, notifications).
- Schedule workflows or trigger them from webhooks and other GitHub events.

- Hosted infrastructure managed by GitHub (provisioning, scaling, and maintenance).
- Declarative workflows in YAML that live with your code (
.github/workflows/). - Built-in capabilities: dependency caching, artifact storage, and detailed logs.
- Automation reduces manual steps, lowers human error, and accelerates delivery.

- Workflow: an automated process defined in a YAML file stored in
/.github/workflows/. A repository can contain multiple workflows triggered by different events. - Job: a group of steps that runs on a single runner. Jobs run in parallel by default unless you specify dependencies with
needs. - Step: a single task in a job. Steps run sequentially within a job.
- Runner: the machine (virtual or physical) that executes a job. Runners are either GitHub-hosted or self-hosted.
Matrix strategy and parallel jobs
A common pattern uses a matrix strategy to run the same job across multiple OSes or versions. Each matrix entry becomes a separate job executed concurrently on its own runner.
Example: run tests on Ubuntu, macOS, and Windows
- GitHub provisions a separate runner for each matrix job concurrently (three runners in the example).
- Steps inside a job execute sequentially (checkout → setup → install → test).
- Each matrix job is evaluated independently: a matrix instance’s success or failure is reported separately. The overall workflow succeeds only when all required jobs complete successfully.
- You can view logs, step output, and artifacts for each job in the repository’s Actions tab.

Choose GitHub-hosted runners for convenience and low maintenance. Choose self-hosted runners when you need custom software, special hardware, or specific network access that hosted runners can’t provide.

- GitHub Actions docs: https://docs.github.com/actions
- Actions marketplace: https://github.com/marketplace?type=actions
- actions/checkout: https://github.com/actions/checkout
- actions/setup-node: https://github.com/actions/setup-node