Skip to content

v1.1.0 — the shared release workflow

Choose a tag to compare

@cshuttle cshuttle released this 03 Aug 03:51
96afdd6

Adds release-image.yml — the shared release workflow for repos whose artifact is one or more container images.

What it does

Cutting a release promotes the image digest CI already built and tested for that commit; it never rebuilds. A rebuild on the tag would produce a second digest from identical source — a different artifact from the one that was tested, for twice the build minutes.

Callers wire a workflow_dispatch button taking a version and an optional summary, because the version is a human decision: a major here means the deploy needs a human step, which no commit message reliably encodes.

Two guards

  • A tag is never reused — checked against the remote, not the local clone. Released tags are immutable; a bad release is superseded by a patch, never fixed by moving a tag.
  • The digest must belong to the running commit. The promoted digest must also be reachable under a commit-sha tag for the ref being released, so a build still in flight — or one that failed after merge — cannot be released by accident. Repos tag per-commit three different ways, so all three forms are tried.

Also in this release

  • STANDARDS.md gains a Releases and versioning section.
  • docs/adr/0001-release-and-versioning-model.md records the model and the rejected alternatives, establishing docs/adr/ in this repo.

Why minor

A new capability that no existing consumer has to react to. Nothing about the four existing reusable workflows changed, so pinned callers can move to v1.1.0 whenever they like.

Cut by hand from a green selftest — this repo publishes no image, so it cannot use its own workflow.