Skip to content

Commit ddf3a76

Browse files
authored
Merge branch 'main' into feat/intent-classification-lora-auto-detection
2 parents aaba3a4 + 90c7cda commit ddf3a76

File tree

118 files changed

+11362
-379
lines changed

Some content is hidden

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

118 files changed

+11362
-379
lines changed

.github/workflows/ci-changes.yml

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
name: CI Changes
2+
on:
3+
workflow_call:
4+
outputs:
5+
core:
6+
value: ${{ jobs.filter.outputs.core }}
7+
dashboard:
8+
value: ${{ jobs.filter.outputs.dashboard }}
9+
website:
10+
value: ${{ jobs.filter.outputs.website }}
11+
docs:
12+
value: ${{ jobs.filter.outputs.docs }}
13+
helm:
14+
value: ${{ jobs.filter.outputs.helm }}
15+
e2e:
16+
value: ${{ jobs.filter.outputs.e2e }}
17+
ci:
18+
value: ${{ jobs.filter.outputs.ci }}
19+
docker:
20+
value: ${{ jobs.filter.outputs.docker }}
21+
make:
22+
value: ${{ jobs.filter.outputs.make }}
23+
24+
jobs:
25+
filter:
26+
runs-on: ubuntu-latest
27+
outputs:
28+
core: ${{ steps.changes.outputs.core }}
29+
dashboard: ${{ steps.changes.outputs.dashboard }}
30+
website: ${{ steps.changes.outputs.website }}
31+
docs: ${{ steps.changes.outputs.docs }}
32+
helm: ${{ steps.changes.outputs.helm }}
33+
e2e: ${{ steps.changes.outputs.e2e }}
34+
ci: ${{ steps.changes.outputs.ci }}
35+
docker: ${{ steps.changes.outputs.docker }}
36+
make: ${{ steps.changes.outputs.make }}
37+
steps:
38+
- uses: actions/checkout@v4
39+
with:
40+
fetch-depth: 0
41+
- id: changes
42+
uses: dorny/paths-filter@v3
43+
with:
44+
token: ${{ github.token }}
45+
filters: |
46+
core:
47+
- 'src/**'
48+
- 'candle-binding/**'
49+
- 'bench/**'
50+
- 'config/**'
51+
- 'scripts/**'
52+
- 'examples/**'
53+
- 'e2e/**'
54+
- 'tools/**'
55+
- 'go.mod'
56+
- 'go.sum'
57+
- 'Cargo.toml'
58+
- 'Cargo.lock'
59+
- 'pyproject.toml'
60+
- 'e2e-tests/llm-katan/**'
61+
dashboard:
62+
- 'dashboard/**'
63+
website:
64+
- 'website/**'
65+
docs:
66+
- 'docs/**'
67+
- '**/*.md'
68+
- '**/*.mdx'
69+
helm:
70+
- 'deploy/helm/**'
71+
e2e:
72+
- 'e2e-tests/**'
73+
- 'e2e/**'
74+
- 'scripts/quickstart.sh'
75+
- 'deploy/docker-compose/**'
76+
- 'deploy/kubernetes/**'
77+
- 'deploy/kserve/**'
78+
- 'deploy/openshift/**'
79+
ci:
80+
- '.github/workflows/**'
81+
docker:
82+
- 'Dockerfile*'
83+
- 'docker/**'
84+
- 'docker-compose*'
85+
- 'deploy/docker-compose/**'
86+
make:
87+
- 'Makefile'
88+
- 'tools/make/**'

.github/workflows/docker-publish.yml

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,21 @@ on:
2929
- "src/**"
3030
- "e2e-tests/llm-katan/**"
3131

32+
concurrency:
33+
group: ${{ github.workflow }}-${{ github.ref }}
34+
cancel-in-progress: true
35+
3236
jobs:
3337
# Build job for multi-architecture Docker images
3438
build_multiarch:
35-
if: github.repository == 'vllm-project/semantic-router'
39+
if: github.repository == 'vllm-project/semantic-router' && !github.event.pull_request.draft
3640
runs-on: ubuntu-latest
3741
permissions:
3842
contents: read
3943
packages: write
4044
strategy:
4145
matrix:
42-
image: [extproc, llm-katan, dashboard]
46+
image: [extproc, llm-katan, dashboard, model-downloader]
4347
# Multi-architecture build strategy:
4448
# - AMD64: Native build on ubuntu-latest (fast)
4549
# - ARM64: Cross-compilation on ubuntu-latest (faster than emulation)
@@ -171,6 +175,10 @@ jobs:
171175
echo "context=." >> $GITHUB_OUTPUT
172176
echo "dockerfile=./dashboard/backend/Dockerfile" >> $GITHUB_OUTPUT
173177
echo "platform=linux/${{ matrix.arch }}" >> $GITHUB_OUTPUT
178+
elif [ "${{ matrix.image }}" = "model-downloader" ]; then
179+
echo "context=." >> $GITHUB_OUTPUT
180+
echo "dockerfile=./Dockerfile.model-downloader" >> $GITHUB_OUTPUT
181+
echo "platform=linux/${{ matrix.arch }}" >> $GITHUB_OUTPUT
174182
fi
175183
176184
- name: Generate tags
@@ -236,7 +244,7 @@ jobs:
236244
packages: write
237245
strategy:
238246
matrix:
239-
image: [extproc, llm-katan, dashboard]
247+
image: [extproc, llm-katan, dashboard, model-downloader]
240248

