stacklok / stacklok/toolhive

Release failure Slack notice never shows the release triggerer

Open
#6,265 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug ci-cd needs-triage
Dominant language
Go
Stars
2.2k
Forks
300
Avg merge
1d 15h
Merged PRs (30d)
184

Description

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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in releaser.yml around line 354 and inspect the notify-release-failure job and its needs list, then compare the metadata flow with create-release-tag.yml. Run actionlint against the workflows and determine whether the release trailer should be parsed or the unused plumbing removed. Done means the workflow has no undefined job reference and the failure notice reports the intended release triggerer.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions
Domain
ci-cd, release
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.