Overview
TensorRT-LLM uses a Jenkins-based CI/CD system that runs unit tests and integration tests across multiple GPU configurations. This page explains how the CI is organized, how tests map to Jenkins stages, and how to trigger specific test stages.CI Pipelines
TensorRT-LLM has two main CI pipelines:Merge-Request Pipeline
Runs unit tests and pre-merge integration tests when
/bot run is commented on a PRPost-Merge Pipeline
Runs comprehensive integration tests across all GPU configurations after PR merge
Triggering CI
Pull requests do not automatically trigger CI. Developers must comment on the PR to start testing:/bot help as a PR comment.
Testing Strategy
Unit Tests
Unit tests are located intests/unittest/ and run during the merge-request pipeline. They are invoked from jenkins/L0_MergeRequest.groovy and do not require mapping to specific hardware stages.
Running unit tests locally:
Integration Tests
Integration tests are defined in YAML files undertests/integration/test_lists/test-db/. Most files are named after the GPU or configuration they run on:
l0_a100.yml- Tests for A100 GPUsl0_h100.yml- Tests for H100 GPUsl0_a10.yml- Tests for A10 GPUsl0_sanity_check.yml- Tests that run on multiple hardware types
stage: Eitherpre_mergeorpost_mergebackend:pytorch,tensorrt, ortritontests: List of pytest test paths
Integration tests require GPU access and the
LLM_MODELS_ROOT environment variable set to the path containing model weights.API Stability Tests
Located intests/api_stability/, these tests protect committed API signatures. Changes to LLM API signatures will fail these tests and require code owner review.
Jenkins Integration
Pipeline Definitions
The CI pipelines are defined in Groovy scripts:jenkins/L0_MergeRequest.groovy: Merge-request pipeline (pre-merge tests)jenkins/L0_Test.groovy: Post-merge pipeline (comprehensive testing)
Stage Mapping
jenkins/L0_Test.groovy maps Jenkins stage names to YAML test files. For example:
- GPU type (
a100x) - YAML file without extension (
l0_a100) - Shard index (1)
- Total number of shards (2)
stage value from the YAML file are selected when a stage runs.
Finding the Stage for a Test
Manual Method
- Locate the test in the appropriate YAML file under
tests/integration/test_lists/test-db/ - Note its
stageandbackendvalues - Search
jenkins/L0_Test.groovyfor a stage whose YAML file matches - Ensure the stage name contains
[Post-Merge]if the test hasstage: post_merge
Using test_to_stage_mapping.py
The helper scriptscripts/test_to_stage_mapping.py automates stage lookup:
Waiving Tests
Sometimes tests are known to fail due to bugs or unsupported features. Instead of removing them from YAML files, add them totests/integration/test_lists/waives.txt.
The CI passes this file to pytest via --waives-file, automatically skipping listed tests.
Format:
Changes to
waives.txt should include a bug link or brief explanation so other developers understand why the test is disabled.Retrieving Test Failures from CI
CI tests run on internal NVIDIA Jenkins infrastructure (blossom-ci). To retrieve failed test cases:
Step 1: Get Jenkins Build Number
Extract theL0_MergeRequest_PR build number from PR comments:
Step 2: Query Jenkins testReport API
Resolve the Jenkins base URL and fetch failure data:Step 3: Get Full Output for Specific Failure
IferrorStackTrace is incomplete (common for subprocess errors), fetch stdout and stderr:
className,name: Test identifierstatus:FAILEDorREGRESSIONerrorDetails: Error messageerrorStackTrace: Full stack trace (may be incomplete)stdout,stderr: Full test output (check when stack trace is insufficient)
Best Practices
Triggering Post-Merge Tests
When you only need to verify specific post-merge tests, avoid the heavy/bot run --post-merge command:
- Specific Stages Only
- Add to Pre-Merge
Avoiding Unnecessary —disable-fail-fast
Only use--disable-fail-fast when explicitly needed.
Test Locations Reference
Unit Tests
tests/unittest/Run in pre-merge CI, some require GPUAPI Stability
tests/api_stability/Protects API signatures, requires code owner reviewIntegration Tests
tests/integration/defs/Requires GPU + LLM_MODELS_ROOTTest Lists
tests/integration/test_lists/test-db/Per-GPU YAML files (l0_a10.yml, l0_h100.yml, etc.)