Skip to content
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .github/FILTERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ When you open a PR, CI checks which files changed and runs only relevant jobs:
| `snapshot_vllm` / `snapshot_sglang` / `snapshot_trtllm` | That framework's DynamoCheckpoint deploy suite |
| `deploy` | Deploy-specific tests |
| `vllm` / `sglang` / `trtllm` | Backend-specific tests |
| `sidecar` | Nothing directly; sidecar source and proto files also match `rust` |
| `vllm_sidecar` / `sglang_sidecar` / `trtllm_sidecar` | That engine's multi-architecture sidecar container build; shared sidecar changes trigger all three |
| `sidecar` | Nothing directly (classification only) |
| `benchmarks` | Dynamo runtime pipeline (runs `tests/benchmarks/**` pytest suite) |
| `sample` | Sample-backend unified test (piggybacks on vllm image) |
| `efa` | EFA runtime image builds for vLLM, SGLang, TRT-LLM (`container/templates/aws.Dockerfile` change) |
Expand All @@ -25,7 +26,7 @@ When you open a PR, CI checks which files changed and runs only relevant jobs:
| `ignore` | Nothing (classification only) |
| `rust` | Rust pre merge checks |

> **Note:** `docs`, `ignore`, and `sidecar` don't directly trigger CI jobs. They exist to satisfy coverage requirements - every file must match at least one filter. Sidecar source and proto files also match `rust`, which runs the workspace Rust checks.
> **Note:** `ignore` and `sidecar` don't directly trigger CI jobs. They exist to satisfy coverage requirements - every file must match at least one filter. Sidecar source and proto files also match `rust`, which runs the workspace Rust checks.

## Fixing "Uncovered Files" Errors

Expand Down
15 changes: 15 additions & 0 deletions .github/actions/changed-files/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,15 @@ outputs:
sidecar:
description: 'Whether sidecar files changed'
value: ${{ steps.filter.outputs.sidecar_any_modified }}
vllm_sidecar:
description: 'Whether vLLM sidecar image inputs changed'
value: ${{ steps.filter.outputs.vllm_sidecar_any_modified }}
sglang_sidecar:
description: 'Whether SGLang sidecar image inputs changed'
value: ${{ steps.filter.outputs.sglang_sidecar_any_modified }}
trtllm_sidecar:
description: 'Whether TensorRT-LLM sidecar image inputs changed'
value: ${{ steps.filter.outputs.trtllm_sidecar_any_modified }}
frontend:
description: 'Whether frontend files changed'
value: ${{ steps.filter.outputs.frontend_any_modified }}
Expand Down Expand Up @@ -173,6 +182,9 @@ runs:
echo "dgdr: ${{ steps.filter.outputs.dgdr_any_modified }}"
echo "planner: ${{ steps.filter.outputs.planner_any_modified }}"
echo "sidecar: ${{ steps.filter.outputs.sidecar_any_modified }}"
echo "vllm_sidecar: ${{ steps.filter.outputs.vllm_sidecar_any_modified }}"
echo "sglang_sidecar: ${{ steps.filter.outputs.sglang_sidecar_any_modified }}"
echo "trtllm_sidecar: ${{ steps.filter.outputs.trtllm_sidecar_any_modified }}"
echo "vllm: ${{ steps.filter.outputs.vllm_any_modified }}"
echo "sglang: ${{ steps.filter.outputs.sglang_any_modified }}"
echo "trtllm: ${{ steps.filter.outputs.trtllm_any_modified }}"
Expand All @@ -199,6 +211,9 @@ runs:
echo "dgdr: ${{ steps.filter.outputs.dgdr_all_modified_files }}"
echo "planner: ${{ steps.filter.outputs.planner_all_modified_files }}"
echo "sidecar: ${{ steps.filter.outputs.sidecar_all_modified_files }}"
echo "vllm_sidecar: ${{ steps.filter.outputs.vllm_sidecar_all_modified_files }}"
echo "sglang_sidecar: ${{ steps.filter.outputs.sglang_sidecar_all_modified_files }}"
echo "trtllm_sidecar: ${{ steps.filter.outputs.trtllm_sidecar_all_modified_files }}"
echo "vllm: ${{ steps.filter.outputs.vllm_all_modified_files }}"
echo "sglang: ${{ steps.filter.outputs.sglang_all_modified_files }}"
echo "trtllm: ${{ steps.filter.outputs.trtllm_all_modified_files }}"
Expand Down
35 changes: 33 additions & 2 deletions .github/filters.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@
# benchmarks -> dynamo build-test (runs tests/benchmarks/** pytest suite)
# efa -> all framework EFA runtime image builds (changes to container/templates/aws.Dockerfile)
# examples -> recipe-check (Kustomize recipe generation and unit tests)
# sidecar -> classification only; source and proto files also match rust
# vllm_sidecar / sglang_sidecar / trtllm_sidecar -> engine-specific sidecar image build
# docs -> fern docs lint, sync, and version release (docs/ directory)
#
# Filters for coverage only (no CI triggered):
# examples, ignore, sidecar
# ignore, sidecar

