Support benchmarking script by using real application trace #893
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Installation Tests | |
on: | |
workflow_dispatch: # Allows manual trigger | |
push: | |
branches: [ "main" ] | |
paths: | |
- '.github/workflows/**' | |
- 'build/container/**' | |
- 'config/**' | |
- 'pkg/**' | |
- 'cmd/**' | |
- 'python/**' | |
- 'Makefile' | |
- 'go.mod' | |
- 'go.sum' | |
pull_request: | |
branches: [ "main" ] | |
paths: | |
- '.github/workflows/**' | |
- 'build/container/**' | |
- 'config/**' | |
- 'pkg/**' | |
- 'cmd/**' | |
- 'python/**' | |
- 'Makefile' | |
- 'go.mod' | |
- 'go.sum' | |
jobs: | |
build-images: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
image: [controller-manager, gateway-plugins, runtime, metadata-service] | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Build ${{ matrix.image }} | |
run: | | |
GIT_COMMIT_HASH=${{ github.sha }} make docker-build-${{ matrix.image }} | |
- name: Save image | |
run: | | |
docker save aibrix/${{ matrix.image }}:${{ github.sha }} > ${{ matrix.image }}.tar | |
- name: Upload image artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.image }}-image | |
path: ${{ matrix.image }}.tar | |
retention-days: 1 | |
installation-test: | |
needs: [build-images] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Download all image artifacts | |
uses: actions/download-artifact@v4 | |
- name: Free disk space | |
run: |- | |
# https://github.com/actions/runner-images/issues/2840#issuecomment-2272410832 | |
# Remove software and language runtimes we're not using | |
sudo rm -rf \ | |
/opt/google/chrome \ | |
/opt/microsoft/msedge \ | |
/opt/microsoft/powershell \ | |
/opt/pipx \ | |
/usr/lib/mono \ | |
/usr/local/julia* \ | |
/usr/local/lib/android \ | |
/usr/local/lib/node_modules \ | |
/usr/local/share/chromium \ | |
/usr/local/share/powershell \ | |
/usr/share/dotnet \ | |
/usr/share/swift | |
df -h / | |
- name: Install kind | |
run: | | |
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.24.0/kind-linux-amd64 | |
chmod +x ./kind | |
mv ./kind /usr/local/bin/kind | |
kind version | |
- name: Install kustomize | |
run: | | |
curl -L https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v5.4.3/kustomize_v5.4.3_$(go env GOOS)_$(go env GOARCH).tar.gz | tar -xz -C /usr/local/bin/ | |
kustomize version | |
- name: Set up testing environment | |
run: | | |
# Set up the cluster with kind or other Kubernetes environment needed | |
kind create cluster --name installation-test --config=./hack/ci/kind-config.yaml | |
kubectl cluster-info --context kind-installation-test | |
- name: Load image into Kind | |
run: | | |
for image in controller-manager gateway-plugins runtime metadata-service; do | |
docker load < ${image}-image/${image}.tar | |
# Retag the image | |
# This is for application integration, since it is not that easy to override all commits in manifest | |
# It is better to use nightly to represent the latest image | |
docker tag aibrix/${image}:${{ github.sha }} aibrix/${image}:nightly | |
done | |
kind load docker-image aibrix/controller-manager:${{ github.sha }} aibrix/gateway-plugins:${{ github.sha }} aibrix/metadata-service:${{ github.sha }} aibrix/runtime:${{ github.sha }} --name installation-test | |
kind load docker-image aibrix/controller-manager:nightly aibrix/gateway-plugins:nightly aibrix/metadata-service:nightly aibrix/runtime:nightly --name installation-test | |
- name: Deploy controller with the built image | |
run: | | |
kubectl create -k config/dependency | |
cd config/default | |
kustomize edit set image controller=aibrix/controller-manager:${{ github.sha }} | |
kustomize edit set image gateway-plugins=aibrix/gateway-plugins:${{ github.sha }} | |
kustomize edit set image metadata-service=aibrix/metadata-service:${{ github.sha }} | |
cd ${{ github.workspace }} | |
kubectl create -k config/default | |
- name: Deploy Workload | |
run: | | |
cd development/app | |
docker build -t aibrix/vllm-mock:nightly -f Dockerfile . | |
kind load docker-image aibrix/vllm-mock:nightly --name installation-test | |
kubectl create -k config/mock | |
- name: Check pod status | |
run: | | |
sleep 30s | |
kubectl get pods --all-namespaces | |
kubectl wait pod --all --for=condition=ready --all-namespaces --timeout=300s | |
kubectl port-forward svc/llama2-7b 8000:8000 & | |
kubectl -n envoy-gateway-system port-forward service/envoy-aibrix-system-aibrix-eg-903790dc 8888:80 & | |
- name: Run e2e tests | |
run: | | |
kind get kubeconfig --name installation-test > /tmp/admin.conf | |
export KUBECONFIG=/tmp/admin.conf | |
make test-e2e | |
- name: Clean up | |
run: kind delete cluster --name installation-test |