Preview Environment Simulator
See how a pull request becomes a temporary copy of your app—complete with a private URL, safe test data, review checks, and automatic cleanup.
Category: DevOps
What You Will Learn
- How a pull-request label or Git declaration creates preview-environment intent
- How GitHub Actions, Argo CD ApplicationSets, Helm, and Kubernetes reconcile that intent
- How single-service previews differ from coordinated full-stack UAT environments
- How data strategy, resource sizing, access policy, and TTL affect cost and isolation
- How to diagnose branch mismatches, quota failures, missing secrets, DNS issues, and revision drift
- Which health, test, revision, configuration, and cost evidence should return to a pull request
- Why teardown must be automatic, observable, and driven through the same control path as creation
Topics covered: preview environments, gitops, kubernetes, argo cd, github actions, pull requests, uat, platform engineering, ephemeral environments, educational, interactive
// simulator
Preview Environment Simulator
See how a pull request becomes a temporary copy of your app—complete with a private URL, safe test data, review checks, and automatic cleanup.
Turn a pull request into a real environment
Follow one control path from developer intent to a live URL—and back to cleanup.
- 1Open PR
- 2Publish image
- 3Deploy
- 4Review
- 5Clean up
Ask for a preview
Add the preview label to begin.
Desired state → running evidence
One control path from pull request to preview URL
Developer intent
PR #184 + preview label
your turnAdd the label to request a preview
Build image
waitingCI packages the change
Push registry
waitingcheckout:sha-8f3c2a1
GitOps control plane
Automation repository
waitingAutomatically detects the labeled PR
Argo CD ApplicationSet
waitingCommit and image digest become Helm values
Ephemeral environment
Kubernetes namespace
waitingpreview-pr-184 · isolated boundary
WEB
waitingapplication
API
waitingapplication
Redis
waitingisolated cache
Review URL
waitingDNS · ingress · TLS · revision
Inspect the generated evidence
Preview request
environment: checkout-uat-184 trigger: fullstack-preview repositories: web: feature/checkout-v2 api: feature/checkout-v2 data: masked-snapshot ttl: 8h
Evidence returned to PR #184
- Private URL
- https://checkout-uat-184.preview.example.dev
- Running commit
- 8f3c2a1
- Safe data
- Masked stage snapshot snap-20260804
- Automatic expiry
- 8 hours
DevOps Daily × Atomsized
Inspired by a real preview-platform workflow
This simulator was developed in partnership with Atomsized and is inspired by their published approach to pull-request previews and coordinated full-stack UAT environments. The simulation is educational: it teaches the platform decisions and control-plane mechanics rather than reproducing a vendor product.
Read Atomsized's preview environments case studyA preview environment is a lifecycle, not a URL
1. Declare intent in Git
A label is enough for a single-service preview. A coordinated stack needs an explicit declaration of repositories and branch overrides so every revision is reviewable.
2. Return evidence to the PR
A green URL is incomplete evidence. Reviewers need the deployed commit and image, health gates, tests, configuration differences, logs, access policy, and expiry.
3. Reconcile deletion too
Closing a PR, removing its label, deleting its declaration, or reaching its TTL should remove ingress, workloads, data, and namespaces without leaving orphaned cost behind.
What a platform team must decide
Define who may open the environment, how preview secrets are sourced, whether data is synthetic or masked, which readiness gates block review, how DNS and certificates are issued, and which quota, TTL, budget, and orphan alerts enforce cleanup. These policies turn an ad hoc deployment script into a dependable internal platform capability.
Try next
// simulator
How Docker Works Under the Hood
Watch what really happens when you run docker run -p 8080:80 nginx, one layer at a time. Step down the whole stack: the CLI, the daemon, the registry pull, containerd, the OCI runtime bundle, runc, the running container, and the shared Linux kernel. Every stage shows the real low-level command you can run yourself, so it doubles as a tour of the primitives that make a container: namespaces, cgroups, and runc. A container is not a small VM, and this shows you why.
// simulator
Webhook Delivery Simulator
Send a webhook through a production-style delivery flow. Change endpoint responses, watch retries and backoff, inspect real HMAC-SHA256 signatures, and redeliver the same message to see receiver-side deduplication.
// simulator
Agentic Loop Simulator
Watch a coding agent run an agentic loop, one step at a time. A planner, a builder, and a judge cycle through plan, build, verify, and repeat until the goal is met. Toggle the separate judge off to see why an agent grading its own work ships confident bugs. An animation-first, interactive explainer of loop engineering and how it maps to Claude Code.