Skip to main content
GitHub Actions Recipes — The Practical Guide

GitHub Actions Recipes — The Practical Guide

KU
• 4 min read•Updated •18 views

Most GitHub Actions pain comes from the same handful of jobs done wrong. This is the map: the recipes that make pipelines fast, secure, and cheap.

GitHub Actions is easy to start with and easy to get subtly wrong. The result is pipelines that are slow, leak secrets, rebuild everything on every push, or quietly burn through your minutes budget. Almost all of it comes down to a small set of jobs that everyone needs and few people set up correctly the first time. This guide is the map: the recipes that matter, what each one fixes, and where the full walkthrough lives.

A workflow is just YAML describing jobs, steps, and triggers. The leverage is in the details: what you cache, how you scope permissions, and how much you run in parallel.

yaml.yaml
name: ci
on: [push, pull_request]
permissions:
  contents: read          # least privilege by default; widen per-job only when needed
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci && npm test

Making it fast

Doing it securely

Common jobs

The starter checklist

Run through this once for any new workflow — each row is one recipe above, in the order it usually pays off:

RecipeFixesEffort
Restrictive top-level permissions:Over-privileged GITHUB_TOKENOne line
Cache dependenciesSlow, repeated installsA few lines
OIDC instead of static keysLong-lived cloud secrets sitting in the repoModerate — one-time role setup
Path filtersRunning the whole suite for a docs-only changeA few lines
Matrix buildsCopy-pasted jobs per version/OSModerate
Reusable workflowsThe same YAML duplicated across reposLarger, pays off at scale

The mental model

Every workflow improvement falls into one of three buckets: faster (cache, parallelize, skip unaffected jobs), safer (least-privilege permissions, scoped secrets, OIDC instead of static keys), or cheaper (fewer wasted minutes, right-sized runners). Set a restrictive permissions: block at the top, cache aggressively, and pin third-party actions to a commit SHA, and most problems never appear. Picking the platform itself is a separate decision, compared in best CI/CD platforms.

The call we'd make

Start every workflow from least-privilege permissions and a dependency cache, because those two lines fix the most common security and speed problems at once. Add OIDC before you ever paste a cloud key into a secret. Then reach for matrix builds, path filters, and reusable workflows as the repo grows. Each linked recipe is a focused fix; adopt them in that order and a GitHub Actions setup stays fast, secure, and cheap as it scales.

Explore topics:CI/CDDevOps
React
Share this post
KU

Kiril Urbonas

AI Engineer

553 articles
View all articles by Kiril Urbonas

You might have missed

Evergreen posts worth revisiting.