Skip to content

[TRTLLMINF-218][infra] Gate multi-GPU CI stages behind 'ci: full pre-merge approved' label#16578

Open
ZhanruiSunCh wants to merge 4 commits into
NVIDIA:mainfrom
ZhanruiSunCh:user/zhanruis/0716_multi_gpu_label_gate
Open

[TRTLLMINF-218][infra] Gate multi-GPU CI stages behind 'ci: full pre-merge approved' label#16578
ZhanruiSunCh wants to merge 4 commits into
NVIDIA:mainfrom
ZhanruiSunCh:user/zhanruis/0716_multi_gpu_label_gate

Conversation

@ZhanruiSunCh

@ZhanruiSunCh ZhanruiSunCh commented Jul 19, 2026

Copy link
Copy Markdown
Collaborator

NEED MORE TEST BEFORE MERGE.

Gate x86_64 and SBSA multi-GPU pre-merge CI stages behind the GitHub label 'ci: full pre-merge approved' so resource-intensive multi-GPU tests only run when explicitly approved by a CI approver.

Changes:

  • L0_MergeRequest.groovy: add hasGithubPRLabel() (fail-open, reuses github-cred-trtllm-ci); insert label check at the top of [Test-x86_64-Multi-GPU] and [Test-SBSA-Multi-GPU] Remote Run stages; write description marker so wrapper can surface call-to-action
  • full-premerge-approval.yml: new GitHub Actions workflow (modeled after post-merge-approval.yml) to remove the label and post a deny comment when an unauthorized user applies the label
  • bot-command.yml: document label requirement for --add-multi-gpu-test and --only-multi-gpu-test
  • ci-overview.md: add Multi-GPU Tests section explaining label gating

