fix(branch-out-upload): add artifact-name input to prevent 409 collision in parallel matrix jobs#1512
Open
fix(branch-out-upload): add artifact-name input to prevent 409 collision in parallel matrix jobs#1512
Conversation
…ion in parallel matrix jobs
Contributor
|
👋 Fletch153, thanks for creating this pull request! To help reviewers, please consider creating future PRs as drafts first. This allows you to self-review and make any final changes before notifying the team. Once you're ready, you can mark it as "Ready for review" to request feedback. Thanks! |
Fletch153
added a commit
to smartcontractkit/chainlink
that referenced
this pull request
Apr 10, 2026
…ision
Multiple matrix jobs with trunk-auto-quarantine enabled (go_core_tests,
go_core_tests_integration, go_core_ccip_deployment_tests) all upload an
artifact named 'individual_test_logs' in the same workflow run, causing a
deterministic 409 conflict that fails CI even when tests pass.
Pass artifact-name: ${{ matrix.type.cmd }}_test_logs so each job gets a
unique artifact name. Depends on smartcontractkit/.github#1512.
Fixes: CORE-2418
1 task
erikburt
requested changes
Apr 12, 2026
Contributor
erikburt
left a comment
There was a problem hiding this comment.
Although this is worth fixing, it is not the cause of failures. The action only uploads when something has already failed.
You must add a changeset ‘pnpm changeset add’ or can try gocs (https://github.com/smartcontractkit/gocs).
github-merge-queue bot
pushed a commit
to smartcontractkit/chainlink
that referenced
this pull request
Apr 13, 2026
…ision (#21977) * fix(ci): pass unique artifact-name per matrix job to prevent 409 collision Multiple matrix jobs with trunk-auto-quarantine enabled (go_core_tests, go_core_tests_integration, go_core_ccip_deployment_tests) all upload an artifact named 'individual_test_logs' in the same workflow run, causing a deterministic 409 conflict that fails CI even when tests pass. Pass artifact-name: ${{ matrix.type.cmd }}_test_logs so each job gets a unique artifact name. Depends on smartcontractkit/.github#1512. Fixes: CORE-2418 * fix(ci): pass unique artifact-name to branch-out-upload in CRE workflows Prevents 409 conflict when multiple matrix jobs fail simultaneously and attempt to upload artifacts with the same hardcoded name. Fixes: smartcontractkit/.github/actions/branch-out-upload (artifact-name input)
jmank88
previously approved these changes
Apr 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
artifact-nameinput (default:individual_test_logs) to thebranch-out-uploadaction${{ inputs.artifact-name }}in the upload stepProblem
When multiple matrix jobs with
trunk-auto-quarantine: truefail in the same workflow run, each callsbranch-out-uploadwhich unconditionally uploads an artifact namedindividual_test_logs. The second job gets a 409 conflict, meaning its diagnostic artifacts are lost.Observed on
smartcontractkit/chainlinkwherego_core_tests,go_core_tests_integration, andgo_core_ccip_deployment_testscan collide on the same artifact name.Note: the upload step only runs under the
failure()condition, so this does not cause passing jobs to fail — but it does mean we lose test logs from all but the first failing matrix job, making debugging harder.Fix
Callers can now pass a unique name per job:
Backwards compatible — defaults to
individual_test_logsif not set.Related