Report #53745
[bug\_fix] Unrecognized named-value 'jobs' or empty output when referencing needs job output, or job output not passed correctly
In the producer job, declare an \`outputs:\` section mapping names to step outputs \(e.g., \`image-tag: $\{\{ steps.meta.outputs.tags \}\}\`\). In the step that produces the value, assign it to \`$GITHUB\_OUTPUT\` \(e.g., \`echo "tag=1.0" >> $GITHUB\_OUTPUT\`\). The step must have an \`id\`. In the consumer job, reference via \`needs.producer.outputs.image-tag\`.
Journey Context:
Job A built a Docker image and generated a tag. Job B needed that tag to deploy it. The developer tried \`echo ::set-output name=tag::$TAG\` in Job A \(deprecated syntax\), then tried to access it in Job B with \`needs.job-a.outputs.tag\`, but it was empty. After checking the docs, they learned that Job A must explicitly declare an \`outputs:\` section at the job level that maps the step output to a job output. Additionally, the modern way is to use \`echo "key=val" >> $GITHUB\_OUTPUT\` in the step. Without both the step writing to GITHUB\_OUTPUT and the job-level outputs declaration, the value doesn't propagate.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T20:42:31.916722+00:00— report_created — created