Skip to content

Commit 33f8362

Browse files
committed
sync to upstream
2 parents 9d333f4 + 9bfa2f2 commit 33f8362

672 files changed

Lines changed: 1046851 additions & 160775 deletions

File tree

Some content is hidden

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

.flake8

Lines changed: 0 additions & 19 deletions
This file was deleted.

.gitattributes

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
*.sh linguist-vendored
2+
python/kserve/kserve/models/** linguist-generated=true

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,19 @@
44
3. If you want *faster* PR reviews, read how: https://git.k8s.io/community/contributors/guide/pull-requests.md#best-practices-for-faster-reviews
55
4. Follow the instructions for writing a release note: https://git.k8s.io/community/contributors/guide/release-notes.md
66
5. If the PR is unfinished, see how to mark it: https://git.k8s.io/community/contributors/guide/pull-requests.md#marking-unfinished-pull-requests
7+
6. Re-running failed tests: comment `/rerun-all` to rerun all failed workflows.
78
-->
89

910
**What this PR does / why we need it**:
1011

1112
**Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
1213
Fixes #
1314

14-
**Type of changes**
15-
Please delete options that are not relevant.
16-
17-
- [ ] Bug fix (non-breaking change which fixes an issue)
18-
- [ ] New feature (non-breaking change which adds functionality)
19-
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
20-
- [ ] This change requires a documentation update
2115

2216
**Feature/Issue validation/testing**:
2317

24-
Please describe the tests that you ran to verify your changes and relevant result summary. Provide instructions so it can be reproduced.
25-
Please also list any relevant details for your test configuration.
18+
<!--Please describe the tests that you ran to verify your changes and relevant result summary. Provide instructions so it can be reproduced.
19+
Please also list any relevant details for your test configuration. -->
2620

2721
- [ ] Test A
2822
- [ ] Test B
@@ -31,13 +25,13 @@ Please also list any relevant details for your test configuration.
3125

3226
**Special notes for your reviewer**:
3327

34-
1. Please confirm that if this PR changes any image versions, then that's the sole change this PR makes.
28+
<!-- 1. Please confirm that if this PR changes any image versions, then that's the sole change this PR makes. -->
3529

3630
**Checklist**:
3731

3832
- [ ] Have you added unit/e2e tests that prove your fix is effective or that this feature works?
3933
- [ ] Has code been commented, particularly in hard-to-understand areas?
40-
- [ ] Have you made corresponding changes to the documentation?
34+
- [ ] Have you made corresponding changes to the [documentation](https://github.com/kserve/website)?
4135

4236
**Release note**:
4337
<!-- Write your release note:
@@ -47,8 +41,3 @@ Please also list any relevant details for your test configuration.
4741
```release-note
4842
4943
```
50-
51-
**Re-running failed tests**
52-
53-
- `/rerun-all` - rerun all failed workflows.
54-
- `/rerun-workflow <workflow name>` - rerun a specific failed workflow. Only one workflow name can be specified. Multiple /rerun-workflow commands are allowed per comment.

.github/actions/kserve-dep-setup/action.yml

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,20 @@ inputs:
1313
description: 'Enable KEDA for autoscaling'
1414
required: false
1515
default: 'false'
16+
deploy-llmisvc:
17+
description: 'Deploy LLM Inference Service Controller'
18+
required: false
19+
default: 'false'
1620
runs:
1721
using: "composite"
1822
steps:
1923
- name: Setup KServe dependencies
2024
shell: bash
2125
run: |
22-
shopt -s nocasematch
23-
24-
if [[ "${{ inputs.network-layer }}" == "kourier" ]]; then
25-
echo "Selected network layer ${{ inputs.network-layer }}"
26-
./test/scripts/gh-actions/setup-kourier.sh
27-
else
28-
echo "Selected network layer ${{ inputs.network-layer }}"
29-
./test/scripts/gh-actions/setup-deps.sh ${{ inputs.deployment-mode }} "${{ inputs.network-layer }}" "${{ inputs.enable-keda }}"
30-
fi
26+
shopt -s nocasematch
27+
echo "Selected network layer ${{ inputs.network-layer }}"
28+
./test/scripts/gh-actions/setup-deps.sh ${{ inputs.deployment-mode }} "${{ inputs.network-layer }}" "${{ inputs.enable-keda }}" "${{ inputs.deploy-llmisvc }}"
29+
3130
3231
- name: Update test overlays
3332
shell: bash
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
name: LLMInferenceService E2E Tests
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- "pkg/apis/serving/v1alpha1/llm*"
7+
- "pkg/apis/serving/v1alpha2/llm*"
8+
- "pkg/controller/v1alpha1/llmisvc/**"
9+
- "pkg/controller/v1alpha2/llmisvc/**"
10+
- "charts/kserve-llmisvc-resources/**"
11+
- "config/llmisvc/**"
12+
- "config/rbac/llmisvc/**"
13+
- "cmd/llmisvc/**"
14+
- "test/e2e/llmisvc/**"
15+
- ".github/workflows/e2e-test-llmisvc.yaml"
16+
- "hack/setup/quick-install/llmisvc-dependency-install.sh"
17+
18+
concurrency:
19+
group: ${{ github.workflow }}-${{ github.ref }}
20+
cancel-in-progress: true
21+
22+
env:
23+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
24+
TAG: ${{ github.sha }}
25+
DOCKER_IMAGES_PATH: "/mnt/docker-images"
26+
KO_DOCKER_REPO: "kserve"
27+
LLMISVC: "true"
28+
29+
jobs:
30+
31+
llmisvc-image-build:
32+
runs-on: ubuntu-latest
33+
steps:
34+
- name: Checkout source
35+
uses: actions/checkout@v4
36+
37+
- name: Load KServe environment variables
38+
run: ./kserve-images.sh --ci
39+
40+
- name: Free-up disk space
41+
uses: ./.github/actions/free-up-disk-space
42+
43+
- name: Setup Docker Buildx
44+
uses: docker/setup-buildx-action@v3
45+
with:
46+
cache-binary: true
47+
48+
- name: Build LLMISvc image
49+
run: |
50+
sudo mkdir -p ${DOCKER_IMAGES_PATH}
51+
sudo chown -R $USER ${DOCKER_IMAGES_PATH}
52+
./test/scripts/gh-actions/build-images.sh llmisvc
53+
docker image ls
54+
sudo ls -lh ${DOCKER_IMAGES_PATH}
55+
56+
- name: Upload LLMISvc controller image
57+
uses: actions/upload-artifact@v4
58+
with:
59+
name: ${{ env.LLMISVC_CONTROLLER_IMG }}-${{ env.TAG }}
60+
path: ${{ env.DOCKER_IMAGES_PATH }}/${{ env.LLMISVC_CONTROLLER_IMG }}-${{ env.TAG }}
61+
compression-level: 0
62+
if-no-files-found: error
63+
64+
test-llmisvc:
65+
runs-on: ubuntu-latest
66+
needs: [llmisvc-image-build]
67+
steps:
68+
- name: Checkout source
69+
uses: actions/checkout@v4
70+
71+
- name: Load KServe environment variables
72+
run: ./kserve-images.sh --ci
73+
74+
- name: Free-up disk space
75+
uses: ./.github/actions/free-up-disk-space
76+
77+
- name: Setup Go
78+
uses: actions/setup-go@v5
79+
with:
80+
go-version-file: go.mod
81+
82+
- name: Setup Python
83+
uses: actions/setup-python@v5
84+
with:
85+
python-version: "3.9"
86+
87+
- name: Setup Minikube
88+
uses: ./.github/actions/minikube-setup
89+
90+
- name: Download LLMISvc controller image
91+
uses: actions/download-artifact@v4
92+
with:
93+
name: ${{ env.LLMISVC_CONTROLLER_IMG }}-${{ env.TAG }}
94+
path: ./tmp
95+
96+
- name: Load LLMISvc controller image into minikube
97+
run: |
98+
# Load the tagged image into minikube
99+
minikube image load ./tmp/${{ env.LLMISVC_CONTROLLER_IMG }}-${{ env.TAG }}
100+
101+
# Verify image is loaded
102+
echo "Images in minikube:"
103+
minikube image ls | grep ${{ env.LLMISVC_CONTROLLER_IMG }} || echo "No llmisvc-controller images found"
104+
105+
- name: KServe dependency setup
106+
uses: ./.github/actions/kserve-dep-setup
107+
with:
108+
deploy-llmisvc: "true"
109+
110+
- name: Install UV
111+
run: ./test/scripts/gh-actions/setup-uv.sh
112+
113+
- name: Install KServe
114+
run: |
115+
./test/scripts/gh-actions/setup-kserve.sh
116+
117+
- name: Verify LLMISvc setup
118+
run: |
119+
echo "🔍 Verifying LLMISvc controller setup..."
120+
121+
echo "📋 LLMISvc Controller:"
122+
kubectl get pods -n kserve -l app.kubernetes.io/component=controller || true
123+
124+
echo "📋 LLM Resources:"
125+
kubectl get llminferenceserviceconfigs -A || true
126+
127+
echo "📋 Gateway API Resources:"
128+
kubectl get crd | grep inference || true
129+
130+
echo "📋 Envoy Gateway:"
131+
kubectl get pods -n envoy-gateway-system || true
132+
133+
echo "📋 AI Gateway:"
134+
kubectl get pods -n envoy-ai-gateway-system || true
135+
136+
echo "✅ LLMISvc setup verification complete!"
137+
138+
- name: Run predictor E2E tests
139+
id: predictor-tests
140+
timeout-minutes: 40
141+
run: |
142+
# Run only CPU tests for now using pytest markers (cluster_)
143+
# Available GPU vendors: amd, nvidia, intel
144+
./test/scripts/gh-actions/run-e2e-tests.sh "llminferenceservice and cluster_cpu" 1 "envoy-gateway"
145+
146+
- name: Check system status
147+
if: always()
148+
run: |
149+
./test/scripts/gh-actions/status-check.sh "llmisvc"

0 commit comments

Comments
 (0)