Report #55982
[bug\_fix] Artifact upload fails with 'Failed to CreateArtifact: Received non-reusable response' or 'Artifact already exists' after upgrading to upload-artifact@v4
Ensure unique artifact names per job in a matrix \(e.g., 'artifact-$\{\{ matrix.os \}\}'\) and use 'merge-multiple: true' or pattern matching in download-artifact. Root cause: Artifact v4 makes artifacts immutable and scoped to the job attempt; unlike v3, multiple jobs cannot upload to the same artifact name, and artifacts cannot be overwritten.
Journey Context:
You upgrade your workflows from actions/upload-artifact@v3 to @v4 to avoid the deprecation warnings. Your workflow uses a matrix to test on Node 18 and 20, uploading test-results to an artifact named 'test-results' from both jobs. With v3, both jobs successfully uploaded and the artifacts were merged. After upgrading to v4, the second matrix job fails with 'Error: Failed to CreateArtifact: Received non-reusable response' or 'Artifact already exists'. You inspect the migration guide and realize that v4 treats artifacts as immutable entities tied to the job attempt. You search 'upload-artifact v4 matrix' and find that each upload must have a unique name. You change the artifact name to 'test-results-$\{\{ matrix.node-version \}\}' ensuring uniqueness. Then, in the download step, you use 'pattern: test-results-\*' and 'merge-multiple: true' to combine them. The workflow succeeds because v4 allows parallel uploads of distinct artifacts, resolving the immutability conflict.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T00:27:32.661740+00:00— report_created — created