fix(ci): replace push path filters with runtime path gate in GPU workflows#558
Merged
mchmarny merged 7 commits intoNVIDIA:mainfrom Apr 14, 2026
Merged
Conversation
a9aa368 to
80866c4
Compare
80866c4 to
7b4b089
Compare
7b4b089 to
43ce3e5
Compare
dims
approved these changes
Apr 14, 2026
…flows GPU workflows use push path filters on pull-request/* branches created by copy-pr-bot. These filters compare against the previous push SHA, not the merge base, causing two failure modes: 1. False positives: rebasing onto main includes merged changes in the push diff, triggering GPU tests for unrelated PRs. 2. False negatives: a subsequent push touching only unrelated files prevents the workflow from starting, even when the PR still contains GPU-relevant changes. Replace the push-level path filters with a runtime check-paths gate job using dorny/paths-filter with base: main. This compares the actual PR diff against main, making check-paths the single source of truth for path-based GPU test gating. The push trigger now fires on any push to pull-request/* branches, and the check-paths job determines whether the expensive GPU job should run. Schedule, workflow_dispatch, and labeled pull_request events bypass the gate and run unconditionally.
19aa179 to
cd050b0
Compare
23 tasks
mchmarny
approved these changes
Apr 14, 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
Replace
on.push.pathsfilters with a runtimecheck-pathsgate job in all four GPU workflows. The gate usesdorny/paths-filterwithbase: mainto evaluate the actual PR diff, making it the single source of truth for path-based GPU test gating.This also isolates manual
workflow_dispatchruns frompushconcurrency so unrelated PR updates do not cancel in-flight manual GPU validations.Motivation / Context
GPU workflows trigger on
pushtopull-request/*branches (created bycopy-pr-bot). The existingon.push.pathsfilters compare against the previous push SHA, not the merge base, causing two failure modes:mainincludes merged changes in the push diff, triggering GPU tests for unrelated PRs (observed on PR fix(ci): auto-label new issues by area and assign owners #535 after rebasing ontomainwhich included fix(ci): improve GPU test reliability and deploy timeout handling #539's GPU workflow changes).Broadening
pushto allpull-request/*updates also means workflow-level concurrency must be event-aware, otherwise an unrelatedpushrun can cancel an in-flight manualworkflow_dispatchrun beforecheck-pathsgets a chance to skip the GPU job.Fixes: N/A
Related: #553, #554
Type of Change
Component(s) Affected
cmd/aicr,pkg/cli)cmd/aicrd,pkg/api,pkg/server)pkg/recipe)pkg/bundler,pkg/component/*)pkg/collector,pkg/snapshotter)pkg/validator)pkg/errors,pkg/k8s)docs/,examples/)Implementation Notes
on.push.pathsfrom all four GPU workflows — the push trigger now fires on any push topull-request/*branchescheck-pathsgate job to each workflow usingdorny/paths-filter@v3.0.2withbase: maincheck-pathsis the single source of truth for path filtering — no duplicate path lists between trigger-level and job-levelpushevents (~10s onubuntu-latest)schedule,workflow_dispatch, andpull_request(labeled) events bypass the gate and run unconditionallygithub.event_nameso manualworkflow_dispatchruns do not share cancellation state withpushruns on the same PR branchcheck-pathsscheduleworkflow_dispatchpull_request+run-gpu-testslabelpush+ relevant paths changed vs maintruepush+ no relevant paths vs mainfalseTesting
make lintpassed locallymake qualifyfailed in this workspace due an unrelated Go toolchain mismatch:compile: version "go1.26.1" does not match go tool version "go1.25.6"CI-only change — no Go code modified.
Risk Assessment
Rollout notes: If the gate causes false negatives (GPU tests not running when they should), the
run-gpu-testslabel bypass still works as a safety valve. Revert is a single commit.Checklist
make testwith-race)make lint)git commit -S) — GPG signing info