Skip to content

actions: fix entrypoint drift; test free /review URL via a review_url output#123

Open
reuvenharrison wants to merge 4 commits into
mainfrom
fix/entrypoint-drift
Open

actions: fix entrypoint drift; test free /review URL via a review_url output#123
reuvenharrison wants to merge 4 commits into
mainfrom
fix/entrypoint-drift

Conversation

@reuvenharrison
Copy link
Copy Markdown
Contributor

@reuvenharrison reuvenharrison commented May 23, 2026

Fixes the drift across the four action entrypoints and makes the free-review URL tests run on the production platform via a real action output instead of stubbing the entrypoint under the runner's shell.

Entrypoint drift

  • write_output: breaking was a prefixed-global variant; aligned to the local version used by changelog/diff.
  • base_sha comment: changelog referenced "see breaking/entrypoint.sh"; both now carry the full rationale (and an em-dash is gone).
  • set -o pipefail: removed from changelog/diff (and not added elsewhere). The entrypoints are #!/bin/sh; pipefail is non-POSIX and bought nothing here (every pipeline is in an if condition or ends in the command whose failure already propagates). All four are now set -e only.

review_url output + faithful URL tests

  • New review_url output on the breaking and changelog actions (the free /review link they already emit as a ::notice::), written after the multiline output block so it isn't folded into it.
  • The breaking/changelog free-review URL tests now run the real action via uses: and assert on steps.*.outputs.review_url — on the production platform (Alpine/busybox ash), with no stub / docker run / bash workaround.
  • The strip tests use base: HEAD:specs/base.yaml, exercising real git-ref resolution (the recommended base form), which previously had no CI coverage.

Why an output instead of reading the annotation

::notice:: annotations and step logs can't be read by a later step; only declared outputs cross the step boundary. The output is also genuinely useful to real workflows.

pr-comment

Intentionally unchanged. Its tests invoke the entrypoint directly (it needs PR context, and 4 of them assert on exit codes / ARG_MAX payload behavior). Running them under the runner's dash is the correct strict-POSIX gate, and the ARG_MAX limit is kernel-level (identical in-container), so prod-platform fidelity adds ~nothing for them.

Test plan

  • All four workflows green
  • breaking/changelog URL tests pass (validates real git-ref resolution and that test1->test3 is a change)
  • Existing uses: tests unaffected by the entrypoint changes

Add a `review_url` output to the breaking action (the free /review link
it already emits as a notice) so tests can assert on it directly.

Rewrite the two free-review URL tests to run the real action via `uses:`
and check the output, instead of invoking the entrypoint on the runner
under dash. They now run on the production platform (Alpine/busybox ash)
with no shell-compat workarounds, and the strip test exercises real
git-ref resolution (HEAD:specs/base.yaml), which had no CI coverage.

Also align entrypoint drift: write_output now matches changelog/diff,
add set -o pipefail (consistent with changelog/diff; safe now that every
breaking test runs in-container), and drop an em-dash from a comment.
The review_url echo was between `breaking<<$delimiter` and its closing
delimiter, so it got folded into the `breaking` output value (breaking
the existing output-comparison tests) and never became its own output
(so the URL tests saw it empty). Move it after the block closes.
Mirror the breaking change: add a review_url output (written after the
multiline changelog block closes) and rewrite the two free-review URL
tests to run the real action via uses: + assert on the output, dropping
the bash/dash workaround. Also expands the base_sha comment to match
breaking's (drift cleanup).
The entrypoints are #!/bin/sh. pipefail is not POSIX (the runner's dash
rejects it), and it bought nothing here: every pipeline is either inside
an if-condition or ends in the command whose failure already propagates.
Standardize all four on `set -e` only, which also makes them runnable
directly under the runner's dash.
@reuvenharrison reuvenharrison changed the title breaking: review_url output; test free /review URL via it (drift cleanup) actions: fix entrypoint drift; test free /review URL via a review_url output May 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant