Skip to content

Commit 9dc677b

Browse files
Merge branch 'main' into feature/qwen3-reward-model
2 parents 91d16cf + 1be41e9 commit 9dc677b

File tree

492 files changed

+30307
-8988
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

492 files changed

+30307
-8988
lines changed

.github/CI_PERMISSIONS.json

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,13 @@
5555
"reason": "top contributor",
5656
"can_rerun_stage": true
5757
},
58+
"Chen-0210": {
59+
"can_tag_run_ci_label": true,
60+
"can_rerun_failed_ci": true,
61+
"cooldown_interval_minutes": 60,
62+
"reason": "custom override",
63+
"can_rerun_stage": true
64+
},
5865
"ClawSeven": {
5966
"can_tag_run_ci_label": true,
6067
"can_rerun_failed_ci": true,
@@ -121,7 +128,7 @@
121128
"HandH1998": {
122129
"can_tag_run_ci_label": true,
123130
"can_rerun_failed_ci": true,
124-
"cooldown_interval_minutes": 60,
131+
"cooldown_interval_minutes": 0,
125132
"reason": "custom override",
126133
"can_rerun_stage": true
127134
},
@@ -209,6 +216,13 @@
209216
"reason": "top contributor",
210217
"can_rerun_stage": true
211218
},
219+
"Shunkangz": {
220+
"can_tag_run_ci_label": true,
221+
"can_rerun_failed_ci": true,
222+
"cooldown_interval_minutes": 60,
223+
"reason": "custom override",
224+
"can_rerun_stage": true
225+
},
212226
"SimonCqk": {
213227
"can_tag_run_ci_label": true,
214228
"can_rerun_failed_ci": true,
@@ -412,6 +426,13 @@
412426
"reason": "custom override",
413427
"can_rerun_stage": true
414428
},
429+
"dongjiyingdjy": {
430+
"can_tag_run_ci_label": true,
431+
"can_rerun_failed_ci": true,
432+
"cooldown_interval_minutes": 60,
433+
"reason": "custom override",
434+
"can_rerun_stage": true
435+
},
415436
"dougyster": {
416437
"can_tag_run_ci_label": true,
417438
"can_rerun_failed_ci": true,
@@ -811,6 +832,13 @@
811832
"reason": "top contributor",
812833
"can_rerun_stage": true
813834
},
835+
"samuellees": {
836+
"can_tag_run_ci_label": true,
837+
"can_rerun_failed_ci": true,
838+
"cooldown_interval_minutes": 60,
839+
"reason": "custom override",
840+
"can_rerun_stage": true
841+
},
814842
"scottjlee": {
815843
"can_tag_run_ci_label": true,
816844
"can_rerun_failed_ci": true,
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
name: AMD CI Job Monitor
2+
3+
on:
4+
schedule:
5+
- cron: '0 0 * * *' # Daily at midnight UTC
6+
pull_request:
7+
paths:
8+
- '.github/workflows/amd-ci-job-monitor.yml'
9+
- 'scripts/ci/query_job_status.py'
10+
workflow_dispatch:
11+
inputs:
12+
hours:
13+
description: 'Time window in hours'
14+
required: false
15+
default: '24'
16+
type: string
17+
job_filter:
18+
description: 'Job name filter (leave empty for all AMD jobs)'
19+
required: false
20+
type: string
21+
22+
jobs:
23+
# Single job filter mode
24+
custom-report:
25+
name: Custom Job Report
26+
if: ${{ inputs.job_filter }}
27+
runs-on: ubuntu-latest
28+
env:
29+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
30+
steps:
31+
- name: Checkout code
32+
uses: actions/checkout@v4
33+
34+
- name: Set up Python
35+
uses: actions/setup-python@v5
36+
with:
37+
python-version: '3.10'
38+
39+
- name: Install dependencies
40+
run: pip install tabulate
41+
42+
- name: Generate Custom Job Report
43+
timeout-minutes: 30
44+
run: |
45+
python scripts/ci/query_job_status.py \
46+
--repo ${{ github.repository }} \
47+
--job "${{ inputs.job_filter }}" \
48+
--workflow "pr-test-amd.yml" \
49+
--hours ${{ inputs.hours || '24' }} \
50+
--summary
51+
52+
# Parse workflow files to get job names dynamically
53+
parse-workflows:
54+
name: Parse Workflow Jobs
55+
if: ${{ !inputs.job_filter }}
56+
runs-on: ubuntu-latest
57+
outputs:
58+
pr_jobs: ${{ steps.parse.outputs.pr_jobs }}
59+
nightly_jobs: ${{ steps.parse.outputs.nightly_jobs }}
60+
steps:
61+
- name: Checkout code
62+
uses: actions/checkout@v4
63+
64+
- name: Parse workflow files
65+
id: parse
66+
run: |
67+
# Parse pr-test-amd.yml and extract job names (exclude utility jobs)
68+
# Excluded: call-gate, check-changes, pr-test-amd-finish, cancel, check-all-jobs
69+
pr_jobs=$(yq -r '.jobs | keys | .[]' .github/workflows/pr-test-amd.yml | \
70+
grep -v -E '^(call-gate|check-changes|pr-test-amd-finish|cancel|check-all-jobs)$' | \
71+
jq -R -s -c 'split("\n") | map(select(length > 0))')
72+
echo "pr_jobs=$pr_jobs" >> $GITHUB_OUTPUT
73+
echo "PR jobs: $pr_jobs"
74+
75+
# Parse nightly-test-amd.yml and extract job names (exclude utility jobs)
76+
# Excluded: check-all-jobs
77+
nightly_jobs=$(yq -r '.jobs | keys | .[]' .github/workflows/nightly-test-amd.yml | \
78+
grep -v -E '^(check-all-jobs)$' | \
79+
jq -R -s -c 'split("\n") | map(select(length > 0))')
80+
echo "nightly_jobs=$nightly_jobs" >> $GITHUB_OUTPUT
81+
echo "Nightly jobs: $nightly_jobs"
82+
83+
# PR CI reports using dynamic matrix
84+
pr-ci-reports:
85+
name: PR - ${{ matrix.job_name }}
86+
needs: parse-workflows
87+
if: ${{ !inputs.job_filter }}
88+
runs-on: ubuntu-latest
89+
strategy:
90+
fail-fast: false
91+
matrix:
92+
job_name: ${{ fromJson(needs.parse-workflows.outputs.pr_jobs) }}
93+
env:
94+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
95+
steps:
96+
- name: Checkout code
97+
uses: actions/checkout@v4
98+
99+
- name: Set up Python
100+
uses: actions/setup-python@v5
101+
with:
102+
python-version: '3.10'
103+
104+
- name: Install dependencies
105+
run: pip install tabulate
106+
107+
- name: Generate Report
108+
timeout-minutes: 15
109+
run: |
110+
python scripts/ci/query_job_status.py \
111+
--repo ${{ github.repository }} \
112+
--job "${{ matrix.job_name }}" \
113+
--workflow "pr-test-amd.yml" \
114+
--hours ${{ inputs.hours || '24' }} \
115+
--summary
116+
117+
# Nightly AMD test reports using dynamic matrix
118+
nightly-reports:
119+
name: Nightly - ${{ matrix.job_name }}
120+
needs: parse-workflows
121+
if: ${{ !inputs.job_filter }}
122+
runs-on: ubuntu-latest
123+
strategy:
124+
fail-fast: false
125+
matrix:
126+
job_name: ${{ fromJson(needs.parse-workflows.outputs.nightly_jobs) }}
127+
env:
128+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
129+
steps:
130+
- name: Checkout code
131+
uses: actions/checkout@v4
132+
133+
- name: Set up Python
134+
uses: actions/setup-python@v5
135+
with:
136+
python-version: '3.10'
137+
138+
- name: Install dependencies
139+
run: pip install tabulate
140+
141+
- name: Generate Nightly Report
142+
timeout-minutes: 15
143+
run: |
144+
python scripts/ci/query_job_status.py \
145+
--repo ${{ github.repository }} \
146+
--job "${{ matrix.job_name }}" \
147+
--workflow "nightly-test-amd.yml" \
148+
--hours ${{ inputs.hours || '24' }} \
149+
--summary

.github/workflows/execute-notebook.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@ name: Execute Notebooks
33
on:
44
pull_request:
55
branches: [ main ]
6+
types: [opened, synchronize, reopened, labeled]
67
paths:
78
- "python/sglang/**"
89
- "docs/**"
10+
- "!python/sglang/**/*.md"
11+
- "!docs/**/*.md"
912
workflow_dispatch:
1013

1114

@@ -17,9 +20,16 @@ env:
1720
SGLANG_IS_IN_CI: true
1821

1922
jobs:
23+
call-gate:
24+
# Align with PR Test: fail fast if PR doesn't have run-ci label.
25+
# This makes /tag-and-rerun-ci work by rerunning this failed workflow.
26+
uses: ./.github/workflows/pr-gate.yml
27+
secrets: inherit
28+
2029
run-all-notebooks:
30+
needs: [call-gate]
2131
runs-on: 1-gpu-runner
22-
if: github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'run-ci')
32+
if: github.event_name != 'pull_request' || needs.call-gate.result == 'success'
2333
steps:
2434
- name: Checkout code
2535
uses: actions/checkout@v4
@@ -45,9 +55,11 @@ jobs:
4555
4656
notebook-finish:
4757
needs: [
58+
call-gate,
4859
run-all-notebooks
4960
]
5061
runs-on: ubuntu-latest
62+
if: always() && needs.run-all-notebooks.result != 'skipped'
5163
steps:
5264
- name: Check all dependent job statuses
5365
run: |

.github/workflows/lint.yml

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,3 @@ jobs:
3232
extensions: h,c,cpp,hpp,cu,cuh,cc
3333
clangFormatVersion: 18
3434
style: file
35-
36-
- name: Check proto files are in sync
37-
run: |
38-
if ! diff -q python/sglang/srt/grpc/sglang_scheduler.proto sgl-model-gateway/src/proto/sglang_scheduler.proto; then
39-
echo "❌ ERROR: Proto files are out of sync!"
40-
echo ""
41-
echo "The following files must be kept identical:"
42-
echo " - python/sglang/srt/grpc/sglang_scheduler.proto"
43-
echo " - sgl-model-gateway/src/proto/sglang_scheduler.proto"
44-
echo ""
45-
echo "Please ensure both files have the same content."
46-
echo ""
47-
echo "Differences:"
48-
diff python/sglang/srt/grpc/sglang_scheduler.proto sgl-model-gateway/src/proto/sglang_scheduler.proto || true
49-
exit 1
50-
fi

0 commit comments

Comments
 (0)