What
releaser.yml line 354, in the notify-release-failure job's Slack payload:
"text": "*Triggered by:*\n${{ needs.extract-release-actor.outputs.triggered_by || github.actor }}"
There is no extract-release-actor job in releaser.yml, and it is not in that job's needs: list either. The expression resolves to null, falls through to || github.actor, and the notice always reports the actor rather than the person who actually triggered the release.
actionlint reports it:
releaser.yml:354: property "extract-release-actor" is not defined in object type
{compute-build-flags: ..., image-build-and-push: ..., publish-helm: ...,
release-binaries: ..., skills-build-and-push: ...}
Why it matters
create-release-tag.yml goes to real trouble to preserve this. It extracts a Release-Triggered-By trailer from the release commit, and passes it forward as an HTML comment in the release body specifically so downstream workflows can recover who started the release:
# Include actor metadata as HTML comment if available (parsed by releaser.yml)
--notes "<!-- Release-Triggered-By: $TRIGGERED_BY -->"
Nothing in releaser.yml parses it. On a release: published event github.actor is whoever created the release — which for our flow is the release GitHub App, not a person. So the failure notification names a bot in exactly the situation where you want to know which human to talk to.
Fix
Either add the job that parses the trailer out of github.event.release.body and declare it in notify-release-failure's needs:, or drop the dead reference and the trailer plumbing in create-release-tag.yml along with it. Worth deciding which, rather than leaving a half-wired path.
Notes
Found while working through #6253; not fixed there because it changes release-notification behaviour in a workflow that no pull request can exercise, and that work was scoped to permissions and quoting.
actionlint is not currently in CI — see #6253 — which is why this has gone unnoticed.
What
releaser.ymlline 354, in thenotify-release-failurejob's Slack payload:There is no
extract-release-actorjob inreleaser.yml, and it is not in that job'sneeds:list either. The expression resolves to null, falls through to|| github.actor, and the notice always reports the actor rather than the person who actually triggered the release.actionlintreports it:Why it matters
create-release-tag.ymlgoes to real trouble to preserve this. It extracts aRelease-Triggered-Bytrailer from the release commit, and passes it forward as an HTML comment in the release body specifically so downstream workflows can recover who started the release:Nothing in
releaser.ymlparses it. On arelease: publishedeventgithub.actoris whoever created the release — which for our flow is the release GitHub App, not a person. So the failure notification names a bot in exactly the situation where you want to know which human to talk to.Fix
Either add the job that parses the trailer out of
github.event.release.bodyand declare it innotify-release-failure'sneeds:, or drop the dead reference and the trailer plumbing increate-release-tag.ymlalong with it. Worth deciding which, rather than leaving a half-wired path.Notes
Found while working through #6253; not fixed there because it changes release-notification behaviour in a workflow that no pull request can exercise, and that work was scoped to permissions and quoting.
actionlintis not currently in CI — see #6253 — which is why this has gone unnoticed.