How to deploy with the CI/CD panel

The new flow replaces ./scripts/deploy-remote.sh for everyday deploys.

·3 min read

Prerequisites

You need the superadmin role and to be on a desktop browser (mobile works but each destructive action requires an extra confirm step).

Trigger a deploy

  1. Push your changes to main from your local machine. (Version-bump still happens via npm version locally.)
  2. Go to /admin/operations/deploys.
  3. Click Configure deploy →. The modal opens with a dry-run preview.
  4. Pick services to rebuild. Default ref is origin/main HEAD — pick a recent SHA from the dropdown if you want commit-pinned.
  5. Check pending migrations to apply (atomic with the build — failure aborts before docker build runs).
  6. Hit Deploy →. The page redirects to /admin/operations/deploys/<runId> with a live log streaming via SSE.

Cancel, rollback, replay

Cancel works during queued, fetching, migrating, or building phases. Once recreating starts, the cancel button greys out — wait for it to finish or use Rollback instead.

Rollback redeploys the previous image (no rebuild) in ~8 seconds. Available on any finished run with previousImageTags recorded.

Replay re-runs the same payload (services + commit + migrations). Useful after fixing a bad commit and pushing to main.

Editing .env

The Env tab shows a textarea + live unified diff. Secret values are masked. Save creates a timestamped backup — last 20 are kept. Restart is not automatic: use the Containers tab to restart affected services after saving.

Stop-the-world freeze

Click ⏸ Freeze deploys with a reason. New builds, rollbacks, migrations, and .env saves return HTTP 423 until cleared. Cancel + read endpoints stay live — useful when you want to halt deploys but still cancel an in-flight build.

Ready to automate your WhatsApp?