Authoritative Release
Declarative Deployment
A declarative deployment ensures all components are Released in a predictable way, with the assurance the same combination of component versions that were tested align with what is released.
Release Manifest
The release contains a manifest of components and their version. This is the release declaration. The deployment is responsible for ensuring these components are applied at as declared at each promotion stage, e.g. test, staging, production. In the flow below, the release is continuously deployed through to staging, but continuously deployed, i.e. gated, to production.
For each deployment, the same image is used to create the running container.
flowchart LR registry[(Docker Registry)] subgraph test p1["Python v0.2.135"] ~~~ n1["NodeJS v1.0.3"] end subgraph staging p2["Python v0.2.135"] ~~~ n2["NodeJS v1.0.3"] end subgraph production p3["Python v0.2.135"] ~~~ n3["NodeJS v1.0.3"] end test -- "auto promote" --> staging staging -- "gated promote" --> production registry --> test registry --> staging registry --> production classDef blue fill:#007FFF class registry blue