Easy Deploy
Ship safely from the dashboard—choose a branch, run preflight checks, then deploy with instant rollback.
Easy Deploy (Branches, Preflight, Rollback)
Easy Deploy lets you ship from the dashboard with confidence: choose a Git branch, run Preflight checks, review what will change, and push the big button. If anything breaks, roll back instantly.
1) Pick a branch
- Go to Project → Deployments → Easy Deploy.
- Choose your Repository and Branch (e.g.,
main,release/1.2,hotfix/*). - Optional:
- Auto-deploy on push (watch this branch and deploy new commits)
- Require approval (hold until someone clicks Approve)
- Ignore CI-skip (force deploy even if commit says
[skip ci])
Use a dedicated release/* branch for Production. Keep
main wired to Staging for quick previews.
2) Preflight (dry-run safety)
Click Run Preflight. We simulate the deployment and surface blockers and warnings before any traffic moves.
What Preflight checks
- Detection — framework/runtime or Dockerfile resolution
- Build plan — cache hits/misses, estimated build time, artifact size
- Env & secrets — required variables present? secret refs resolvable?
- Ports & health — server binds
0.0.0.0and respectsPORT; readiness path set (e.g.,/readyz) - Databases — connection URLs exist; optional ping to mdx-service dbs
- Domains — certificate/validation state for custom domains
- Migrations (optional) — detect pending SQL files or migration scripts
Preflight shows Blockers (must fix) and Warnings (safe to deploy but review). We won’t let you deploy with blockers.
$ detect framework/runtime — Next.js / Django / Go / Dockerfile
3) Deploy
- Click Deploy. We build, package, and start the new revision.
- You get a Preview URL (TLS) immediately for smoke-testing.
- When health checks pass, we promote to active traffic.
Want a pause before traffic moves? Enable Approval Gate after build—great for manual QA on the Preview URL.
4) Rollback (instant safety net)
If the release misbehaves:
- Open Project → Deployments.
- Select the last healthy deployment → Rollback.
- Traffic switches back immediately; the broken revision is preserved for debugging.
Configuration (branch rules)
You can pre-configure Easy Deploy rules per environment:
- Branch — the default branch for this environment (e.g., Production →
release/*, Staging →main) - Auto-deploy on push — on/off
- Approval required — on/off
- Preflight strictness — block on warnings (paranoid) or only on blockers (default)
- Migration mode — run DB migrations automatically / ask first
- Health grace period — how long to wait before declaring failure
- Deploy lock — temporarily prevent deploys (maintenance window)
Staging: auto-deploy on every push to main. Production: require
approval, block on warnings, longer health grace period.
What counts as a blocker?
- Missing PORT binding or server bound to
localhostonly - Unresolved secrets or env vars required by your service
- Failing health check or no readiness path configured
- Database unreachable (when “ping DB in preflight” is enabled)
- Domain misconfigured (requested as mandatory in this environment)
Warnings include: large artifact size, high cold-start estimate, outdated runtime, low free disk, or near DB connection limits.
After deployment
- Logs — switch between Build and Runtime streams, filter by service
- Metrics — CPU/mem/disk/net + p50/p95/p99 latency if the runtime exports it
- Alerts — enable default recipes (error rate spike, p95 latency breach, conn % near max)
FAQ
Can I deploy from a specific commit?
Yes—use the Commit picker in Easy Deploy. We’ll build that SHA from GitHub.
What if two deploys start at once?
We auto-cancel the older in-flight build for the same environment, unless you disable this in Settings.
Can I canary or split traffic?
Advanced rollouts (percent traffic, region-by-region) are supported in the Rollout panel of a deployment. Easy Deploy defaults to “promote on healthy.”
Do I need the CLI?
No. Easy Deploy is dashboard-only. CLI support will arrive later.