PostMerge pipelines and GitLab MR builds are exempt from the check. Wrapper (trtllm-github-ci) change tracked in GitLab branch trtllminf-218-full-premerge-label (based on MR #86).

Summary

This PR gates the x86_64 and SBSA multi-GPU pre-merge CI stages behind the GitHub label ci: full pre-merge approved. It does this with:

  • Fail-open validation in Jenkins (to avoid CI lockouts when GitHub PR context/API validation is incomplete or unavailable), and
  • Fail-closed enforcement in GitHub Actions (removing the label and posting a denial comment when the latest labeling actor cannot be verified as an active member of NVIDIA/trt-llm-ci-approvers).

Key Changes

  • jenkins/L0_MergeRequest.groovy

    • Updated the shared library reference (trtllm-jenkins-shared-lib) to a PR-specific branch/version.
    • Added requireMultiGpuApprovalLabel(pipeline, globalVars, String arch) to enforce ci: full pre-merge approved for relevant multi-GPU pre-merge stages.
    • Fail-open when:
      • the job isn’t running in a GitHub PR context (e.g., missing GITHUB_PR_API_URL),
      • the job name indicates a *PostMerge* context, or
      • validatePRLabelApproval() reports incomplete validation (checkCompleted is false).
    • Fail-closed when validation completes but the label is missing or not applied by an authorized actor: appends an HTML marker to currentBuild.description and stops the pipeline with instructions to add the label and re-trigger CI.
    • Gate is applied immediately before launching:
      • L0_Test-x86_64-Multi-GPU
      • L0_Test-SBSA-Multi-GPU
  • .github/workflows/full-premerge-approval.yml

    • Added workflow “Guard Full Pre-Merge Approval Label”.
    • Triggers on pull_request_target label events for ci: full pre-merge approved (scoped to NVIDIA/TensorRT-LLM).
    • Verifies the latest matching approval-label event’s actor is an active member of NVIDIA/trt-llm-ci-approvers via the GitHub Org Team Memberships API.
    • If it can’t identify the latest actor/event or the actor isn’t an active member, it removes the label (with safeguards to only remove when aligned to the validated “latest” approval event/actor) and posts a denial comment.
  • .github/workflows/bot-command.yml

    • Updated /bot run help text (helpMessage) for:
      • --only-multi-gpu-test
      • --add-multi-gpu-test
    • Both now explicitly document that they require ci: full pre-merge approved (including the “ask a member of NVIDIA/trt-llm-ci-approvers” guidance).
  • docs/source/developer-guide/ci-overview.md

    • Added an SPDX/Apache-2.0 license header.
    • Extended the docs with a new “Multi-GPU Tests” section (and TOC entry) explaining:
      • the label requirement for the multi-GPU remote-run flows,
      • how to obtain approvals via NVIDIA/trt-llm-ci-approvers,
      • that unauthorized label additions are removed by the new GitHub Actions workflow,
      • /bot run examples to re-trigger CI after labeling,
      • exemptions for post-merge pipelines and GitLab MR builds.
  • jenkins/L0_Test.groovy

    • Added MULTI_GPU_RUN_WITH_SINGLE: stage-name patterns used to route certain multi-GPU stages through the single-GPU execution path (by moving matches from dgxJobs to singleGpuJobs during the Test phase).
    • In env.JOB_NAME ==~ /.*Single-GPU.*/, added a [TEST-ONLY] description marker onto the parent job and an early return path (the multi-GPU marker behavior is forced while that block remains enabled).

Dev Engineer Review

Correctness & Consistency

  • ✅ Multi-GPU pre-merge gating is applied for both x86_64 and SBSA immediately before their downstream multi-GPU test job dispatch.
  • ✅ Jenkins gating is fail-open for cases where GitHub PR context/API validation can’t be trusted (including explicit checkCompleted == false behavior), reducing the risk of CI lockouts.
  • ✅ When Jenkins validation completes, execution is blocked if the label is missing or not authorized, and the build description is annotated with actionable instructions.
  • ✅ GitHub Actions enforcement is fail-closed by verifying the latest approval-label actor is an active NVIDIA/trt-llm-ci-approvers member; removal is guarded to avoid unintended deletions.
  • ✅ Documentation and bot-command help text were updated to match the enforcement requirements and provide re-trigger guidance.
  • L0_Test.groovy changes introduce a configurable pattern list to ensure some multi-GPU stages can intentionally run via the single-GPU path instead of being blocked by the multi-GPU label gate.
  • ✅ The PR includes clear “wrapper”/UX markers via build-description annotations to guide users on what to do when gating blocks execution.

Config/Repo Hygiene

  • ✅ No evidence of test-list file changes.
  • ⚠️ Code review is still warranted around the if (true) block in L0_Test.groovy to confirm it’s intentional and won’t cause unexpected early returns beyond the intended scenario, and around correct behavior of the “latest approval-label event/actor” selection logic in the GitHub Actions workflow.

QA Engineer Review

No test changes.

Description

Test Coverage

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.

@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

The PR adds approval-label validation, gates pre-merge x86_64 and SBSA multi-GPU Jenkins stages, supports configurable single-GPU routing for selected jobs, and updates bot help and CI documentation.

Changes

Multi-GPU approval label enforcement

Layer / File(s) Summary
Approval label validation workflow
.github/workflows/full-premerge-approval.yml
Validates the latest approval-label event against active membership in the NVIDIA/trt-llm-ci-approvers team, removing unverified labels and commenting on the pull request.
Jenkins multi-GPU stage gates
jenkins/L0_MergeRequest.groovy
Checks pull-request labels and applies the approval-label gate to x86_64 and SBSA multi-GPU stages for pre-merge jobs.
Configurable multi-GPU job routing
jenkins/L0_Test.groovy
Adds wildcard-based configuration for moving selected multi-GPU stages into the single-GPU job set and adds a test-only early-return path.
Bot help and CI guidance
.github/workflows/bot-command.yml, docs/source/developer-guide/ci-overview.md
Documents the required label, approver team, rerun command, and pipeline exemptions.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant GitHub
  participant ApprovalWorkflow
  participant TeamMembershipAPI
  participant Jenkins
  participant MultiGPUStages
  GitHub->>ApprovalWorkflow: Apply ci: full pre-merge approved
  ApprovalWorkflow->>GitHub: Fetch latest label event
  ApprovalWorkflow->>TeamMembershipAPI: Verify labeling actor
  TeamMembershipAPI-->>ApprovalWorkflow: Return membership status
  ApprovalWorkflow->>GitHub: Remove label and comment if unverified
  Jenkins->>GitHub: Validate pull-request approval label
  GitHub-->>Jenkins: Return label authorization status
  Jenkins->>MultiGPUStages: Continue or fail pre-merge multi-GPU stage
Loading

Suggested reviewers: dpitman-nvda

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description is missing the required template sections and the test coverage/PR checklist details. Rewrite it using the template: add a Description, Test Coverage, and a completed PR Checklist section.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title matches the repository format and clearly summarizes the main change.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🧹 Nitpick comments (1)
jenkins/L0_MergeRequest.groovy (1)

1574-1589: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Extract the duplicated multi-GPU label gate into a helper. Both stages carry identical gate logic (label check, currentBuild.description marker, and error message) differing only by the x86_64/SBSA arch string. Fold it into one helper (e.g. requireMultiGpuApprovalLabel(pipeline, globalVars, arch)) so the exemption rules, marker HTML, and error text stay in sync.

  • jenkins/L0_MergeRequest.groovy#L1574-L1589: replace the inline x86_64 gate with a call to the shared helper, passing "x86_64".
  • jenkins/L0_MergeRequest.groovy#L1701-L1716: replace the inline SBSA gate with the same helper, passing "SBSA".
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@jenkins/L0_MergeRequest.groovy` around lines 1574 - 1589, Extract the
duplicated multi-GPU approval gate into a shared requireMultiGpuApprovalLabel
helper that accepts pipeline, globalVars, and arch, preserving the GitHub PR and
PostMerge exemptions, label check, description marker, and arch-specific error
text. Replace the inline gate at jenkins/L0_MergeRequest.groovy lines 1574-1589
with a helper call using "x86_64", and the gate at lines 1701-1716 with a call
using "SBSA".
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/source/developer-guide/ci-overview.md`:
- Line 108: Add the repository-required NVIDIA copyright header at the beginning
of ci-overview.md and set its year to 2026, leaving the existing “Multi-GPU
Tests” documentation unchanged.
- Line 108: Add the Multi-GPU Tests heading to the table of contents using the
`#multi-gpu-tests` anchor, then renumber all subsequent entries to preserve the
document’s section order.
- Around line 119-123: Update the rerun instructions near the multi-GPU command
to preserve the originally selected mode: tell readers to rerun the same command
they used, and include distinct examples for --only-multi-gpu-test and
--add-multi-gpu-test so the broader pipeline is not selected unintentionally.

In `@jenkins/L0_MergeRequest.groovy`:
- Around line 660-668: Update the curl invocation in the pipeline.sh call to
include the --fail option alongside --silent, ensuring HTTP error responses
produce a non-zero exit status and reach the existing fail-open catch handler.
Leave the JSON parsing and normal successful-response behavior unchanged.

---

Nitpick comments:
In `@jenkins/L0_MergeRequest.groovy`:
- Around line 1574-1589: Extract the duplicated multi-GPU approval gate into a
shared requireMultiGpuApprovalLabel helper that accepts pipeline, globalVars,
and arch, preserving the GitHub PR and PostMerge exemptions, label check,
description marker, and arch-specific error text. Replace the inline gate at
jenkins/L0_MergeRequest.groovy lines 1574-1589 with a helper call using
"x86_64", and the gate at lines 1701-1716 with a call using "SBSA".
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 1987f20b-6a09-48aa-a110-cdf448988613

📥 Commits

Reviewing files that changed from the base of the PR and between 176041b and 9f82671.

📒 Files selected for processing (4)
  • .github/workflows/bot-command.yml
  • .github/workflows/full-premerge-approval.yml
  • docs/source/developer-guide/ci-overview.md
  • jenkins/L0_MergeRequest.groovy

Comment thread docs/source/developer-guide/ci-overview.md
Comment thread docs/source/developer-guide/ci-overview.md Outdated
Comment thread jenkins/L0_MergeRequest.groovy Outdated
@ZhanruiSunCh
ZhanruiSunCh requested a review from chzblych July 19, 2026 15:57
@ZhanruiSunCh
ZhanruiSunCh force-pushed the user/zhanruis/0716_multi_gpu_label_gate branch from 9f82671 to eb669b5 Compare July 22, 2026 09:28

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/full-premerge-approval.yml:
- Around line 157-222: The cleanup flow around the timeline re-check and
issues.removeLabel must reconcile the latest approval event after deletion to
detect an intervening authorized label addition, restore that verified newer
approval label, and stop without posting a denial comment. Track whether this
run actually removed the unauthorized state, and only create the denial comment
when removal succeeded without a valid newer approval; handle concurrent 404
removals accordingly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 50965d17-a352-4c2b-ab3d-fc2ceeadfadd

📥 Commits

Reviewing files that changed from the base of the PR and between 9f82671 and eb669b5.

📒 Files selected for processing (4)
  • .github/workflows/bot-command.yml
  • .github/workflows/full-premerge-approval.yml
  • docs/source/developer-guide/ci-overview.md
  • jenkins/L0_MergeRequest.groovy
🚧 Files skipped from review as they are similar to previous changes (3)
  • jenkins/L0_MergeRequest.groovy
  • .github/workflows/bot-command.yml
  • docs/source/developer-guide/ci-overview.md

Comment thread .github/workflows/full-premerge-approval.yml

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@jenkins/L0_Test.groovy`:
- Around line 2082-2085: Populate MULTI_GPU_RUN_WITH_SINGLE with the intended
multi-GPU stage name patterns so matching stages can be exempted from
approval-label gating. Preserve the existing relocation logic at
jenkins/L0_Test.groovy lines 5893-5901; no direct change is required there.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: e8189e40-30e3-41f8-8ab4-6092445a46ba

📥 Commits

Reviewing files that changed from the base of the PR and between c168748 and 8878d27.

📒 Files selected for processing (2)
  • jenkins/L0_MergeRequest.groovy
  • jenkins/L0_Test.groovy

Comment thread jenkins/L0_Test.groovy
…merge approved' label

Gate x86_64 and SBSA multi-GPU pre-merge CI stages behind the GitHub
label 'ci: full pre-merge approved' so resource-intensive multi-GPU
tests only run when explicitly approved by a CI approver.

Changes:
- L0_MergeRequest.groovy: add hasGithubPRLabel() (fail-open, reuses
  github-cred-trtllm-ci); insert label check at the top of
  [Test-x86_64-Multi-GPU] and [Test-SBSA-Multi-GPU] Remote Run stages;
  write description marker so wrapper can surface call-to-action
- full-premerge-approval.yml: new GitHub Actions workflow (modeled after
  post-merge-approval.yml) to remove the label and post a deny comment
  when an unauthorized user applies the label
- bot-command.yml: document label requirement for --add-multi-gpu-test
  and --only-multi-gpu-test
- ci-overview.md: add Multi-GPU Tests section explaining label gating

PostMerge pipelines and GitLab MR builds are exempt from the check.
Wrapper (trtllm-github-ci) change tracked in GitLab branch
trtllminf-218-full-premerge-label (based on MR NVIDIA#86).

Signed-off-by: ZhanruiSunCh <184402041+ZhanruiSunCh@users.noreply.github.com>
- hasGithubPRLabel: add --fail --show-error to curl so HTTP errors
  (401/403/5xx) exit non-zero and reach the catch/fail-open handler
  instead of returning empty HTML that blocks CI
- Extract duplicated multi-GPU label gate logic into shared
  requireMultiGpuApprovalLabel() helper
- ci-overview.md: add NVIDIA copyright header, add Multi-GPU Tests
  entry to TOC, clarify rerun instructions for both
  --add-multi-gpu-test and --only-multi-gpu-test

Signed-off-by: ZhanruiSunCh <184402041+ZhanruiSunCh@users.noreply.github.com>
… add exempt stage list

- L0_MergeRequest.groovy: replace hasGithubPRLabel() with
  trtllm_utils.validatePRLabelApproval() from the shared lib, which
  verifies both label existence and labeler team membership; error
  message now distinguishes "label not present" from "labeler not
  authorized"; fail-open on API errors; echo reason on early return
- L0_Test.groovy: add MULTI_GPU_RUN_WITH_SINGLE exempt list; matching
  multi-GPU stages run inside the single-GPU job instead of waiting
  for the separate multi-GPU dispatch (which requires the label)

Signed-off-by: ZhanruiSunCh <184402041+ZhanruiSunCh@users.noreply.github.com>
@ZhanruiSunCh
ZhanruiSunCh force-pushed the user/zhanruis/0716_multi_gpu_label_gate branch from 8878d27 to 408f423 Compare July 24, 2026 08:50
@ZhanruiSunCh

Copy link
Copy Markdown
Collaborator Author

/bot run --add-multi-gpu-test

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@jenkins/L0_MergeRequest.groovy`:
- Line 1620: Move the requireMultiGpuApprovalLabel(...) call outside and before
the surrounding try blocks at both jenkins/L0_MergeRequest.groovy lines
1620-1620 and 1737-1737, leaving each approval failure uncaught by the ignore
handlers so denial remains blocking.

In `@jenkins/L0_Test.groovy`:
- Around line 5940-5950: Remove the unconditional test-only bypass block
surrounding the if (true) statement, including its forced multi-GPU marker,
logging, and early return. Preserve the normal singleGpuJobs execution flow in
the surrounding test logic.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 350e4bd0-4cef-42c1-9276-1f4d6bac30e2

📥 Commits

Reviewing files that changed from the base of the PR and between 8878d27 and 408f423.

📒 Files selected for processing (5)
  • .github/workflows/bot-command.yml
  • .github/workflows/full-premerge-approval.yml
  • docs/source/developer-guide/ci-overview.md
  • jenkins/L0_MergeRequest.groovy
  • jenkins/L0_Test.groovy
🚧 Files skipped from review as they are similar to previous changes (2)
  • .github/workflows/bot-command.yml
  • docs/source/developer-guide/ci-overview.md

Comment thread jenkins/L0_MergeRequest.groovy Outdated
echo "x86_64 test job is skipped due to Jenkins configuration"
return
}
requireMultiGpuApprovalLabel(pipeline, globalVars, "x86_64")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Keep approval-gate failures outside the ignore handlers.

