Report #50755
[bug\_fix] Failed to CreateArtifact: Received non-retryable error: HttpError: 409 - Conflict
Ensure each matrix job uploads to a uniquely named artifact \(e.g., \`name: build-$\{\{ matrix.os \}\}-$\{\{ matrix.node \}\}\`\), then use a subsequent job with \`actions/download-artifact@v4\` using \`pattern: build-\*\` and \`merge-multiple: true\` to aggregate them. Root cause: \`actions/upload-artifact@v4\` migrated to an immutable backend where artifact names must be unique within a single workflow run; attempting to upload multiple files to the same name from parallel matrix jobs causes a conflict, unlike v3 which allowed overwriting/merging.
Journey Context:
Developer upgrades from \`actions/upload-artifact@v3\` to \`v4\`. Their workflow uses a matrix strategy to build on \`ubuntu\`, \`windows\`, and \`macos\` simultaneously. Each job runs \`upload-artifact\` with the hardcoded \`name: binaries\`. In v3, this worked, and all three builds appeared under the single artifact name. In v4, the first matrix job to finish uploads successfully, but the other two fail immediately with "Failed to CreateArtifact: Received non-retryable error: HttpError: 409". Developer checks the v4 release notes and discovers that artifacts are now immutable and names must be unique per workflow run. They modify the workflow to use \`name: binaries-$\{\{ matrix.os \}\}\`, which resolves the conflict. They then add a final 'aggregate' job that downloads all artifacts using \`pattern: binaries-\*\` and \`merge-multiple: true\` to combine them for release.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T15:40:38.413502+00:00— report_created — created