Lesson 1 · CI/CD & GitHub Actions fundamentals
What CI/CD is & why
The machine that turns a git push into a tested, running deployment — and this repo's specific shape.
Your win: define CI vs CD precisely, explain push-based vs GitOps delivery, and — the part that surprises people — trace how this repo actually gets your code to production (a merge does not deploy directly).
CI and CD — two different promises
| Term | The promise |
|---|---|
| CI — Continuous Integration | every change is automatically built and tested on merge, so integration bugs surface in minutes, not at release. |
| CD — Continuous Delivery | every change that passes CI is ready to release — a human clicks deploy. |
| CD — Continuous Deployment | every change that passes CI releases automatically — no human in the loop. |
Push-based vs GitOps
There are two ways to get desired state into a cluster:
- Push-based — the CI/CD pipeline runs the deploy
(
helm upgrade/skaffold deploy) from a workflow. The cluster changes only when a deploy runs. - GitOps (pull-based) — a controller in the cluster (Argo CD, Flux) watches git and continuously reconciles the cluster to match it.
skaffold deploy (=
helm upgrade --install, Course 3) against GKE. The consequence you met in the
Helm course: the cluster only reconciles when a deploy runs, so a manual
kubectl edit persists until the next deploy overwrites it (drift). Push-based is
simpler to reason about; GitOps self-heals drift. Know the trade-off.
How your code actually ships here (the surprise)
So merging cuts a release tag; a scheduled cron (every two
hours on weekdays) picks up the latest tag, builds it, and auto-deploys to
staging. Production is a manual workflow_dispatch — a
human triggers it. That makes this repo continuous deployment to staging, but
continuous delivery (manual) to prod — the mix from the callout above, made concrete.
GitHub — Understanding GitHub Actions + the CI/CD guide
The CI/CD concepts, and the workflow model this course builds on.
→ docs.github.com — Understanding GitHub Actions
→ github.com — What is CI/CD?
Check yourself (from memory)
Q1. Continuous Delivery differs from Continuous Deployment by…
Q2. This repo's delivery is push-based, meaning…
skaffold deploy/helm
upgrade. GitOps (Argo/Flux) would pull-and-reconcile instead.
Q3. After you merge to develop, your change reaches staging…
skaffold deploy/helm
upgrade; GITOPS = a controller PULLS git + reconciles (self-heals drift). REPO CHAIN: a
MERGE DOES NOT DEPLOY — push to develop → tbd.create_release_tag → a 2h cron
(Mon–Fri) picks the latest tag → tbd.build → tbd.deploy → skaffold
deploy. Staging = cron-AUTO; PROD = manual workflow_dispatch. So: CDeployment
to staging, CDelivery (manual) to prod.