-
Notifications
You must be signed in to change notification settings - Fork 32
135 lines (117 loc) · 4.13 KB
/
test-kubernetes.yaml
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
name: kubernetes-test
on:
push:
branches:
- main
paths-ignore:
- '**.md'
- 'website/**'
pull_request:
branches:
- main
paths-ignore:
- '**.md'
- 'website/**'
permissions: read-all
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 240
steps:
- uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1
with:
tool-cache: true
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- name: Harden Runner
uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
with:
egress-policy: block
allowed-endpoints: >
auth.docker.io:443
huggingface.co:443
*.huggingface.co:443
*.hf.co:443
cdn.dl.k8s.io:443
dl.k8s.io:443
download.docker.com:443
gcr.io:443
github.com:443
*.githubusercontent.com:443
production.cloudflare.docker.com:443
proxy.golang.org:443
registry-1.docker.io:443
storage.googleapis.com:443
*.ubuntu.com:80
developer.download.nvidia.com:443
get.helm.sh:443
*.blob.core.windows.net:443
*.azureedge.net:443
ghcr.io:443
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
# need containerd image store for testing local images
- uses: crazy-max/ghaction-setup-docker@01efb57f882e3b1a22e7cf3501dbe51287b0ecb4 # v4.0.0
with:
daemon-config: |
{
"debug": true,
"features": {
"containerd-snapshotter": true
}
}
- uses: crazy-max/ghaction-github-runtime@b3a9207c0e1ef41f4cf215303c976869d0c2c1c4 # v3.0.0
- name: build aikit
run: |
docker buildx build . -t aikit:test \
--load --provenance=false --progress plain \
--cache-from=type=gha,scope=aikit-amd64 \
--cache-to=type=gha,scope=aikit-amd64,mode=max
- name: build test model
run: |
docker buildx build . -t testmodel:test \
-f test/aikitfile-llama.yaml \
--load --provenance=false --progress plain \
--cache-from=type=gha,scope=testmodel-amd64 \
--cache-to=type=gha,scope=testmodel-amd64,mode=max
- name: list images
run: docker images
- name: install e2e dependencies
run: make test-e2e-dependencies
- name: create kind cluster
run: kind create cluster --wait 5m
- name: load test model image into kind cluster
run: kind load docker-image testmodel:test
- name: deploy test model
run: |
kubectl create deployment test-model-deployment --image=testmodel:test --replicas 1
kubectl rollout status deployment test-model-deployment
kubectl expose deployment test-model-deployment --port=8080 --target-port=8080 --name=test-model-service
kubectl port-forward service/test-model-service 8080:8080 &
- name: run test
run: |
result=$(curl --fail --retry 10 --retry-all-errors http://127.0.0.1:8080/v1/chat/completions -H "Content-Type: application/json" -d '{
"model": "llama-3.2-1b-instruct",
"messages": [{"role": "user", "content": "explain kubernetes in a sentence"}]
}')
echo $result
choices=$(echo "$result" | jq '.choices')
if [ -z "$choices" ]; then
exit 1
fi
- name: save logs
if: always()
run: |
echo "KIND_LOGS_PATH=$(kind export logs)" >> $GITHUB_ENV
- name: publish logs
if: always()
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
with:
name: kind-logs
path: $KIND_LOGS_PATH