We use analytics cookies.We use cookies to analyze site traffic and improve your experience.
Loading...
System Design Masterclass · Devops Cicd
Free preview: the first 2 parts of this 7-part lesson.
Already bought the course? Sign in to read the whole lesson.
this lesson is part of
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design courseread the rest of this lesson in
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design coursein Devops Cicd
This lesson is part of the full System Design Masterclass. Unlock it along with 769 other lessons for a one-time payment.
One-time payment by card or PayPal
Get Lifetime AccessOne-time payment: UPI, card or netbanking
Get Lifetime Access18 Foundation lessons are free, no payment needed. Try them now
It is easy and good
“It is really nice and good Please join the course”
A team needed to roll back to a version from two weeks ago. They ran docker pull myapp:v2.3.1. Image not found. The CI pipeline had been configured to push images to a local daemon on the build server, not to a registry. When the build server was recycled, all images were lost. Rollback was impossible without rebuilding from source, which required finding the exact commit, hoping dependencies had not changed upstream, and praying the build was still reproducible.
It was not. A transitive npm dependency had published a minor version that broke the build. The team spent 14 hours reconstructing a working build for a version that should have been a 30-second pull.
An artifact repository is a versioned, durable, access-controlled store for build outputs. Every build produces an artifact (Docker image, JAR, Go binary, npm package). That artifact is pushed to the repository with a version tag and a content-addressable digest. It is immutable: version 2.3.1 always contains the same bytes, forever. Rollback is instant. Pull the previous version.
| Artifact Type | Registries | When to Use |
|---|---|---|
| images | Docker Hub, ECR, GCR, GHCR, GAR | Container-based deployments |
| npm packages | npmjs.com, GitHub Packages, Verdaccio | JavaScript/TypeScript libraries |
| Python packages | PyPI, private Artifactory | Python libraries and tools |
| Java artifacts | Maven Central, Nexus, Artifactory | JVM ecosystem (JAR, WAR) |
| Go modules | Go , Artifactory | Go libraries |
| Helm charts | OCI registry, ChartMuseum | deployment packages |
| Generic binaries | Artifactory, S3 with versioning | Compiled binaries, tarballs |
Immutable tags are the single most important policy. Once v2.3.1 is pushed, it can never be overwritten. Use content-addressable digests (sha256:abc123) alongside tags for guaranteed identity. Docker's latest tag is mutable by design and should never be used in production pipelines.
Retention policies prevent storage costs from growing unbounded. A practical retention policy:
GitHub Container Registry (GHCR) added automatic retention policies in 2023. ECR has lifecycle policies. Artifactory has a retention engine. Without retention, a busy CI pipeline generating 50 images per day accumulates 18,000 images per year.