forked from heavy-duty/ceremony
README: three steps run past the tag, and the publish is one of them
The overview's fail-loudly paragraph said "Only two steps run past the tag" and attributed the tag-standing/no-release state to the artifact hook alone. Past `tag the merge commit` (release.yml:224) come three steps: the artifact hook (:236), `publish the release` (:246) and the -dev re-arm (:267). The publish is `gh release create --verify-tag`, so it can fail on the API call or the assets with the tag already standing — the same state, from a second cause. State the count as three and sort them by what a failure leaves behind: two fail before the release exists (hook, publish), both recovered by the tag door; the third is the re-arm, still the one failure in the file that leaves a real release behind. The nothing-exists recovery text names the publish among the causes of a tag with no release too; its remedy is unchanged.
This commit is contained in:
parent
1410c01caf
commit
263bb74652
1 changed files with 12 additions and 8 deletions
20
README.md
20
README.md
|
|
@ -122,12 +122,16 @@ transcription because humans err silently and machines fail loudly:
|
||||||
**everything asserts its way to certainty and fails loudly, creating
|
**everything asserts its way to certainty and fails loudly, creating
|
||||||
nothing** — a wrong release is worse than a missing one, so every assert in
|
nothing** — a wrong release is worse than a missing one, so every assert in
|
||||||
this file fires *before its door creates anything*, and one that fails leaves
|
this file fires *before its door creates anything*, and one that fails leaves
|
||||||
zero artifacts of the run's own: no tag it made, no release, no bump. Only two
|
zero artifacts of the run's own: no tag it made, no release, no bump. Three
|
||||||
steps run past the tag. The consumer's
|
steps run past the tag, and what a failure at each leaves behind is what
|
||||||
|
sorts them. Two fail before the release exists: the consumer's
|
||||||
[artifact hook](docs/CONSUMERS.md#the-artifact-hook) sits between the tag and
|
[artifact hook](docs/CONSUMERS.md#the-artifact-hook) sits between the tag and
|
||||||
the publish, so its non-zero exit aborts with a tag standing and no release —
|
the publish, so its non-zero exit aborts, and the publish itself
|
||||||
a state the [nothing-exists assert](#the-merge-door-refused-releaseyml) names,
|
([`gh release create --verify-tag`](.github/workflows/release.yml#L246-L258))
|
||||||
and recovers by the tag door. The re-arm runs after the publish, and its
|
can fail on the API call or the assets. Either leaves the same state — a tag
|
||||||
|
standing and no release — which the
|
||||||
|
[nothing-exists assert](#the-merge-door-refused-releaseyml) names and the tag
|
||||||
|
door recovers. The third is the re-arm, which runs after the publish, and its
|
||||||
refusal is the single failure in this file that leaves a real release behind.
|
refusal is the single failure in this file that leaves a real release behind.
|
||||||
|
|
||||||
## The two doors
|
## The two doors
|
||||||
|
|
@ -485,9 +489,9 @@ clobber, and what catches a manual tag racing the merge. If the release
|
||||||
truly exists, there is nothing to do: this red is the system declining to do
|
truly exists, there is nothing to do: this red is the system declining to do
|
||||||
the thing twice. If the tag exists but the release does not (a manual tag
|
the thing twice. If the tag exists but the release does not (a manual tag
|
||||||
won the race, or
|
won the race, or
|
||||||
[a failed artifact hook](docs/CONSUMERS.md#the-artifact-hook)), recover by
|
[a failed artifact hook](docs/CONSUMERS.md#the-artifact-hook), or the publish
|
||||||
the tag door: delete and re-push the tag, or `gh release create` by hand
|
step itself failing after the tag), recover by the tag door: delete and
|
||||||
from a fixed tree.
|
re-push the tag, or `gh release create` by hand from a fixed tree.
|
||||||
|
|
||||||
> direct push refused (branch protection?) — opening the bump PR instead
|
> direct push refused (branch protection?) — opening the bump PR instead
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue