Skip to content

[TRTLLMINF-472][infra] Migrate test results to artifactory.nvidia.com - #21223

Draft
sharabeshj-nvda wants to merge 2 commits into
NVIDIA:mainfrom
sharabeshj-nvda:TRTLLMINF-472-migrate-test-results-to-aws-artifactory
Draft

sharabeshj-nvda wants to merge 2 commits into
NVIDIA:mainfrom
sharabeshj-nvda:TRTLLMINF-472-migrate-test-results-to-aws-artifactory

Conversation

@sharabeshj-nvda

@sharabeshj-nvda sharabeshj-nvda commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Draft. Moves CI's test results from sw-tensorrt-generic on urm.nvidia.com to sw-tensorrt-llm-generic-local on artifactory.nvidia.com, after #20494 (TRTLLM-17014) moves the build artifacts there. It covers each test stage's final and checkpoint archives, the build-level and per-stage rerun reports, the docs preview, and the post-merge coverage archives, together with every CI step that writes, lists, reads, deletes, or links them.

  • Dual publishing. Everything under test-results/ is still published to urm first and then replicated to the same path on artifactory.nvidia.com. A failed urm upload fails the step for a final archive or the docs preview and is only logged for the build-level rerun report, as today. A failed replica upload logs the link to the urm copy and marks only its stage unstable, never the build, because an UNSTABLE sub-job counts as infra-incomplete to the parent pipeline. Checkpoints are the exception: a failed checkpoint upload, on either location, is only logged. rerun_reports/ and cbts-coverage/ go to the primary location alone. LLM_ARTIFACTS_PRIMARY=urm returns everything to urm, with no replica, as it does for build artifacts.
  • Checkpoints. A parallel branch beside the tests keeps each running stage's checkpoint, replacing progress_upload_watcher.sh. Credential-free scripts prepare it (progress_snapshot.sh, plus progress_collect_slurm.sh for Slurm batch stages), and the Jenkins agent uploads it, so no Artifactory credential for either location is bound while tests run. Once the stage's final archive is uploaded, the checkpoint is deleted on each location from where no test runs: the test pod's jnlp container, or a Slurm stage's dispatcher pod.
  • Reading. jenkins/scripts/fetch_build_artifact.sh gains --list, which lists a folder on both locations, because artifactory.nvidia.com rejects the anonymous index reads used today. Collect Test Result and the coverage step list the run's test-results/ and read each archive once, from the primary location first (artifactory.nvidia.com unless rolled back) and from the other when it is absent there. A failed listing or read marks the stage unstable, and after three reads in a row are rejected or fail in transfer, the remaining names are not read. A retried stage reads its earlier attempts through the same helper and marks the stage unstable when a read fails. Coverage-based test selection reads through it too, and skips a build it cannot read or declines. None of these fails the run.
  • Links shown to people (the Slurm job's pointer to its full output, the rerun reports, the coverage archives, and the perf record's artifact_url) point to the primary location: artifactory.nvidia.com's native browser, or direct urm links when urm is the primary. artifact_url now names the run's test-results/ folder instead of the run folder, because the run's outputs now span both instances and the field holds one link.
  • Readers outside this repository. PR_Github, which sets blossom-ci, keeps working from urm's copies; its own change lands before urm is retired. A follow-up change ends dual publishing before then.

This branch is stacked on #20494 and carries its commit until that merges.

Draft only, removed before the PR is marked ready: the design documents under specs/001-migrate-test-results-aws-artifactory/, the comparison of the two locations' copies in Collect Test Result, and two probe tests under tests/integration/defs/ (test_no_artifactory_credentials.py and test_rerun_once_probe.py).

Test Coverage

  • tests/unittest/scripts/test_fetch_build_artifact.py: the helper's --list mode and its exit codes, and that every pipeline reader defines those exit codes with the helper's values and compares against them by name.
  • tests/unittest/scripts/test_progress_snapshot.py: the checkpoint scripts, without network or credentials.
  • tests/unittest/scripts/cbts/test_coverage_artifact.py: coverage-based selection's archive reads through the helper, including failed and rejected downloads.
  • tests/unittest/others/test_perf_regression_artifact_url.py: the perf record's artifact_url.
  • tests/unittest/scripts/test_slurm_install.py: checkpoint deletes use each location's publishing credential.