241249
steps:
242250
- name: Log in to GitHub Container Registry

.github/workflows/docker-release.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ on:
55
tags:
66
- 'v*' # Triggers on version tags like v1.0.0, v2.1.3, etc.
77

8+
concurrency:
9+
group: ${{ github.workflow }}-${{ github.ref }}
10+
cancel-in-progress: true
11+
812
jobs:
913
build_and_push_extproc:
1014
if: github.repository == 'vllm-project/semantic-router'

.github/workflows/helm-publish.yml

Lines changed: 44 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@ name: Publish Helm Chart
22

33
on:
44
pull_request:
5+
types: [opened, synchronize, reopened, ready_for_review]
56
branches:
67
- main
78
paths:
8-
- 'deploy/helm/**'
9+
- "deploy/helm/**"
910
push:
1011
branches:
1112
- main
1213
paths:
13-
- 'deploy/helm/**'
14+
- "deploy/helm/**"
1415
workflow_dispatch:
1516

1617
env:
@@ -20,73 +21,61 @@ env:
2021
CHART_NAME: semantic-router
2122

2223
jobs:
23-
publish-chart:
24-
name: Publish Helm Chart to GHCR
24+
validate-and-package:
25+
name: Validate and Package
26+
if: ${{ !github.event.pull_request.draft }}
2527
runs-on: ubuntu-latest
2628
permissions:
2729
contents: read
28-
packages: write
30+
outputs:
31+
chart-name: ${{ steps.package.outputs.name }}
2932
steps:
30-
- name: Checkout code
31-
uses: actions/checkout@v4
32-
33-
- name: Set up Helm
34-
uses: azure/setup-helm@v4
33+
- uses: actions/checkout@v4
34+
- uses: azure/setup-helm@v4
3535
with:
3636
version: ${{ env.HELM_VERSION }}
3737

38-
- name: Set lowercase repository owner
39-
run: echo "REPOSITORY_OWNER_LOWER=$(echo $GITHUB_REPOSITORY_OWNER | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
40-
41-
- name: Log in to GitHub Container Registry
42-
run: |
43-
echo "${{ secrets.GITHUB_TOKEN }}" | helm registry login ${{ env.REGISTRY }} --username ${{ github.actor }} --password-stdin
44-
45-
- name: Modify chart version to latest
46-
run: |
47-
echo "::group::Modify Chart.yaml"
48-
# Backup original Chart.yaml
49-
cp ${{ env.CHART_PATH }}/Chart.yaml ${{ env.CHART_PATH }}/Chart.yaml.bak
50-
51-
# Replace version with 'v0.0.0-latest' (valid semver with prerelease tag)
52-
sed -i 's/^version:.*/version: v0.0.0-latest/' ${{ env.CHART_PATH }}/Chart.yaml
53-
54-
echo "Modified Chart.yaml:"
55-
grep '^version:' ${{ env.CHART_PATH }}/Chart.yaml
56-
echo "::endgroup::"
57-
58-
- name: Package Helm chart
59-
run: |
60-
echo "::group::Package Chart"
61-
mkdir -p ./dist
62-
helm package ${{ env.CHART_PATH }} --destination ./dist
63-
echo "::endgroup::"
64-
65-
echo "::group::Packaged Chart"
66-
ls -lh ./dist/
67-
echo "::endgroup::"
38+
- name: Lint chart
39+
run: helm lint ${{ env.CHART_PATH }}
6840

69-
- name: Push chart to GHCR
41+
- name: Package chart
42+
id: package
7043
run: |
71-
echo "::group::Push to GHCR"
72-
CHART_PACKAGE="./dist/${{ env.CHART_NAME }}-v0.0.0-latest.tgz"
44+
helm package ${{ env.CHART_PATH }} --version v0.0.0-latest --destination .
45+
echo "name=$(ls *.tgz)" >> $GITHUB_OUTPUT
7346
74-
# Push to GHCR using OCI format with v0.0.0-latest tag
75-
helm push "${CHART_PACKAGE}" oci://${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER_LOWER }}/charts
47+
- name: Upload packaged chart
48+
if: github.event_name != 'pull_request'
49+
uses: actions/upload-artifact@v4
50+
with:
51+
name: helm-chart
52+
path: "*.tgz"
53+
retention-days: 1
7654

77-
echo "::endgroup::"
55+
publish-chart:
56+
name: Publish to GHCR
57+
runs-on: ubuntu-latest
58+
if: github.event_name != 'pull_request'
59+
needs: validate-and-package
60+
permissions:
61+
packages: write
62+
steps:
63+
- uses: actions/download-artifact@v4
64+
with:
65+
name: helm-chart
7866

79-
echo "✓ Chart published successfully!"
80-
echo "Chart: ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER_LOWER }}/charts/${{ env.CHART_NAME }}:v0.0.0-latest"
67+
- uses: azure/setup-helm@v4
68+
with:
69+
version: ${{ env.HELM_VERSION }}
8170

82-
- name: Restore original Chart.yaml
83-
if: always()
71+
- name: Publish chart
72+
env:
73+
CHART: ${{ needs.validate-and-package.outputs.chart-name }}
74+
REPO: ${{ env.REGISTRY }}/$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')/charts
8475
run: |
85-
# Restore original Chart.yaml
86-
if [ -f "${{ env.CHART_PATH }}/Chart.yaml.bak" ]; then
87-
mv ${{ env.CHART_PATH }}/Chart.yaml.bak ${{ env.CHART_PATH }}/Chart.yaml
88-
echo "Chart.yaml restored"
89-
fi
76+
echo "${{ secrets.GITHUB_TOKEN }}" | helm registry login ${{ env.REGISTRY }} -u ${{ github.actor }} --password-stdin
77+
helm push "$CHART" "oci://$REPO"
78+
helm registry logout ${{ env.REGISTRY }}
9079
9180
- name: Create release summary
9281
run: |
@@ -118,9 +107,3 @@ jobs:
118107
--namespace vllm-semantic-router-system
119108
\`\`\`
120109
EOF
121-
122-
- name: Logout from registry
123-
if: always()
124-
run: |
125-
helm registry logout ${{ env.REGISTRY }} || true
126-

.github/workflows/integration-test-docker.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ name: Integration Test [Docker Compose]
22

33
on:
44
pull_request:
5+
types: [opened, synchronize, reopened, ready_for_review]
56
branches:
67
- main
78
paths-ignore:
@@ -15,9 +16,13 @@ on:
1516
- '**/*.md'
1617
workflow_dispatch: # Allow manual triggering
1718

19+
concurrency:
20+
group: ${{ github.workflow }}-${{ github.ref }}
21+
cancel-in-progress: true
22+
1823
jobs:
1924
test-quickstart:
20-
if: github.repository == 'vllm-project/semantic-router'
25+
if: github.repository == 'vllm-project/semantic-router' && !github.event.pull_request.draft
2126
runs-on: ubuntu-latest
2227
timeout-minutes: 30
2328

.github/workflows/integration-test-dynamic-config.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ name: Integration Test [Dynamic Config]
22

33
on:
44
pull_request:
5+
types: [opened, synchronize, reopened, ready_for_review]
56
branches:
67
- main
78
paths-ignore:
@@ -15,10 +16,15 @@ on:
1516
- '**/*.md'
1617
workflow_dispatch: # Allow manual triggering
1718

19+
concurrency:
20+
group: ${{ github.workflow }}-${{ github.ref }}
21+
cancel-in-progress: true
22+
1823
jobs:
1924
integration-test:
25+
if: ${{ !github.event.pull_request.draft }}
2026
runs-on: ubuntu-latest
21-
timeout-minutes: 60
27+
timeout-minutes: 180
2228

2329
steps:
2430
- name: Check out the repo

.github/workflows/integration-test-helm.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,18 @@ on:
88
- 'website/**'
99
- '**/*.md'
1010
pull_request:
11+
types: [opened, synchronize, reopened, ready_for_review]
1112
branches:
1213
- main
1314
paths-ignore:
1415
- 'website/**'
1516
- '**/*.md'
1617
workflow_dispatch:
1718

19+
concurrency:
20+
group: ${{ github.workflow }}-${{ github.ref }}
21+
cancel-in-progress: true
22+
1823
env:
1924
HELM_VERSION: v3.14.0
2025
KIND_VERSION: v0.22.0
@@ -26,6 +31,7 @@ jobs:
2631
# Lint and validate Helm chart
2732
lint-chart:
2833
name: Lint Helm Chart
34+
if: ${{ !github.event.pull_request.draft }}
2935
runs-on: ubuntu-latest
3036
steps:
3137
- name: Checkout code

0 commit comments

Comments
 (0)