-
Notifications
You must be signed in to change notification settings - Fork 150
154 lines (133 loc) · 5.29 KB
/
installation-tests.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
name: Installation Tests
on:
workflow_dispatch: # Allows manual trigger
push:
branches: [ "main" ]
paths:
- '.github/workflows/**'
- 'build/container/**'
- 'config/**'
- 'pkg/**'
- 'test/**'
- 'cmd/**'
- 'python/**'
- 'Makefile'
- 'go.mod'
- 'go.sum'
pull_request:
branches: [ "main" ]
paths:
- '.github/workflows/**'
- 'build/container/**'
- 'config/**'
- 'pkg/**'
- 'test/**'
- '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