all:
- '**'
Expand Down Expand Up @@ -129,6 +129,10 @@ ignore:
# CODEOWNERS generation tooling (data + scripts). Validated by its own
# codeowners.yml workflow (triggers on '**'); no backend CI needed here.
- '.github/codeowners/**'
# Sidecar docs are intentionally excluded from the Fern docs filter and do
# not affect the built sidecar images.
- 'lib/sidecar/**/*.md'
- 'lib/sidecar/**/*.rst'

ci: &ci
- '.github/workflows/**'
Expand Down Expand Up @@ -282,6 +286,33 @@ planner:

sidecar:
- 'lib/sidecar/**'
- '.github/workflows/shared-build-sidecar.yml'
- '!**/*.md'
- '!**/*.rst'

# Engine-specific sidecar builds. Changes to common or to the reusable build
# workflow exercise all three images; engine-local changes exercise only that
# engine's image.
vllm_sidecar:
- 'lib/sidecar/common/**'
- 'lib/sidecar/vllm/**'
- '.github/workflows/shared-build-sidecar.yml'
- '!**/*.md'
- '!**/*.rst'

sglang_sidecar:
- 'lib/sidecar/common/**'
- 'lib/sidecar/sglang/**'
- '.github/workflows/shared-build-sidecar.yml'
- '!**/*.md'
- '!**/*.rst'

trtllm_sidecar:
- 'lib/sidecar/common/**'
- 'lib/sidecar/trtllm/**'
- '.github/workflows/shared-build-sidecar.yml'
- '!**/*.md'
- '!**/*.rst'

vllm:
- 'container/deps/requirements.vllm.txt'
Expand Down
29 changes: 17 additions & 12 deletions .github/scripts/test-filters.js
Original file line number Diff line number Diff line change
Expand Up @@ -112,33 +112,38 @@ const testCases = [
// Sidecar Rust and proto files should trigger Rust checks without unrelated E2E
{
file: 'lib/sidecar/common/src/lib.rs',
expect: { sidecar: true, rust: true, core: false, frontend: false, vllm: false, sglang: false, trtllm: false },
desc: 'common sidecar source avoids unrelated build and E2E filters'
expect: { sidecar: true, vllm_sidecar: true, sglang_sidecar: true, trtllm_sidecar: true, rust: true, core: false, frontend: false, vllm: false, sglang: false, trtllm: false },
desc: 'common sidecar source triggers all sidecar images without backend E2E'
},
{
file: 'lib/sidecar/vllm/proto/vllm_grpc.proto',
expect: { sidecar: true, rust: true, core: false, frontend: false, vllm: false, sglang: false, trtllm: false },
desc: 'vllm sidecar proto triggers Rust checks without backend E2E'
expect: { sidecar: true, vllm_sidecar: true, sglang_sidecar: false, trtllm_sidecar: false, rust: true, core: false, frontend: false, vllm: false, sglang: false, trtllm: false },
desc: 'vllm sidecar proto triggers only the vLLM image and Rust checks'
},
{
file: 'lib/sidecar/sglang/src/lib.rs',
expect: { sidecar: true, rust: true, core: false, frontend: false, vllm: false, sglang: false, trtllm: false },
desc: 'sglang sidecar source avoids backend E2E'
expect: { sidecar: true, vllm_sidecar: false, sglang_sidecar: true, trtllm_sidecar: false, rust: true, core: false, frontend: false, vllm: false, sglang: false, trtllm: false },
desc: 'sglang sidecar source triggers only the SGLang image and Rust checks'
},
{
file: 'lib/sidecar/trtllm/src/lib.rs',
expect: { sidecar: true, rust: true, core: false, frontend: false, vllm: false, sglang: false, trtllm: false },
desc: 'trtllm sidecar source does not route to sglang or trtllm E2E'
expect: { sidecar: true, vllm_sidecar: false, sglang_sidecar: false, trtllm_sidecar: true, rust: true, core: false, frontend: false, vllm: false, sglang: false, trtllm: false },
desc: 'trtllm sidecar source triggers only the TensorRT-LLM image and Rust checks'
},
{
file: 'lib/sidecar/vllm/deploy/agg.yaml',
expect: { sidecar: true, rust: false, core: false, frontend: false, vllm: false, sglang: false, trtllm: false },
desc: 'sidecar deployment config avoids Rust and E2E checks'
expect: { sidecar: true, vllm_sidecar: true, sglang_sidecar: false, trtllm_sidecar: false, rust: false, core: false, frontend: false, vllm: false, sglang: false, trtllm: false },
desc: 'vLLM sidecar deployment config triggers only the vLLM image'
},
{
file: 'lib/sidecar/README.md',
expect: { sidecar: true, rust: false, core: false, frontend: false, docs: false, vllm: false, sglang: false, trtllm: false },
desc: 'sidecar README avoids Rust, Fern, and E2E checks'
expect: { sidecar: false, ignore: true, rust: false, core: false, frontend: false, docs: false, vllm: false, sglang: false, trtllm: false },
desc: 'sidecar README avoids container, Rust, Fern, and E2E checks'
},
{
file: '.github/workflows/shared-build-sidecar.yml',
expect: { sidecar: true, vllm_sidecar: true, sglang_sidecar: true, trtllm_sidecar: true, core: true },
desc: 'shared sidecar build workflow exercises all three container jobs'
},

// Doc files should be excluded from core (negation patterns)
Expand Down
34 changes: 32 additions & 2 deletions .github/workflows/nightly-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,36 @@ jobs:
dev_version_suffix: ${{ needs.compute-dev-version.outputs.dev_suffix }}
secrets: inherit

vllm-sidecar-build:
name: vllm-sidecar
needs: [create-fresh-builder, resolve-source-sha]
uses: ./.github/workflows/shared-build-sidecar.yml
with:
builder_name: ${{ needs.create-fresh-builder.outputs.builder_name }}
sidecar: vllm
source_ref: ${{ needs.resolve-source-sha.outputs.source_sha }}
image_tag_suffix: '-nightly'

sglang-sidecar-build:
name: sglang-sidecar
needs: [create-fresh-builder, resolve-source-sha]
uses: ./.github/workflows/shared-build-sidecar.yml
with:
builder_name: ${{ needs.create-fresh-builder.outputs.builder_name }}
sidecar: sglang
source_ref: ${{ needs.resolve-source-sha.outputs.source_sha }}
image_tag_suffix: '-nightly'

trtllm-sidecar-build:
name: trtllm-sidecar
needs: [create-fresh-builder, resolve-source-sha]
uses: ./.github/workflows/shared-build-sidecar.yml
with:
builder_name: ${{ needs.create-fresh-builder.outputs.builder_name }}
sidecar: trtllm
source_ref: ${{ needs.resolve-source-sha.outputs.source_sha }}
image_tag_suffix: '-nightly'

# ============================================================================
# OPTIONAL NIGHTLY IMAGES (operator, planner, frontend, snapshot agent,
# runtime EFA variants)
Expand Down Expand Up @@ -1272,7 +1302,7 @@ jobs:
name: Clean K8s builder if exists
runs-on: prod-default-small-v2
if: always()
needs: [vllm-build, sglang-build, trtllm-build, dynamo-pipeline, operator-build, planner-build, frontend-build, vllm-efa-build, sglang-efa-build, trtllm-efa-build, create-fresh-builder]
needs: [vllm-build, sglang-build, trtllm-build, vllm-sidecar-build, sglang-sidecar-build, trtllm-sidecar-build, dynamo-pipeline, operator-build, planner-build, frontend-build, vllm-efa-build, sglang-efa-build, trtllm-efa-build, create-fresh-builder]
permissions:
contents: read
steps:
Expand All @@ -1294,7 +1324,7 @@ jobs:
############################## SLACK NOTIFICATION ##############################
notify-slack:
if: always()
needs: [vllm-test, vllm-multi-gpu-test, vllm-h100-test, sglang-test, sglang-multi-gpu-test, sglang-h100-test, trtllm-test, trtllm-multi-gpu-test, trtllm-h100-test, deploy-cleanup, rust-tests]
needs: [vllm-test, vllm-multi-gpu-test, vllm-h100-test, sglang-test, sglang-multi-gpu-test, sglang-h100-test, trtllm-test, trtllm-multi-gpu-test, trtllm-h100-test, vllm-sidecar-build, sglang-sidecar-build, trtllm-sidecar-build, deploy-cleanup, rust-tests]
permissions:
contents: read
actions: read # grant the reusable notifier read access to list this run's jobs
Expand Down
40 changes: 40 additions & 0 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@
frontend: ${{ steps.changes.outputs.frontend }}
benchmarks: ${{ steps.changes.outputs.benchmarks }}
sample: ${{ steps.changes.outputs.sample }}
vllm_sidecar: ${{ steps.changes.outputs.vllm_sidecar }}
sglang_sidecar: ${{ steps.changes.outputs.sglang_sidecar }}
trtllm_sidecar: ${{ steps.changes.outputs.trtllm_sidecar }}
efa: ${{ steps.changes.outputs.efa }}
base_ref: ${{ steps.changes.outputs.base_ref }}
merge_base_sha: ${{ steps.changes.outputs.merge_base_sha }}
Expand Down Expand Up @@ -158,6 +161,9 @@
- frontend-build
- frontend-test
- frontend-copy-to-acr
- vllm-sidecar-build
- sglang-sidecar-build
- trtllm-sidecar-build
if: always()
steps:
- name: Check all dependent jobs
Expand Down Expand Up @@ -336,14 +342,45 @@
- name: Lint and test Helm chart
run: make -C deploy/helm/charts/power-agent lint test

# ============================================================================
# SIDECAR CONTAINERS
# ============================================================================

vllm-sidecar-build:
name: vllm-sidecar
needs: [changed-files]
if: needs.changed-files.outputs.vllm_sidecar == 'true'
uses: ./.github/workflows/shared-build-sidecar.yml
with:
builder_name: ${{ needs.changed-files.outputs.builder_name }}
sidecar: vllm

sglang-sidecar-build:
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
name: sglang-sidecar
needs: [changed-files]
if: needs.changed-files.outputs.sglang_sidecar == 'true'
uses: ./.github/workflows/shared-build-sidecar.yml
with:
builder_name: ${{ needs.changed-files.outputs.builder_name }}
sidecar: sglang

trtllm-sidecar-build:
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
name: trtllm-sidecar
needs: [changed-files]
if: needs.changed-files.outputs.trtllm_sidecar == 'true'
uses: ./.github/workflows/shared-build-sidecar.yml
with:
builder_name: ${{ needs.changed-files.outputs.builder_name }}
sidecar: trtllm

# ============================================================================
# FRAMEWORK PIPELINES (Build → Test → Copy)
# ============================================================================
# ============================================================================
# BUILD PIPELINES
# ============================================================================

vllm-build:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {}
name: vllm-runtime # This name overlaps with other vllm jobs to group them in the UI
needs: [changed-files]
# `sample` is here because sample tests piggyback on this image and run as part of vllm-test.
Expand Down Expand Up @@ -1945,6 +1982,9 @@
- trtllm-multi-gpu-test
- trtllm-efa-build
- dynamo-pipeline
- vllm-sidecar-build
- sglang-sidecar-build
- trtllm-sidecar-build
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Expand Down
Loading
Loading