practice

Artifact Promotion

Moving one immutable build between repositories as it earns trust, rather than rebuilding it for each environment.

The artifact is built once and identified by content — a digest, not a tag. As it passes each stage of verification it is promoted: copied or relabelled from a candidate repository into one that the next environment is permitted to pull from. Production pulls only from the production repository, and nothing reaches that repository except by promotion.

Two properties follow. What was tested is what ships, because it is the same bytes. And the repository membership becomes an auditable record of what was approved, which is usually easier evidence to produce than a pipeline log.

The anti-pattern is the mutable tag. If :latest or :staging is a moving pointer, then "we deployed staging's image" identifies nothing in particular, and a rollback to a tag can land on a different artifact than the one that tag meant last week. Tags are convenient labels; digests are identity, and deployments should reference the digest.