requireMultiGpuApprovalLabel() throws on denial, but both surrounding catch (Exception) blocks can downgrade that failure when *_TEST_CHOICE == ignore. This contradicts the intended blocking gate.

  • jenkins/L0_MergeRequest.groovy#L1620-L1620: call requireMultiGpuApprovalLabel(...) before the try block.
  • jenkins/L0_MergeRequest.groovy#L1737-L1737: call requireMultiGpuApprovalLabel(...) before the try block.
📍 Affects 1 file
  • jenkins/L0_MergeRequest.groovy#L1620-L1620 (this comment)
  • jenkins/L0_MergeRequest.groovy#L1737-L1737
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@jenkins/L0_MergeRequest.groovy` at line 1620, Move the
requireMultiGpuApprovalLabel(...) call outside and before the surrounding try
blocks at both jenkins/L0_MergeRequest.groovy lines 1620-1620 and 1737-1737,
leaving each approval failure uncaught by the ignore handlers so denial remains
blocking.

Comment thread jenkins/L0_Test.groovy
Comment on lines +5940 to +5950
// [TEST-ONLY] Force multi-GPU marker to test label gate.
// Remove this block after testing.
if (true) {
if (globalVars[ACTION_INFO]['parents'].size() > 0) {
def parentJob = globalVars[ACTION_INFO]['parents'][-2]
def archStr = (env.targetArch == X86_64_TRIPLE) ? "x86_64" : (env.targetArch == AARCH64_TRIPLE ? "SBSA" : "Unknown")
trtllm_utils.appendBuildDescription(this, parentJob['name'], parentJob['build_number'], "====Require ${archStr} Multi-GPU Testing====<br/>")
echo "[TEST-ONLY] Forced multi-GPU marker for label gate testing. Skipping actual single-GPU tests."
}
return
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Remove the unconditional test-only bypass.

if (true) always returns before singleGpuJobs run, so every single-GPU downstream job reports success without executing tests and always requests multi-GPU dispatch. Delete this block before merge.

Proposed fix
-                        // [TEST-ONLY] Force multi-GPU marker to test label gate.
-                        // Remove this block after testing.
-                        if (true) {
-                            if (globalVars[ACTION_INFO]['parents'].size() > 0) {
-                                def parentJob = globalVars[ACTION_INFO]['parents'][-2]
-                                def archStr = (env.targetArch == X86_64_TRIPLE) ? "x86_64" : (env.targetArch == AARCH64_TRIPLE ? "SBSA" : "Unknown")
-                                trtllm_utils.appendBuildDescription(this, parentJob['name'], parentJob['build_number'], "====Require ${archStr} Multi-GPU Testing====<br/>")
-                                echo "[TEST-ONLY] Forced multi-GPU marker for label gate testing. Skipping actual single-GPU tests."
-                            }
-                            return
-                        }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// [TEST-ONLY] Force multi-GPU marker to test label gate.
// Remove this block after testing.
if (true) {
if (globalVars[ACTION_INFO]['parents'].size() > 0) {
def parentJob = globalVars[ACTION_INFO]['parents'][-2]
def archStr = (env.targetArch == X86_64_TRIPLE) ? "x86_64" : (env.targetArch == AARCH64_TRIPLE ? "SBSA" : "Unknown")
trtllm_utils.appendBuildDescription(this, parentJob['name'], parentJob['build_number'], "====Require ${archStr} Multi-GPU Testing====<br/>")
echo "[TEST-ONLY] Forced multi-GPU marker for label gate testing. Skipping actual single-GPU tests."
}
return
}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@jenkins/L0_Test.groovy` around lines 5940 - 5950, Remove the unconditional
test-only bypass block surrounding the if (true) statement, including its forced
multi-GPU marker, logging, and early return. Preserve the normal singleGpuJobs
execution flow in the surrounding test logic.

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #61546 [ run ] triggered by Bot. Commit: 408f423 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #61546 [ run ] completed with state FAILURE. Commit: 408f423
/LLM/main/L0_MergeRequest_PR pipeline #49758 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@ZhanruiSunCh
ZhanruiSunCh force-pushed the user/zhanruis/0716_multi_gpu_label_gate branch from 408f423 to e14a237 Compare July 24, 2026 09:38
@ZhanruiSunCh

Copy link
Copy Markdown
Collaborator Author

/bot run --add-multi-gpu-test

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #61559 [ run ] triggered by Bot. Commit: e14a237 Link to invocation

…abel gate

Skip all single-GPU tests and unconditionally write the multi-GPU
marker to trigger the label check in L0_MergeRequest. This makes
the test cycle fast (no actual tests run) while exercising the full
label validation path.

Remove this commit after testing.

Signed-off-by: ZhanruiSunCh <184402041+ZhanruiSunCh@users.noreply.github.com>
@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #61559 [ run ] completed with state FAILURE. Commit: e14a237
/LLM/main/L0_MergeRequest_PR pipeline #49770 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@ZhanruiSunCh
ZhanruiSunCh force-pushed the user/zhanruis/0716_multi_gpu_label_gate branch from e14a237 to e157bcf Compare July 24, 2026 10:26
@ZhanruiSunCh

Copy link
Copy Markdown
Collaborator Author

/bot run --add-multi-gpu-test

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #61565 [ run ] triggered by Bot. Commit: e157bcf Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #61565 [ run ] completed with state FAILURE. Commit: e157bcf
/LLM/main/L0_MergeRequest_PR pipeline #49776 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

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