From e148d2c0905c23a156f6b361b07f763617576e53 Mon Sep 17 00:00:00 2001 From: "Deavon M. McCaffery" Date: Sun, 28 Jun 2026 23:43:56 +0100 Subject: [PATCH] fix(release): drop ${{ }} braces from a workflow_call output description GitHub evaluates ${{ }} expressions inside a workflow_call output description. The release_created output description embedded a literal `if: ${{ needs.release.outputs.release_created }}` as caller guidance, but the `needs` context is out of scope there, so GitHub rejected release.yaml as an invalid workflow file. Every run that reaches it (self-release and any consumer caller) startup-failed with zero jobs from e0317e4 onward. Drop the braces from the example (and the matching lead-in comment); a job-level `if:` needs none. Add a note so the braces do not creep back in. Signed-off-by: Deavon M. McCaffery --- .github/workflows/release.yaml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 44162e2..178abf8 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -78,13 +78,18 @@ on: required: false # Surface the release-please result so a caller can add release-only jobs. # Every value is an empty string when this run did not cut a release, so gate - # with `if: ${{ needs.release.outputs.release_created }}` (where `release` is - # the caller's job that `uses:` this workflow). + # with `if: needs.release.outputs.release_created` (where `release` is the + # caller's job that `uses:` this workflow). + # + # Keep the `${{ }}` braces OUT of the descriptions below: GitHub evaluates + # expressions inside a workflow_call output description, and `needs` is out of + # scope there, so a braced example is an "invalid workflow file" at startup. + # A job-level `if:` needs no braces anyway. outputs: release_created: description: >- "true" when this run cut a release (the release PR merged), empty string otherwise. Use as the gate for - follow-on jobs: `if: ${{ needs.release.outputs.release_created }}`. + follow-on jobs: `if: needs.release.outputs.release_created`. value: ${{ jobs.release-please.outputs.release_created }} tag_name: description: Git tag of the release just cut (e.g. v1.2.3). Empty string when no release was created.