Skip to content

feat: add direct vLLM provider support #791

feat: add direct vLLM provider support

feat: add direct vLLM provider support #791

Workflow file for this run

name: E2E Backend Integration Tests
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
permissions:
contents: read
jobs:
e2e-backend:
runs-on: ubuntu-latest-16-cores
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Setup Go
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version: "1.25"
cache-dependency-path: controller/go.sum
- name: Setup Bun
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: latest
- name: Setup Kind
run: |
go install sigs.k8s.io/kind@latest
kind create cluster --name airunway-backend-e2e --wait 120s
- name: Install KAITO operator
run: |
helm repo add kaito https://kaito-project.github.io/kaito/charts/kaito
# If Gateway API Inference Extension CRDs are pre-installed (e.g. via kubectl apply),
# add --skip-crds to avoid a field-manager conflict on InferencePool.
helm install kaito-workspace kaito/workspace \
--namespace kaito-workspace \
--create-namespace \
--set featureGates.disableNodeAutoProvisioning=true
kubectl wait --for=condition=Available deployment -n kaito-workspace -l app.kubernetes.io/name=workspace --timeout=120s
- name: Build and deploy controller
run: |
make controller-docker-build CONTROLLER_IMG=airunway-controller:e2e
kind load docker-image airunway-controller:e2e --name airunway-backend-e2e
make controller-deploy CONTROLLER_IMG=airunway-controller:e2e
kubectl wait --for=condition=Available deployment -n airunway-system -l control-plane=controller-manager --timeout=120s
- name: Build and deploy KAITO provider
run: |
make -C providers/kaito docker-build IMG=kaito-provider:e2e
kind load docker-image kaito-provider:e2e --name airunway-backend-e2e
make -C providers/kaito deploy IMG=kaito-provider:e2e
kubectl wait --for=condition=Available deployment -n airunway-system -l control-plane=kaito-provider --timeout=120s
- name: Wait for provider registration
run: |
kubectl wait --for=jsonpath='{.status.ready}'=true inferenceproviderconfig/kaito --timeout=120s
- name: Install dependencies
run: bun ci
- name: Run backend integration tests
run: |
cd backend
bun test
- name: Collect debug info
if: failure()
run: |
echo "=== InferenceProviderConfigs ==="
kubectl get inferenceproviderconfigs -o yaml
echo "=== Controller Logs ==="
kubectl logs -n airunway-system -l control-plane=controller-manager --tail=100
echo "=== KAITO Provider Logs ==="
kubectl logs -n airunway-system -l control-plane=kaito-provider --tail=100
echo "=== Pods ==="
kubectl get pods -A
- name: Cleanup
if: always()
run: |
kind delete cluster --name airunway-backend-e2e