Skip to content

Core

Deploy pipeline

Trigger → claim → build → healthcheck → flip → retire.

Deploys are tracked as atomic database records, claimed by concurrent worker slots (NINEDEPLOY_DEPLOY_CONCURRENCY, default 1, max 8). The same service is never deployed concurrently. Stranded deployments from abrupt restarts are swept automatically on boot.

  • Trigger: manual UI button, webhook (HMAC + branch + watch-path globs + replay dedup), CLI command, cron schedule, or template hub.
  • Build: git clone with credentials (scrubbed after checkout) or Docker image pull with per-source registry credentials.
  • Blue-green: the new container starts on the shared network while the existing version continues handling live traffic.
  • Healthcheck: container liveness check plus HTTP probes against the container IP — isolated per attempt with hard timeouts.
  • Flip: Traefik's dynamic routing configuration is rewritten atomically; only then is the previous container retired.
  • Automatic rollback: on failure, the new container is destroyed and the previous healthy release keeps running.
  • Cancellation: in-flight builds can be cancelled at any stage, immediately stopping subprocesses and cleaning up containers.

The canonical guides live in the repository's docs folder.