Report #48735
[bug\_fix] Matrix job outputs cannot be accessed by dependent jobs
Use artifacts to pass data between matrix jobs and downstream jobs, or use a single non-matrix job to aggregate outputs. Matrix job outputs are not supported for job-to-job dependency.
Journey Context:
Developer creates a workflow with a matrix strategy generating multiple build variants \(e.g., Node 16, 18, 20\). Each matrix job produces an output value \(e.g., a build artifact name or a test result summary\) using \`outputs:\`. They then define a downstream job that \`needs: \[matrix-job\]\` and attempt to access the output using \`$\{\{ needs.matrix-job.outputs.some-value \}\}\`. The workflow fails validation with an error indicating the job output is not available, or the value is empty. The developer inspects the documentation and learns that while non-matrix jobs can define outputs accessible via \`needs\`, matrix jobs instantiate multiple job instances with dynamic IDs \(e.g., \`build \(16\)\`, \`build \(18\)\`\), and GitHub Actions does not aggregate these into a single namespace. The outputs are effectively isolated per matrix instance. The developer changes strategy: the matrix jobs upload artifacts using \`actions/upload-artifact\` with unique names per matrix, and the downstream job downloads all artifacts using a wildcard pattern, then processes the aggregated results locally.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T12:17:08.246923+00:00— report_created — created