Mastering GitHub Actions
A hands-on GitHub Actions series that builds workflows up from a minimal example to advanced CI/CD pipelines, one concept at a time.
Some GitHub Actions workflows can look really complex, but this is often the result of incremental changes over time, which added more and more capabilities to the workflow.
With this series we’ll build up workflows starting from the most basic examples, to really complex and powerful ones. Hopefully this helps you understand GitHub Actions better.
Articles in this series
Introduction Learn how to automate your development workflows, from testing to deployment, with GitHub Actions. Triggers Learn how to set up GitHub Action triggers for push, pull requests, scheduled events, and manual runs to streamline your CI/CD pipeline. Pull Request vs Pull Request Target Understand the differences between the `pull_request` and `pull_request_target` triggers in GitHub Actions. Jobs and Steps Understand the relation between jobs and steps to automate your CI/CD pipeline across various environments. Conditions Master conditional logic in GitHub Actions: control job and step execution with if statements, expressions, and context variables to build smarter CI/CD workflows. Concurrency Stop wasting CI minutes on redundant runs. Learn the GitHub Actions concurrency keyword: cancel superseded PR runs, serialize deploys safely, and avoid the classic group-key gotchas. Environment Variables Learn about the various environment variables available in GitHub Actions, how to use them to customize your workflows, and how to set custom variables yourself. Passing Data Between Jobs Learn the modern way to pass data between steps and jobs in GitHub Actions using step outputs, job outputs, $GITHUB_ENV, and artifacts — with copy-pasteable examples. The Matrix Strategy Understand the matrix strategy in GitHub Actions and how to use it to run jobs across multiple configurations. Caching Dependencies Learn how to use caching in GitHub Actions to speed up your workflows by caching dependencies and other frequently reused files. Cache Keys & Scopes A deep dive into GitHub Actions caching: how to build a good cache key with hashFiles, how restore-keys fallback works, cache immutability, branch scope rules, and the 10 GB limit with LRU eviction. Docker Layer Caching Speed up Docker image builds in GitHub Actions by caching layers with Buildx. Compare the gha, registry, inline, and local cache backends with copy-paste YAML examples. Environments Learn how to isolate secrets and manage different stages for your GitHub Actions workflows using environments. Triggering a Workflow from Another Workflow Learn how to trigger a workflow from another workflow, even from another repository, using a GitHub App token and not personal access tokens. Debugging Learn how to debug GitHub Actions, using the Act docker image or an interactive session into the live runner instance. Larger Runners Learn how to use larger custom GitHub Actions runners to speed up your workflows. Self-hosted Runners Self-hosting GitHub Actions runners can provide more control over the environment and potentially reduce costs compared to using GitHub-hosted runners. Here are some solutions for setting up self-hosted runners. Actions Runner Controller on Kubernetes with MicroK8s A step-by-step guide to setting up GitHub Actions Runner Controller (ARC) on a Kubernetes cluster using MicroK8s. Learn how to install ARC, configure a GitHub App for authentication, and deploy scalable self-hosted runners for your GitHub Actions workflows.