Deployment Lifecycle
6 min read
Deployment Statuses
Every deployment moves through a series of statuses:
- pending: Deployment has been created and is queued
- building: Source code is being cloned and the container image is being built
- pushing: The built image is being pushed to the internal registry
- deploying: Kubernetes resources (Deployment, Service, IngressRoute) are being created or updated
- running: The application container is up and passing health checks
- failed: The deployment encountered an error at any stage (check logs for details)
- rolled_back: This deployment was replaced by a rollback to a previous version
Real-Time Progress
Staxa uses Server-Sent Events (SSE) to stream deployment progress to the dashboard in real-time. Each status transition fires an event with a timestamp and any relevant details (e.g., build log output, error messages).
You can also subscribe to these events programmatically via the API: GET /api/v1/tenants/{tenantId}/events with an Accept: text/event-stream header.
Rollbacks
If a deployment causes issues, you can roll back to any previous successful deployment:
- Go to the tenant detail page
- Find the service's deployment history
- Click Rollback on the deployment you want to restore
- A new deployment is created that re-uses the previous container image, with no rebuild needed
Rollbacks are fast because they skip the build step entirely. The previous image is already in the internal registry.
Resource Allocation
Each service within a tenant gets a guaranteed baseline and can burst up to a limit, based on the chosen size:
| Size | Guaranteed | Burst limit |
|---|---|---|
| Small | 25m CPU, 64Mi RAM | 500m CPU, 512Mi RAM |
| Medium | 50m CPU, 128Mi RAM | 1 CPU, 1Gi RAM |
| Large | 100m CPU, 256Mi RAM | 2 CPU, 2Gi RAM |
If your application exceeds its memory limit, the container is OOMKilled and restarted automatically. The sizes you can choose depend on your plan. See Resource Sizes & Health Checks.
Still have questions?
Email us and a person will answer, or look it up in the API docs.