Loading...
Loading...
Build a GitHub Actions workflow for Python APIs that runs uv sync, ruff, pytest, builds a Docker image, and pushes to ghcr.io on tag. Go from push-and-pray to a pipeline your team can rely on.
Message a mentor about fit, prerequisites, or where to start. Replies come on WhatsApp, usually within a day.
Engineers are learning here from
Ship a production-grade workflow that runs uv sync, ruff, pytest, builds a Docker image, and pushes to ghcr.io on tag. Go from push-and-pray commits to a main branch you can trust every hour of the day.
Stop pushing to main and hoping. Build a workflow that tests, lints, types, builds, and ships your Python API.
What you'll ship
What you'll learn
Curriculum
The push-and-pray problem
Understand what CI and CD actually mean, why broken main is expensive, and what you are about to build.
Your first workflow
Write a ci.yml from scratch. Install uv, sync dependencies, and run the test suite on every push.
Quality gates
Add linting, type checking, and coverage thresholds so regressions fail loudly instead of sneaking through.
Build and publish
Turn green code into a Docker image, build for multiple architectures, and push it to ghcr.io with useful tags.
Release and deploy
Tie the pipeline off with a tag-driven release workflow and a deploy step that moves the artifact into production.
Who it's for
Your team still merges without running the full suite, and nobody wants to be the person who breaks main on a Friday.
You know how to train the model, but packaging the API as a reproducible Docker image keeps tripping you up.
You are the only person on the repo, so you are also the only person to blame when a typo takes the API down at 2am.
FAQ
No. We deploy with plain ssh by default and mention kubectl and Argo/Flux as alternatives. The workflow works for a VPS, a droplet, or a managed container service.
uv resolves and installs faster than pip by a wide margin, and the lockfile is designed for reproducible CI. Every workshop repo on learnwithparam uses it, so the patterns transfer.
The workflow structure (jobs, caching, ghcr.io publishing, tag-based releases) is language-agnostic. Swap the uv and pytest steps for your toolchain and the rest stays the same.
Finish the CI basics (workflow file, uv sync, pytest) and you have a ci.yml you can paste into your project today. The quality gates and release pipeline make it production-ready.
Pricing
Subscribe to Pro for every paid course, or buy just this one.
Unlock this course and every paid course plus workshop replays. One subscription.
You save 54% with regional pricing
One-time purchase. Lifetime access to every lesson, exercise, and update.
You save 41% with regional pricing
Still deciding? Ask Param a question
Build the pipeline once. Reuse it on every Python repo you touch.
CI/CD for Python APIs with GitHub Actions
$29 one-time