On CI so far, a targeted run of A10-PyTorch-1 (L0_MergeRequest_PR #67135: 886 passed, 0 failed) uploaded its checkpoints and final archive to urm and then to artifactory.nvidia.com, and deleted the checkpoint on both. Collect Test Result then read the archive from artifactory.nvidia.com and found the same SHA-1 on both locations. Next come the default pre-merge run and runs that reach the remaining cluster and runtime combinations.

PR Checklist

Please review the following before submitting your PR:

  • PR description clearly explains what and why. If using CodeRabbit's summary, please make sure it makes sense.

  • PR Follows TRT-LLM CODING GUIDELINES to the best of your knowledge.

  • Test cases are provided for new code paths (see test instructions)

  • If PR introduces API changes, an appropriate PR label is added - either api-compatible or api-breaking. For api-breaking, include BREAKING in the PR title.

  • Any new dependencies have been scanned for license and vulnerabilities

  • CODEOWNERS updated if ownership changes

  • Documentation updated as needed

  • Update tava architecture diagram if there is a significant design change in PR.

  • The reviewers assigned automatically/manually are appropriate for the PR.

  • Please check this after reviewing the above items as appropriate for this PR.

GitHub Bot Help

To see a list of available CI bot commands, please comment /bot help.

🤖 Generated with Claude Code

@sharabeshj-nvda
sharabeshj-nvda force-pushed the TRTLLMINF-472-migrate-test-results-to-aws-artifactory branch 3 times, most recently from 390a25f to c7b8c5e Compare October 29, 2026 05:42
@sharabeshj-nvda

Copy link
Copy Markdown
Collaborator Author

/bot run --stage-list "A10-PyTorch-1"

Publish build_info.txt, the packaged builds (*.tar.gz) and waive_list/ to
sw-tensorrt-llm-generic-local on artifactory.nvidia.com instead of
sw-tensorrt-generic on urm.nvidia.com, and read them from there first.

- Readers fall back to urm only when a file is absent (HTTP 404), so builds
  published before the switch stay readable. A rejected credential fails
  fast with a message that names the credential and says that its token
  needs renewal or lacks the permission the request needs, and never falls
  back.
- jenkins/scripts/fetch_build_artifact.sh is the one read helper: the
  pipelines, the Slurm jobs, the image build, coverage-based test selection
  and BOLT profile generation run it, and it checks each download's SHA-1.
- LLM_ARTIFACTS_PRIMARY=urm on the Jenkins controllers returns publishing
  and first reads to urm without a code change. A parent pipeline passes
  its value to the jobs it starts.
- Build reuse copies within one instance, and rebuilds when the earlier
  build is only on the other one.
- BOLT profile generation copies its longest cluster scripts (the two
  bootstrap downloads and the optimized-package publish) to the Slurm
  login node as files and runs them with bash, instead of sending them
  base64-encoded on the ssh command line, where a csh login shell rejects
  a word that long.
- CI reads these artifacts with aws-artifactory-credentials, the credential
  it publishes them with, in every environment that reads them, including
  hosts that run a pull request's code. That credential also pushes CI's
  container images. Container-image pulls in the test jobs and on the
  Slurm clusters keep trtllm-artifactory-credentials.

Signed-off-by: Sharabesh Jayaraman <338298191+sharabeshj-nvda@users.noreply.github.com>
@sharabeshj-nvda
sharabeshj-nvda force-pushed the TRTLLMINF-472-migrate-test-results-to-aws-artifactory branch from c7b8c5e to ced4674 Compare October 29, 2026 16:45
@sharabeshj-nvda

Copy link
Copy Markdown
Collaborator Author

/bot run --stage-list "A10-PyTorch-1"

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #81464 [ run ] triggered by Bot. Commit: ced4674 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #81464 [ run ] completed with state SUCCESS. Commit: ced4674
/LLM/main/L0_MergeRequest_PR pipeline #67135 (Partly Tested) completed with status: 'SUCCESS'

CI Report

Link to invocation

Publish CI's test results to sw-tensorrt-llm-generic-local on
artifactory.nvidia.com as well as to sw-tensorrt-generic on
urm.nvidia.com, and read them from artifactory.nvidia.com first.
LLM_ARTIFACTS_PRIMARY=urm returns everything to urm, with no replica.

- Everything under test-results/ is still published to urm first, then
  replicated to artifactory.nvidia.com. A failed urm upload fails the
  step for a final archive or the docs preview and is only logged for
  the build-level rerun report, as today. A failed replica upload marks
  the stage unstable and logs the link to the urm copy. Checkpoints are
  the exception: a failed checkpoint upload, on either location, is
  only logged. rerun_reports/ and cbts-coverage/ go to the primary
  location alone.
- A parallel branch next to the tests keeps each running stage's
  checkpoint. Credential-free scripts prepare it (progress_snapshot.sh,
  and progress_collect_slurm.sh for Slurm batch stages), and the Jenkins
  agent uploads it, so no Artifactory credential is bound while the
  tests run. The checkpoint is deleted from each location once the
  stage's final archive is uploaded.
- fetch_build_artifact.sh gains --list, which lists a folder on both
  locations. Collect Test Result and the coverage step list the run's
  test-results/ and read each archive once by the read rule: from the
  primary location first, and from the other one when it is absent
  there. A failed listing or read marks the stage unstable, and three
  reads in a row that are rejected or fail in transfer stop the reading.
  A retried stage reads its earlier attempts through the same helper
  and marks the stage unstable when a read fails. Coverage-based test
  selection reads through it too, and skips a build it cannot read or
  declines. None of these fails the run.
- Links shown to people (the Slurm job's pointer to the full output, the
  rerun reports, the coverage archives, and the perf record's
  artifact_url) point to the primary location: the native browser of
  artifactory.nvidia.com, or direct urm links when urm is the primary.
  artifact_url names the run's test-results/ folder instead of the run
  folder, whose outputs now span both instances.

Draft only, removed before the pull request is marked ready: the design
documents under specs/, the comparison of the two locations' copies in
Collect Test Result, and the two probe tests under
tests/integration/defs/.

Signed-off-by: Sharabesh Jayaraman <338298191+sharabeshj-nvda@users.noreply.github.com>
@sharabeshj-nvda
sharabeshj-nvda force-pushed the TRTLLMINF-472-migrate-test-results-to-aws-artifactory branch from ced4674 to 028564b Compare October 29, 2026 20:24
@sharabeshj-nvda

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #81501 [ run ] triggered by Bot. Commit: 028564b Link to invocation

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants