[ci] allow manual label to trigger ci in rust, change ci order (#14016)

This commit is contained in:
Simo Lin
2025-11-26 11:38:50 -08:00
committed by GitHub
parent 66f242b98f
commit 69a03bc3f7
6 changed files with 79 additions and 56 deletions

View File

@@ -12,16 +12,8 @@ concurrency:
cancel-in-progress: true
jobs:
# ==================== PR Gate ==================== #
pr-gate:
uses: ./.github/workflows/pr-gate.yml
secrets: inherit
# ================================================= #
# ==================== Check Changes ==================== #
check-changes:
needs: [pr-gate]
runs-on: ubuntu-latest
outputs:
main_package: ${{ steps.filter.outputs.main_package }}
@@ -40,10 +32,16 @@ jobs:
- "scripts/ci/npu_ci_install_dependency.sh"
- "test/srt/ascend/**"
- ".github/workflows/pr-test-npu.yml"
# ======================================================= #
# ==================== PR Gate ==================== #
pr-gate:
needs: check-changes
if: needs.check-changes.outputs.main_package == 'true'
uses: ./.github/workflows/pr-gate.yml
secrets: inherit
per-commit-1-npu-a2:
needs: [check-changes]
needs: [check-changes, pr-gate]
if: needs.check-changes.outputs.main_package == 'true'
runs-on: linux-arm64-npu-1
container:
@@ -82,7 +80,7 @@ jobs:
python3 run_suite.py --suite per-commit-1-npu-a2
per-commit-2-npu-a2:
needs: [check-changes]
needs: [check-changes, pr-gate]
if: needs.check-changes.outputs.main_package == 'true'
runs-on: linux-arm64-npu-2
strategy:
@@ -125,7 +123,7 @@ jobs:
python3 run_suite.py --suite per-commit-2-npu-a2 --auto-partition-id ${{ matrix.part }} --auto-partition-size 3
per-commit-4-npu-a2:
needs: [check-changes]
needs: [check-changes, pr-gate]
if: needs.check-changes.outputs.main_package == 'true'
runs-on: linux-arm64-npu-4
container:
@@ -164,7 +162,7 @@ jobs:
python3 run_suite.py --suite per-commit-4-npu-a2 --timeout-per-file 3600
per-commit-16-npu-a3:
needs: [check-changes]
needs: [check-changes, pr-gate]
if: needs.check-changes.outputs.main_package == 'true'
runs-on: linux-aarch64-a3-16
strategy:

View File

@@ -9,6 +9,7 @@ on:
- 'sgl-router/**'
pull_request:
branches: [ main ]
types: [opened, synchronize, reopened, labeled]
paths:
- 'python/sglang/srt/disaggregation/**'
- 'scripts/ci/ci_start_disaggregation_servers.sh'
@@ -26,7 +27,11 @@ permissions:
jobs:
test-disaggregation:
if: github.event_name != 'pull_request' || (contains(github.event.pull_request.labels.*.name, 'run-ci') && contains(github.event.pull_request.labels.*.name, 'router-benchmark'))
if: |
github.event_name != 'pull_request' ||
(github.event.action != 'labeled' && contains(github.event.pull_request.labels.*.name, 'run-ci') && contains(github.event.pull_request.labels.*.name, 'router-benchmark')) ||
(github.event.action == 'labeled' && github.event.label.name == 'run-ci' && contains(github.event.pull_request.labels.*.name, 'router-benchmark')) ||
(github.event.action == 'labeled' && github.event.label.name == 'router-benchmark' && contains(github.event.pull_request.labels.*.name, 'run-ci'))
runs-on: [8-gpu-h200-oracle]
timeout-minutes: 45

View File

@@ -7,6 +7,7 @@ on:
- "sgl-router/**"
pull_request:
branches: [ main ]
types: [opened, synchronize, reopened, labeled]
paths:
- "sgl-router/**"
workflow_dispatch:
@@ -21,7 +22,10 @@ env:
jobs:
maturin-build-test:
if: github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'run-ci')
if: |
github.event_name != 'pull_request' ||
(github.event.action != 'labeled' && contains(github.event.pull_request.labels.*.name, 'run-ci')) ||
(github.event.action == 'labeled' && github.event.label.name == 'run-ci')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -71,7 +75,10 @@ jobs:
python -c "from sglang_router.sglang_router_rs import Router; print('Rust extension: OK')"
python -m sglang_router.launch_router --help > /dev/null && echo "Entry point: OK"
router-unit-tests:
if: github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'run-ci')
if: |
github.event_name != 'pull_request' ||
(github.event.action != 'labeled' && contains(github.event.pull_request.labels.*.name, 'run-ci')) ||
(github.event.action == 'labeled' && github.event.label.name == 'run-ci')
runs-on: ubuntu-latest
steps:
- name: Checkout code
@@ -134,7 +141,10 @@ jobs:
run: sccache --show-stats
router-http-tests:
if: github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'run-ci')
if: |
github.event_name != 'pull_request' ||
(github.event.action != 'labeled' && contains(github.event.pull_request.labels.*.name, 'run-ci')) ||
(github.event.action == 'labeled' && github.event.label.name == 'run-ci')
runs-on: 4-gpu-a10
timeout-minutes: 32
steps:
@@ -203,7 +213,10 @@ jobs:
path: sgl-router/benchmark_**/
router-grpc-response-api-tests:
if: github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'run-ci')
if: |
github.event_name != 'pull_request' ||
(github.event.action != 'labeled' && contains(github.event.pull_request.labels.*.name, 'run-ci')) ||
(github.event.action == 'labeled' && github.event.label.name == 'run-ci')
runs-on: 4-gpu-a10
timeout-minutes: 32
steps:

View File

@@ -12,13 +12,8 @@ concurrency:
cancel-in-progress: false
jobs:
# ==================== PR Gate ==================== #
pr-gate:
uses: ./.github/workflows/pr-gate.yml
secrets: inherit
# ================= Check Changes ================= #
# ==================== Check Changes ==================== #
check-changes:
needs: [pr-gate]
runs-on: ubuntu-latest
outputs:
main_package: ${{ steps.filter.outputs.main_package }}
@@ -32,16 +27,23 @@ jobs:
with:
filters: |
main_package:
- "python/**"
- "!python/sglang/multimodal_gen/**"
- "python/sglang/!(multimodal_gen)/**"
- "python/*.toml"
- "scripts/ci/**"
- "test/**"
- "sgl-kernel/**"
- ".github/workflows/pr-test-xeon.yml"
- "docker/xeon.Dockerfile"
# ==================== PR Gate ==================== #
pr-gate:
needs: check-changes
if: needs.check-changes.outputs.main_package == 'true'
uses: ./.github/workflows/pr-gate.yml
secrets: inherit
build-test:
needs: [check-changes]
needs: [check-changes, pr-gate]
if: needs.check-changes.outputs.main_package == 'true'
runs-on: xeon-gnr
env:

View File

@@ -21,12 +21,8 @@ concurrency:
cancel-in-progress: true
jobs:
call-gate:
uses: ./.github/workflows/pr-gate.yml
secrets: inherit
# =============================================== check changes ====================================================
check-changes:
needs: [call-gate]
runs-on: ubuntu-latest
outputs:
main_package: ${{ steps.filter.outputs.main_package }}
@@ -67,10 +63,20 @@ jobs:
echo "| multimodal_gen | ${{ steps.filter.outputs.multimodal_gen }} |"
} >> $GITHUB_STEP_SUMMARY
# =============================================== PR Gate ====================================================
call-gate:
needs: check-changes
if: |
needs.check-changes.outputs.main_package == 'true' ||
needs.check-changes.outputs.sgl_kernel == 'true' ||
needs.check-changes.outputs.multimodal_gen == 'true'
uses: ./.github/workflows/pr-gate.yml
secrets: inherit
# =============================================== sgl-kernel ====================================================
sgl-kernel-build-wheels:
needs: [check-changes]
needs: [check-changes, call-gate]
if: needs.check-changes.outputs.sgl_kernel == 'true'
runs-on: x64-kernel-build-node
strategy:
@@ -110,7 +116,7 @@ jobs:
path: sgl-kernel/dist/*
sgl-kernel-build-wheels-arm:
needs: [check-changes]
needs: [check-changes, call-gate]
if: needs.check-changes.outputs.sgl_kernel == 'true'
runs-on: arm-kernel-build-node
strategy:
@@ -151,7 +157,7 @@ jobs:
path: sgl-kernel/dist/*
sgl-kernel-unit-test:
needs: [check-changes, sgl-kernel-build-wheels]
needs: [check-changes, call-gate, sgl-kernel-build-wheels]
if: needs.check-changes.outputs.sgl_kernel == 'true'
runs-on: 1-gpu-runner
env:
@@ -182,7 +188,7 @@ jobs:
pytest tests/
sgl-kernel-mla-test:
needs: [check-changes, sgl-kernel-build-wheels]
needs: [check-changes, call-gate, sgl-kernel-build-wheels]
if: needs.check-changes.outputs.sgl_kernel == 'true'
runs-on: 1-gpu-runner
env:
@@ -213,7 +219,7 @@ jobs:
python3 test_mla_deepseek_v3.py
sgl-kernel-benchmark-test:
needs: [check-changes, sgl-kernel-build-wheels]
needs: [check-changes, call-gate, sgl-kernel-build-wheels]
if: needs.check-changes.outputs.sgl_kernel == 'true'
runs-on: 1-gpu-runner
env:
@@ -321,7 +327,7 @@ jobs:
# =============================================== primary ====================================================
stage-a-test-1:
needs: [check-changes, sgl-kernel-build-wheels]
needs: [check-changes, call-gate, sgl-kernel-build-wheels]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 1-gpu-runner
@@ -353,7 +359,7 @@ jobs:
multimodal-gen-test-1-gpu:
needs: [check-changes, sgl-kernel-build-wheels]
needs: [check-changes, call-gate, sgl-kernel-build-wheels]
if: (always() && !failure() && !cancelled()) && needs.check-changes.outputs.multimodal_gen == 'true'
runs-on: 1-gpu-runner
strategy:
@@ -391,7 +397,7 @@ jobs:
multimodal-gen-test-2-gpu:
needs: [check-changes, sgl-kernel-build-wheels]
needs: [check-changes, call-gate, sgl-kernel-build-wheels]
if: (always() && !failure() && !cancelled()) && needs.check-changes.outputs.multimodal_gen == 'true'
runs-on: 2-gpu-runner
strategy:
@@ -429,7 +435,7 @@ jobs:
--total-partitions 2
quantization-test:
needs: [check-changes, stage-a-test-1]
needs: [check-changes, call-gate, stage-a-test-1]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 1-gpu-runner
@@ -456,7 +462,7 @@ jobs:
python3 run_suite.py --suite quantization_test
unit-test-backend-1-gpu:
needs: [check-changes, stage-a-test-1]
needs: [check-changes, call-gate, stage-a-test-1]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 1-gpu-runner
@@ -490,7 +496,7 @@ jobs:
python3 run_suite.py --suite per-commit-1-gpu --auto-partition-id ${{ matrix.part }} --auto-partition-size 15
unit-test-backend-2-gpu:
needs: [check-changes, unit-test-backend-1-gpu]
needs: [check-changes, call-gate, unit-test-backend-1-gpu]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 2-gpu-runner
@@ -523,7 +529,7 @@ jobs:
python3 run_suite.py --suite per-commit-2-gpu --auto-partition-id ${{ matrix.part }} --auto-partition-size 2
unit-test-backend-4-gpu:
needs: [check-changes, unit-test-backend-2-gpu]
needs: [check-changes, call-gate, unit-test-backend-2-gpu]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 4-gpu-h100
@@ -556,7 +562,7 @@ jobs:
python3 run_suite.py --suite per-commit-4-gpu --auto-partition-id ${{ matrix.part }} --auto-partition-size 2
unit-test-backend-8-gpu-h200:
needs: [check-changes, unit-test-backend-2-gpu]
needs: [check-changes, call-gate, unit-test-backend-2-gpu]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 8-gpu-h200
@@ -589,7 +595,7 @@ jobs:
python3 run_suite.py --suite per-commit-8-gpu-h200 --auto-partition-id ${{ matrix.part }} --auto-partition-size 3
unit-test-backend-8-gpu-h20:
needs: [check-changes, unit-test-backend-2-gpu]
needs: [check-changes, call-gate, unit-test-backend-2-gpu]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 8-gpu-h20
@@ -623,7 +629,7 @@ jobs:
python3 run_suite.py --suite per-commit-8-gpu-h20 --auto-partition-id ${{ matrix.part }} --auto-partition-size 2
performance-test-1-gpu-part-1:
needs: [check-changes, stage-a-test-1]
needs: [check-changes, call-gate, stage-a-test-1]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 1-gpu-runner
@@ -684,7 +690,7 @@ jobs:
python3 -m unittest test_bench_serving.TestBenchServing.test_lora_online_latency_with_concurrent_adapter_updates
performance-test-1-gpu-part-2:
needs: [check-changes, stage-a-test-1]
needs: [check-changes, call-gate, stage-a-test-1]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 1-gpu-runner
@@ -737,7 +743,7 @@ jobs:
python3 -m unittest test_bench_serving.TestBenchServing.test_vlm_online_latency
performance-test-1-gpu-part-3:
needs: [check-changes, stage-a-test-1]
needs: [check-changes, call-gate, stage-a-test-1]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 1-gpu-runner
@@ -784,7 +790,7 @@ jobs:
python3 -m unittest test_bench_serving.TestBenchServing.test_embeddings_api_batch_scaling
performance-test-2-gpu:
needs: [check-changes, unit-test-backend-2-gpu]
needs: [check-changes, call-gate, unit-test-backend-2-gpu]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 2-gpu-runner
@@ -843,7 +849,7 @@ jobs:
python3 -m unittest test_bench_serving.TestBenchServing.test_pp_long_context_prefill
accuracy-test-1-gpu:
needs: [check-changes, stage-a-test-1]
needs: [check-changes, call-gate, stage-a-test-1]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 1-gpu-runner
@@ -875,7 +881,7 @@ jobs:
python3 test_eval_accuracy_large.py
accuracy-test-2-gpu:
needs: [check-changes, accuracy-test-1-gpu]
needs: [check-changes, call-gate, accuracy-test-1-gpu]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 2-gpu-runner
@@ -907,7 +913,7 @@ jobs:
python3 test_moe_eval_accuracy_large.py
unit-test-deepep-4-gpu:
needs: [check-changes, unit-test-backend-2-gpu]
needs: [check-changes, call-gate, unit-test-backend-2-gpu]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 4-gpu-h100
@@ -936,7 +942,7 @@ jobs:
python3 run_suite.py --suite per-commit-4-gpu-deepep
unit-test-deepep-8-gpu:
needs: [check-changes, unit-test-backend-2-gpu]
needs: [check-changes, call-gate, unit-test-backend-2-gpu]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 8-gpu-h200
@@ -965,7 +971,7 @@ jobs:
python3 run_suite.py --suite per-commit-8-gpu-h200-deepep
unit-test-backend-4-gpu-b200:
needs: [check-changes, unit-test-backend-2-gpu]
needs: [check-changes, call-gate, unit-test-backend-2-gpu]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 4-gpu-b200
@@ -999,7 +1005,7 @@ jobs:
python3 run_suite.py --suite per-commit-4-gpu-b200 --auto-partition-id ${{ matrix.part }} --auto-partition-size 2 --timeout-per-file 1800
unit-test-backend-4-gpu-gb200:
needs: [check-changes, unit-test-backend-2-gpu, sgl-kernel-build-wheels-arm]
needs: [check-changes, call-gate, unit-test-backend-2-gpu, sgl-kernel-build-wheels-arm]
if: always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
runs-on: 4-gpu-gb200