Deploys¶
A deploy is one immutable build + rollout. Each git push paas main produces a new deploy with its own image SHA, its own SBOM, and its own canary rollout.
Anatomy of a deploy¶
[git push] → Tekton pipeline → Paketo buildpack → image → Argo Rollouts → ready
(build) (compile) (push (canary)
Harbor)
| Stage | Tool | Output |
|---|---|---|
| Build | Tekton + Paketo | OCI image, SBOM, CVE report |
| Push | Harbor (private registry) | registry.di2amp.com/<org>/<app>:<sha> |
| Rollout | Argo Rollouts | Canary 10% → 25% → 50% → 100% with health gate |
| Verify | nginx + readiness probe | HTTP 200 on / (configurable) |
Rollout strategies¶
The default is rolling canary (10% → 100% over 5 min). You can switch:
# paas.toml
[deploy]
strategy = "blue-green" # or "canary", "rolling"
canary_steps = [10, 25, 50, 75, 100]
flowchart TD
A[git push] --> B{strategy}
B -->|rolling| C[replace pods gradually]
B -->|canary| D[10% → 25% → 50% → 100%]
B -->|blue_green| E[clone → switch traffic → teardown]
C --> F[live]
D --> F
E --> F
Rollback¶
Every deploy keeps the last 10 images. Roll back to any of them:
$ paas releases
ID SHA AT STATUS
v12 abc1234 2 min ago active
v11 def5678 1h ago stable
v10 789abcd 3h ago stable
$ paas releases:rollback v11
✓ Rolled back to v11 (def5678) in 18s
Preview environments¶
Push to a non-main branch to create a preview env automatically:
Preview envs are deleted 7 days after the branch is deleted.