release: -fsS and --fail-with-body are mutually exclusive #58

Merged
yuris merged 1 commit from fix/release-curl into main 2026-08-20 11:43:04 +00:00
Owner

The v1.0.0 release job failed outright on this, and it was introduced by #57 one commit earlier.

curl treats --fail-with-body as superseding --fail, so passing both is a usage error rather than a warning:

curl: option --fail-with-body: is badly used here
curl: try 'curl --help' or 'curl --manual' for more information
⚙️ [runner]: exitcode '2': failure

Local curl only warns — --fail deselects --fail-with-body here — and proceeds, which is exactly why this got past a dry run that rendered the body correctly. The runner's curl is fatal. The fix is -sS, not -fsS, with the reason recorded in a comment so it does not come back.

Only the POST is affected. The tag-annotation read keeps plain -fsSL, which is correct there: it has no body worth printing and must abort before the POST.

Nothing was published, and that was by design

The failure landed on the single mutating call, so the no half-publish path property #57's review verified held exactly as described: the tag existed with no release object, and deleting the tag left nothing to clean up. The annotation read, the [ -n "$BODY" ] guard and jq -n --arg all ran fine — the run got as far as the POST, which is the last thing it does.

How this is verified this time

Rendering the script locally was not enough, because the two curls behave differently on two curl versions. So: bash -n on the extracted script, a check that --fail-with-body appears on the POST and nowhere else, and confirmation that the tag read still uses -fsSL. The tag will be re-cut at a commit that contains this fix, so the workflow that runs is the one being reviewed here rather than an older tree.

The v1.0.0 release job failed outright on this, and it was introduced by #57 one commit earlier. `curl` treats `--fail-with-body` as **superseding** `--fail`, so passing both is a usage error rather than a warning: ``` curl: option --fail-with-body: is badly used here curl: try 'curl --help' or 'curl --manual' for more information ⚙️ [runner]: exitcode '2': failure ``` Local curl only warns — `--fail deselects --fail-with-body here` — and proceeds, which is exactly why this got past a dry run that rendered the body correctly. The runner's curl is fatal. The fix is `-sS`, not `-fsS`, with the reason recorded in a comment so it does not come back. Only the POST is affected. The tag-annotation read keeps plain `-fsSL`, which is correct there: it has no body worth printing and must abort before the POST. ## Nothing was published, and that was by design The failure landed on the single mutating call, so the *no half-publish path* property #57's review verified held exactly as described: the tag existed with no release object, and deleting the tag left nothing to clean up. The annotation read, the `[ -n "$BODY" ]` guard and `jq -n --arg` all ran fine — the run got as far as the POST, which is the last thing it does. ## How this is verified this time Rendering the script locally was not enough, because the two curls behave differently on two curl versions. So: `bash -n` on the extracted script, a check that `--fail-with-body` appears on the POST **and nowhere else**, and confirmation that the tag read still uses `-fsSL`. The tag will be re-cut at a commit that contains this fix, so the workflow that runs is the one being reviewed here rather than an older tree.
release: -fsS and --fail-with-body are mutually exclusive
All checks were successful
ci / ci (pull_request) Successful in 19s
3b53a63444
The v1.0.0 release job failed outright on this, and it was my own doing one
commit earlier. curl treats --fail-with-body as superseding --fail, so passing
both is a usage error, not a warning:

  curl: option --fail-with-body: is badly used here
  exitcode '2': failure

Local curl only warns ('--fail deselects --fail-with-body here') and proceeds,
which is why it was not caught before pushing the tag. The runner's is fatal.

Nothing was published: the failure happened at the single mutating call, so the
'no half-publish path' property held exactly as reviewed - the tag existed with
no release object, and deleting the tag left nothing to clean up.
yuris merged commit a2e39ff246 into main 2026-08-20 11:43:04 +00:00
Sign in to join this conversation.
No description provided.