ci-cd
CI/CD pipelines
Ship safely on every push — pipelines, caching, and tests that gate a merge, with GitHub Actions.
Start track →Start from zero
What CI and CD are, and the pipeline mental model.Pipelines
A workflow is jobs of steps, triggered by events, cached and parallelized.Testing in CI
Balance the test pyramid and make the right checks block a merge.Delivery and deploy
Get a tested artifact safely into production.Release automation
Version and release without manual toil.Supply chain
Trust what you ship.Scaling CI
Keep CI fast as the repo grows.Putting it together
Design a complete pipeline end to end.Workflows deep
A workflow is an event-driven graph of jobs; triggers, contexts and expressions decide what runs, where, and with what data.Authoring actions
An action packages reusable steps three ways — composite, JavaScript, Docker — each with a different runtime, speed and portability tradeoff.Security and OIDC
CI is a privileged execution environment: scope GITHUB_TOKEN, prefer OIDC over long-lived cloud keys, and never trust untrusted input in a run step.Runners and scale
Runners are where cost and speed live: hosted vs self-hosted, autoscaling, and cache strategy decide CI throughput and the bill.Release engineering
Release engineering turns a green pipeline into a governed delivery: versioning, changelogs, and environment gates make a deploy auditable and reversible.Build with this track
Guided projects that exercise what you learn here.
Threat-Model and Harden a Small App
Take a small app you fully own and run it through the loop a real security engineer lives in: first map how an attacker would actually break it, then close those paths one by one. You build an attack tree against your own service, then fix authentication, authorization, secrets handling, security headers, and input validation — and write down which fix kills which branch of the tree. This is the whole craft of defensive security in miniature: not a checklist, but a chain from threat to mitigation you can defend out loud.
URL shortener at scale
Build a URL shortener that survives real traffic — then run it: deploy it, watch it, and work the incident when one hot link melts your cache.
Node.js, zero to senior
The runtime behind your backend — event loop, modules, async and streams — built up to senior depth.