Report #83804
[bug\_fix] Unrecognized named-value: 'jobs' or empty outputs when attempting to consume outputs from matrix strategy jobs
Use artifacts to pass data between matrix jobs and downstream jobs instead of job outputs, or use a 'reconvene' job that depends on the entire matrix and aggregates outputs using \`strategy: fail-fast: false\` and conditional steps.
Journey Context:
The developer creates a matrix build with three OS versions \(ubuntu, windows, macos\) and wants to pass a generated build number or version string from each matrix job to a single downstream deployment job. They try to reference \`needs.build.outputs.version\` and get 'Unrecognized named-value' or find the value is empty. They try \`needs.build \(ubuntu-latest\).outputs.version\` which fails YAML parsing. They search and discover that matrix job outputs cannot be accessed dynamically because the job names are dynamic and the \`needs\` context requires static job IDs. They consider splitting into three separate jobs \(defeating the matrix purpose\) or using a complex JSON parsing approach. Eventually, they settle on the artifact pattern: each matrix job uploads a file containing the version to a uniquely named artifact \(e.g., \`version-$\{\{ matrix.os \}\}\`\). The downstream job downloads all artifacts using a wildcard pattern and reads the versions from the files, bypassing the matrix output limitation entirely.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T23:14:53.854744+00:00— report_created — created