Skip to content

fix(ci): build the Windows download artifact name in the right order - #4578

Merged
lanluo-nvidia merged 2 commits into
pytorch:mainfrom
shoumikhin:fix/windows-test-artifact-name
Aug 26, 2026
Merged

fix(ci): build the Windows download artifact name in the right order#4578
lanluo-nvidia merged 2 commits into
pytorch:mainfrom
shoumikhin:fix/windows-test-artifact-name

Conversation

@shoumikhin

Copy link
Copy Markdown
Contributor

What is broken

Every job in the CI Windows workflow on main fails at the Download artifacts step:

Unable to download artifact(s): Artifact not found for name: pytorch_tensorrt__3.12_cu132__python_only_rtxx64

170 of 300 jobs failed that way in the latest run, and every non-cancelled main run since 2026-08-23 has ended the same way.

Why

The build job builds the artifact name with the architecture inside the base name, then appends the two marks:

pytorch_tensorrt__3.12_cu132_x64  +  _python_only  +  _rtx

The test job put the same pieces together in a different order. It asked setup-binary-builds for the base name with arch: ${{ env.ARCH }}, but ARCH is not set anywhere in windows-test.yml, so the architecture field came out empty and the base ended with a trailing separator. The two marks were appended to that, and the architecture was concatenated onto the very end at download time:

pytorch_tensorrt__3.12_cu132_  +  _python_only  +  _rtx  +  x64

This was harmless while the marks did not exist, because the empty architecture field left exactly the separator the architecture needed. It broke as soon as the marks were added, because they now sit between the base and the architecture.

Fix

Pass inputs.architecture to setup-binary-builds, the same value build_windows.yml passes, so the architecture is part of the base name before the marks are appended. Then download the artifact under ARTIFACT_NAME unchanged.

arch is used by that action for one thing only, building ARTIFACT_NAME, so nothing else in the test job changes.

Verification

Windows CI cannot be run locally, so this was checked against real data instead: the list of artifacts the latest main run actually uploaded, read through the Actions API. All 40 names the fixed workflow composes (5 Python versions, 2 CUDA versions, with and without each mark) are present in that run.

For the case with no marks the fixed expression produces the same string as the old one, character for character, so the jobs that pass today keep downloading exactly what they downloaded before.

Every Windows test job on main fails at "Download artifacts" with

  Artifact not found for name: pytorch_tensorrt__3.12_cu132__python_only_rtxx64

The build names its wheel artifact `<base>_<arch>` and then appends
`_python_only` and `_rtx`. The test job built the same name in a
different order: it asked setup-binary-builds for the base with
`arch: ${{ env.ARCH }}`, but ARCH is not set anywhere in this workflow,
so the architecture field came out empty; the two suffixes were then
appended to that, and the architecture was tacked onto the very end at
download time. That was harmless while the suffixes did not exist,
because the empty architecture field left a trailing separator for the
architecture to land after. It stopped working once the suffixes were
added, because they now sit between the base and the architecture.

Pass the architecture to setup-binary-builds the way build_windows.yml
does, so it is part of the base name before the suffixes are appended,
and download the artifact under that name unchanged.

Checked against the artifacts the last main run actually uploaded: all
40 names the fixed workflow composes (5 Python versions x 2 CUDA
versions x with/without each suffix) exist in that run. The unsuffixed
name is byte for byte what the old expression produced, so the passing
jobs keep downloading exactly what they downloaded before.

@lanluo-nvidia lanluo-nvidia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm
wait for ci to pass

@lanluo-nvidia lanluo-nvidia added this to the v2.14.0 milestone Aug 26, 2026
The repository lint job runs `black --check .` across the whole tree, so any
file that does not match the formatter fails CI for every open pull request,
not only the one that touched it. `tests/py/dynamo/conversion/test_cumsum_aten.py`
is currently not black-conformant on main, which turns the Python Linting check
red here.

Reformat that one file with black. This is a formatting-only change: two
statements that fit on a single line are un-wrapped. No test logic changes.

Verified by running `black --check .` on the full tree: all files pass.
@github-actions github-actions Bot added the component: tests Issues re: Tests label Aug 26, 2026
@lanluo-nvidia
lanluo-nvidia merged commit 9191620 into pytorch:main Aug 26, 2026
127 of 144 checks passed
lanluo-nvidia pushed a commit that referenced this pull request Aug 26, 2026
…4578)

Co-authored-by: shoumikhin <shoumikhin@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants