Learn GitHub Actions

CI/CD and automation built into GitHub, driven by YAML workflows

18 lessons · 3 hours · 4 levels · covers GitHub Actions 2026 (checkout v7, ubuntu-24.04 runners)

GitHub Actions runs workflows defined as YAML files in your repository whenever something happens on GitHub: a push, a pull request, a schedule or a manual click. Teams use it to build and test every change, publish packages and deploy to the cloud. Because it lives next to the code and has a huge marketplace of reusable actions, it is the default CI/CD system for most projects hosted on GitHub.

Before you start

GitHub Actions builds on these; the tree links to the exact lessons you need.

How deep do you want to go?

1. EssentialsRead and write simple code, do the everyday basics6 lessons · 50 min in total
2. PracticalUse it productively at work, with the usual idioms11 lessons · 2 hours in total
3. AdvancedThe less common features, performance and trade-offs15 lessons · 3 hours in total
4. ExpertInternals and the edge cases experts know18 lessons · 3 hours in total

The GitHub Actions tree

GitHub ActionsWhat GitHub Actions isWhat GitHub ActionsisYour first workflow fileYour first workflowfileUsing actions from the MarketplaceUsing actions fromthe MarketplaceTriggers: push, pull_request, schedule, manualTriggers: push,pull_request, sched…Multiple jobs and needsMultiple jobs andneedsEnvironment and configuration variablesEnvironment andconfiguration varia…Expressions, contexts and if conditionsExpressions,contexts and if con…Secrets, GITHUB_TOKEN and permissionsSecrets,GITHUB_TOKEN an…Step outputs, job outputs and summariesStep outputs, joboutputs and summa…Matrix buildsMatrix buildsCaching dependencies and sharing artifactsCachingdependencies and…Sharing work: push and pullSharing work: pushand pullCreate or clone a repositoryCreate or clone arepository
Essentials and Practical shown (11 of 18 lessons); the full list is below. Click a lesson to read it.

All 18 lessons, in order

Workflow basics

  1. What GitHub Actions is · Essentials · 6 min

    Workflows, events, jobs, steps and runners: the five words that describe every GitHub Actions setup.

  2. Your first workflow file · Essentials · 10 min

    Write a CI workflow that checks out the code, installs dependencies and runs the tests on every push and pull request.

  3. Using actions from the Marketplace · Essentials · 8 min

    Call reusable actions with uses:, pass them inputs with with:, and pin them to a version you trust.

Triggers and jobs

  1. Triggers: push, pull_request, schedule, manual · Essentials · 10 min

    Control when a workflow runs with event filters on branches and paths, cron schedules and manual workflow_dispatch inputs.

  2. Multiple jobs and needs · Essentials · 8 min

    Split a workflow into parallel jobs and order them with needs to build a simple pipeline.

  3. Environment and configuration variables · Essentials · 8 min

    Set env at workflow, job and step level, read GitHub's default variables, and store non-secret settings as configuration variables.

Expressions, secrets and outputs

  1. Expressions, contexts and if conditions · Practical · 12 min

    Use ${{ }} expressions with the github, env, steps and needs contexts, and status functions like failure() in if conditions.

  2. Secrets, GITHUB_TOKEN and permissions · Practical · 12 min

    Store credentials as encrypted secrets, use the automatic GITHUB_TOKEN, and restrict its permissions.

  3. Step outputs, job outputs and summaries · Practical · 10 min

    Pass values between steps with GITHUB_OUTPUT and GITHUB_ENV, between jobs with job outputs, and write a run summary.

Matrices, caching and artifacts

  1. Matrix builds · Practical · 10 min

    Run one job definition across many combinations of OS, language versions and settings with strategy.matrix.

  2. Caching dependencies and sharing artifacts · Practical · 12 min

    Speed up builds with actions/cache or setup-* caching, and hand files between jobs or to people with artifacts.

Reuse and deployment

  1. Reusable workflows · Advanced · 12 min

    Share whole pipelines across repositories with workflow_call, typed inputs, secrets and outputs.

  2. Writing custom actions · Advanced · 14 min

    Package steps as a composite, JavaScript or Docker container action with an action.yml metadata file.

  3. Environments, approvals and concurrency · Advanced · 12 min

    Gate deployments with environments and required reviewers, and stop overlapping runs with concurrency groups.

  4. Keyless cloud deploys with OIDC · Advanced · 12 min

    Let workflows assume cloud roles with short-lived OpenID Connect tokens instead of stored access keys.

Security, runners and internals

  1. Workflow security: injection and untrusted code · Expert · 15 min

    Avoid script injection, the pull_request_target trap, unpinned actions and over-broad tokens.

  2. Self-hosted and larger runners · Expert · 12 min

    Run jobs on your own machines or autoscaled Kubernetes pods, select them with labels and groups, and keep them safe.

  3. How runs are created and executed · Expert · 12 min

    Which workflow file version runs for each event, how jobs are queued and expanded, and the limits that shape large pipelines.